Tommy

v1.0.0

The Tommy API is organized around the REST methodology, and it uses resource-oriented URLs, and common HTTP response codes to indicate API errors. All requests are authenticated using an api-key which can be obtained from your developer dashboard.

Contact: support@mytommy.com

Base URL
https://api.mytommy.com/v1
Version
1.0.0

Authentication

basicAuthhttp

HTTP Basic Authentication. Works over `HTTP` and `HTTPS`

Scheme: basic

api_keyapiKey

Provide your API key via the api_key header.

API Key: api_key in header

Account

Manage accounts and search across users and teams.

GET/accounts/search

Search users

Get all users and teams who's mobile or username match the given search term.

termstringrequiredquery

Search term used to filter accounts

200OKArray<any>

Account response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/accounts/search'
const response = await fetch('https://api.mytommy.com/v1/accounts/search', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/accounts/search')
data = response.json()
200OK
[
  {
    "id": 111,
    "type": "string",
    "user_id": 0,
    "team_id": 0,
    "name": "Acme Corp",
    "contact_name": "string",
    "kind": "string",
    "icon_url": "string",
    "mobile": "string",
    "notification_count": 0
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/me/current_account

Get the current account

Get the current user account.

200OKany

Account response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/me/current_account'
const response = await fetch('https://api.mytommy.com/v1/me/current_account', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/me/current_account')
data = response.json()
200OK
{
  "id": 111,
  "type": "string",
  "user_id": 0,
  "team_id": 0,
  "name": "Acme Corp",
  "contact_name": "string",
  "kind": "string",
  "icon_url": "string",
  "mobile": "string",
  "notification_count": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/me/current_account

Update the current account

Update the current user account. \ The current account may be a User, Team, or TeamMember type.

current_account_idinteger (int64)requiredquery

The polymorphic Account ID

current_account_typestringrequiredquery

The polymorphic Account Type (User, Team, TeamMember)

200OKany

Account response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/me/current_account'
const response = await fetch('https://api.mytommy.com/v1/me/current_account', {
  method: 'PUT',
});

const data = await response.json();
import requests

response = requests.put('https://api.mytommy.com/v1/me/current_account')
data = response.json()
200OK
{
  "id": 111,
  "type": "string",
  "user_id": 0,
  "team_id": 0,
  "name": "Acme Corp",
  "contact_name": "string",
  "kind": "string",
  "icon_url": "string",
  "mobile": "string",
  "notification_count": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

User

Endpoints for the authenticated user profile and settings.

GET/me

Get the current user object

Get the current user object.

200OKobject

User response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/me'
const response = await fetch('https://api.mytommy.com/v1/me', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/me')
data = response.json()
200OK
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/me

Update the current user object

Update the current user object.

application/jsonrequired

UserInput request

A representation of a User

idinteger (int64)

Unique user identifier

statusstring

Current account status

first_namestring

Given name

last_namestring

Family name

slugstring

URL-safe identifier

emailstring

Email address

mobilestring

Mobile phone number in E.164 format

dobstring

Date of birth (YYYY-MM-DD)

localestring

IETF language tag

icon_urlstring

Avatar image URL

photostring (binary)
passwordstring
200OKobject

User response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/me' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "photo": "<binary>",
  "password": "string"
}'
const response = await fetch('https://api.mytommy.com/v1/me', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "photo": "<binary>",
  "password": "string"
}),
});

const data = await response.json();
import requests

payload = {
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "photo": "<binary>",
  "password": "string"
}

response = requests.put('https://api.mytommy.com/v1/me', json=payload)
data = response.json()
Request Body
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "photo": "<binary>",
  "password": "string"
}
200OK
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/me/accounts

Get all accounts belonging to the current user

Get all accounts belonging to the current user.

200OKArray<any>

Account response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/me/accounts'
const response = await fetch('https://api.mytommy.com/v1/me/accounts', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/me/accounts')
data = response.json()
200OK
[
  {
    "id": 111,
    "type": "string",
    "user_id": 0,
    "team_id": 0,
    "name": "Acme Corp",
    "contact_name": "string",
    "kind": "string",
    "icon_url": "string",
    "mobile": "string",
    "notification_count": 0
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/me/wls

Get work-life score chart data for the current user

Get work-life score chart data for the current user.

200OKobject

WLS chart data

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/me/wls'
const response = await fetch('https://api.mytommy.com/v1/me/wls', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/me/wls')
data = response.json()
200OK
{
  "labels": [
    "string"
  ],
  "values": [
    0
  ],
  "team_values": {},
  "feedback": [
    "string"
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/me/current_account

Get the current account

Get the current user account.

200OKany

Account response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/me/current_account'
const response = await fetch('https://api.mytommy.com/v1/me/current_account', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/me/current_account')
data = response.json()
200OK
{
  "id": 111,
  "type": "string",
  "user_id": 0,
  "team_id": 0,
  "name": "Acme Corp",
  "contact_name": "string",
  "kind": "string",
  "icon_url": "string",
  "mobile": "string",
  "notification_count": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/me/current_account

Update the current account

Update the current user account. \ The current account may be a User, Team, or TeamMember type.

current_account_idinteger (int64)requiredquery

The polymorphic Account ID

current_account_typestringrequiredquery

The polymorphic Account Type (User, Team, TeamMember)

200OKany

Account response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/me/current_account'
const response = await fetch('https://api.mytommy.com/v1/me/current_account', {
  method: 'PUT',
});

const data = await response.json();
import requests

response = requests.put('https://api.mytommy.com/v1/me/current_account')
data = response.json()
200OK
{
  "id": 111,
  "type": "string",
  "user_id": 0,
  "team_id": 0,
  "name": "Acme Corp",
  "contact_name": "string",
  "kind": "string",
  "icon_url": "string",
  "mobile": "string",
  "notification_count": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/me/settings

Get user settings

Get user settings objects.

200OKobject

Setting response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/me/settings'
const response = await fetch('https://api.mytommy.com/v1/me/settings', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/me/settings')
data = response.json()
200OK
{}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/me/settings/{name}

Get user setting value

Get a user setting value.

namestringrequiredpath

Setting name

200OKobject

Setting response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/me/settings/{name}'
const response = await fetch('https://api.mytommy.com/v1/me/settings/{name}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/me/settings/{name}')
data = response.json()
200OK
{}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/me/settings/{name}

Update user setting value

Update a user setting value.

application/jsonrequired

SettingData request

dataobjectrequired

Setting data as JSON, boolean, integer or string.

contextstring
_formatstring
namestringrequiredpath

Setting name

200OKobject

Setting response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/me/settings/{name}' \
  -H 'Content-Type: application/json' \
  -d '{
  "data": {},
  "context": "string",
  "_format": "string"
}'
const response = await fetch('https://api.mytommy.com/v1/me/settings/{name}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "data": {},
  "context": "string",
  "_format": "string"
}),
});

const data = await response.json();
import requests

payload = {
  "data": {},
  "context": "string",
  "_format": "string"
}

response = requests.put('https://api.mytommy.com/v1/me/settings/{name}', json=payload)
data = response.json()
Request Body
{
  "data": {},
  "context": "string",
  "_format": "string"
}
200OK
{}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/me/settings/{name}

Delete user setting value

Delete a user setting value.

namestringrequiredpath

Setting name

204No Content

No content

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/me/settings/{name}'
const response = await fetch('https://api.mytommy.com/v1/me/settings/{name}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/me/settings/{name}')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/users

Create a User on the system

Create a User on the system.

application/jsonrequired

UserInput request

A representation of a User

idinteger (int64)

Unique user identifier

statusstring

Current account status

first_namestring

Given name

last_namestring

Family name

slugstring

URL-safe identifier

emailstring

Email address

mobilestring

Mobile phone number in E.164 format

dobstring

Date of birth (YYYY-MM-DD)

localestring

IETF language tag

icon_urlstring

Avatar image URL

photostring (binary)
passwordstring
200OKobject

User response

201Createdobject

User response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

422Unprocessable Entityany

Validation error

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/users' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "photo": "<binary>",
  "password": "string"
}'
const response = await fetch('https://api.mytommy.com/v1/users', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "photo": "<binary>",
  "password": "string"
}),
});

const data = await response.json();
import requests

payload = {
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "photo": "<binary>",
  "password": "string"
}

response = requests.post('https://api.mytommy.com/v1/users', json=payload)
data = response.json()
Request Body
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "photo": "<binary>",
  "password": "string"
}
200OK
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png"
}
201Created
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
422Unprocessable Entity
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/users/{id}/send_verification_sms

Send a verification SMS

Send an account verification SMS to the user's mobile number.

idinteger (int64)requiredpath

User id

200OK

Success response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/users/{id}/send_verification_sms'
const response = await fetch('https://api.mytommy.com/v1/users/{id}/send_verification_sms', {
  method: 'POST',
});

const data = await response.json();
import requests

response = requests.post('https://api.mytommy.com/v1/users/{id}/send_verification_sms')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/users/{id}/send_verification_email

Send a verification email

Send an account verification email to the user's email address.

idinteger (int64)requiredpath

User id

200OK

Success response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/users/{id}/send_verification_email'
const response = await fetch('https://api.mytommy.com/v1/users/{id}/send_verification_email', {
  method: 'POST',
});

const data = await response.json();
import requests

response = requests.post('https://api.mytommy.com/v1/users/{id}/send_verification_email')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/users/reset_password

Reset a user password

Reset a user password for the account associated with the provided email address or mobile number.

loginstringrequiredquery

The user email address or mobile number

200OK

Success response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/users/reset_password'
const response = await fetch('https://api.mytommy.com/v1/users/reset_password', {
  method: 'POST',
});

const data = await response.json();
import requests

response = requests.post('https://api.mytommy.com/v1/users/reset_password')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/sessions

Login

This method handles users who are \ authenticating with an email or phone, and password combination.

application/jsonrequired

UserCredentials request

User login credentials

loginstringrequired
passwordstringrequired
200OKobject

User response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/sessions' \
  -H 'Content-Type: application/json' \
  -d '{
  "login": "string",
  "password": "string"
}'
const response = await fetch('https://api.mytommy.com/v1/sessions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "login": "string",
  "password": "string"
}),
});

const data = await response.json();
import requests

payload = {
  "login": "string",
  "password": "string"
}

response = requests.post('https://api.mytommy.com/v1/sessions', json=payload)
data = response.json()
Request Body
{
  "login": "string",
  "password": "string"
}
200OK
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/sessions

Logout

This method destroys the current user session.

200OK

Success response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/sessions'
const response = await fetch('https://api.mytommy.com/v1/sessions', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/sessions')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/me/qr

Get the current account QR code image

Get the current account QR code image.

200OK

Image response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

404Not Foundany

Not Found

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/me/qr'
const response = await fetch('https://api.mytommy.com/v1/me/qr', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/me/qr')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
404Not Found
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/users/{id}

Get a user

Get a user object by slug.

idstringrequiredpath

User slug or ID

200OKobject

User response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/users/{id}'
const response = await fetch('https://api.mytommy.com/v1/users/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/users/{id}')
data = response.json()
200OK
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/users/search

Search users

Get all users who's mobile number matches the given search term.

termstringrequiredquery

Search term used to filter users

200OKArray<object>

User response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/users/search'
const response = await fetch('https://api.mytommy.com/v1/users/search', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/users/search')
data = response.json()
200OK
[
  {
    "id": 12345,
    "status": "active",
    "first_name": "Alex",
    "last_name": "Johnson",
    "slug": "alex-johnson",
    "email": "alex@example.com",
    "mobile": "+15551234567",
    "dob": "1990-01-01",
    "locale": "en-US",
    "icon_url": "https://cdn.example.com/avatars/12345.png"
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/users/verify

Verify a user account

Verify a user account using the given pin code.

pinstringrequiredquery

Verification PIN code

user_idinteger (int64)query

Optional user identifier to scope the verification lookup

emailstringquery

Optional email used for verification lookup

mobilestringquery

Optional mobile number used for verification lookup

200OKobject

User response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/users/verify'
const response = await fetch('https://api.mytommy.com/v1/users/verify', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/users/verify')
data = response.json()
200OK
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Workforce

Scheduling, shifts, attendance, and workforce management.

GET/me/wls

Get work-life score chart data for the current user

Get work-life score chart data for the current user.

200OKobject

WLS chart data

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/me/wls'
const response = await fetch('https://api.mytommy.com/v1/me/wls', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/me/wls')
data = response.json()
200OK
{
  "labels": [
    "string"
  ],
  "values": [
    0
  ],
  "team_values": {},
  "feedback": [
    "string"
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce

Get account

Get account settings.

200OKobject & any

Workforce response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce'
const response = await fetch('https://api.mytommy.com/v1/workforce', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce')
data = response.json()
200OK
{
  "name": "Example Name",
  "week_start": "monday",
  "timeclock_require_gps": true,
  "timeclock_require_photo": true,
  "timeclock_enable_mobile": true,
  "timeclock_enable_web": true,
  "timeclock_enable_kiosk": true,
  "timesheets_rounding_method": "none",
  "timesheets_rounding_minutes": 0,
  "timesheets_enable_break_rounding": true,
  "shift_upcoming_notification_minutes": 0,
  "shift_forgot_clockin_minutes": 0,
  "shift_forgot_clockout_minutes": 0,
  "shift_notifications_enabled": true,
  "event_notifications_enabled": true,
  "data": {},
  "id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/workforce

Update account

Update account settings.

application/jsonrequired

WorkforceInput request

Object for updating a Workforce account

namestring

Display name

week_startstringmondayturesdaywednesday
timeclock_require_gpsboolean
timeclock_require_photoboolean
timeclock_enable_mobileboolean
timeclock_enable_webboolean
timeclock_enable_kioskboolean
timesheets_rounding_methodstringnoneupdownnearest
timesheets_rounding_minutesinteger
timesheets_enable_break_roundingboolean
shift_upcoming_notification_minutesinteger

Minutes before shift start to send notification

shift_forgot_clockin_minutesinteger

Minutes after shift start to send forgot clockin notification

shift_forgot_clockout_minutesinteger

Minutes after shift end to send forgot clockout notification

shift_notifications_enabledboolean

Enable/disable shift notifications

event_notifications_enabledboolean

Enable/disable event notifications

dataobject

Arbitrary data storage

200OKobject & any

Workforce response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/workforce' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "Example Name",
  "week_start": "monday",
  "timeclock_require_gps": true,
  "timeclock_require_photo": true,
  "timeclock_enable_mobile": true,
  "timeclock_enable_web": true,
  "timeclock_enable_kiosk": true,
  "timesheets_rounding_method": "none",
  "timesheets_rounding_minutes": 0,
  "timesheets_enable_break_rounding": true,
  "shift_upcoming_notification_minutes": 0,
  "shift_forgot_clockin_minutes": 0,
  "shift_forgot_clockout_minutes": 0,
  "shift_notifications_enabled": true,
  "event_notifications_enabled": true,
  "data": {}
}'
const response = await fetch('https://api.mytommy.com/v1/workforce', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "name": "Example Name",
  "week_start": "monday",
  "timeclock_require_gps": true,
  "timeclock_require_photo": true,
  "timeclock_enable_mobile": true,
  "timeclock_enable_web": true,
  "timeclock_enable_kiosk": true,
  "timesheets_rounding_method": "none",
  "timesheets_rounding_minutes": 0,
  "timesheets_enable_break_rounding": true,
  "shift_upcoming_notification_minutes": 0,
  "shift_forgot_clockin_minutes": 0,
  "shift_forgot_clockout_minutes": 0,
  "shift_notifications_enabled": true,
  "event_notifications_enabled": true,
  "data": {}
}),
});

const data = await response.json();
import requests

payload = {
  "name": "Example Name",
  "week_start": "monday",
  "timeclock_require_gps": True,
  "timeclock_require_photo": True,
  "timeclock_enable_mobile": True,
  "timeclock_enable_web": True,
  "timeclock_enable_kiosk": True,
  "timesheets_rounding_method": "none",
  "timesheets_rounding_minutes": 0,
  "timesheets_enable_break_rounding": True,
  "shift_upcoming_notification_minutes": 0,
  "shift_forgot_clockin_minutes": 0,
  "shift_forgot_clockout_minutes": 0,
  "shift_notifications_enabled": True,
  "event_notifications_enabled": True,
  "data": {}
}

response = requests.put('https://api.mytommy.com/v1/workforce', json=payload)
data = response.json()
Request Body
{
  "name": "Example Name",
  "week_start": "monday",
  "timeclock_require_gps": true,
  "timeclock_require_photo": true,
  "timeclock_enable_mobile": true,
  "timeclock_enable_web": true,
  "timeclock_enable_kiosk": true,
  "timesheets_rounding_method": "none",
  "timesheets_rounding_minutes": 0,
  "timesheets_enable_break_rounding": true,
  "shift_upcoming_notification_minutes": 0,
  "shift_forgot_clockin_minutes": 0,
  "shift_forgot_clockout_minutes": 0,
  "shift_notifications_enabled": true,
  "event_notifications_enabled": true,
  "data": {}
}
200OK
{
  "name": "Example Name",
  "week_start": "monday",
  "timeclock_require_gps": true,
  "timeclock_require_photo": true,
  "timeclock_enable_mobile": true,
  "timeclock_enable_web": true,
  "timeclock_enable_kiosk": true,
  "timesheets_rounding_method": "none",
  "timesheets_rounding_minutes": 0,
  "timesheets_enable_break_rounding": true,
  "shift_upcoming_notification_minutes": 0,
  "shift_forgot_clockin_minutes": 0,
  "shift_forgot_clockout_minutes": 0,
  "shift_notifications_enabled": true,
  "event_notifications_enabled": true,
  "data": {},
  "id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/manager/employees

Get employees as manager

Get employees as manager.

200OKArray<object & any>

WorkforceEmployee response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/manager/employees'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/employees', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/manager/employees')
data = response.json()
200OK
[
  {
    "user_id": 0,
    "team_id": 0,
    "favorite": true,
    "mute": true,
    "photo": "<binary>",
    "roles": [
      "string"
    ],
    "locations": [
      "string"
    ],
    "tags": [
      "string"
    ],
    "id": 0,
    "first_name": "string",
    "last_name": "string",
    "email": "string",
    "mobile": "string",
    "manager": true,
    "member": true,
    "status": "string",
    "icon_url": "string",
    "addon_links": [
      {
        "title": "Example Title",
        "package": "string",
        "url": "string",
        "icon_url": "string"
      }
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/manager/employees/{user_id}

Get an employee as manager

Get an employee as manager by ID.

user_idstringrequiredpath
200OKobject & any

WorkforceEmployee response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/manager/employees/{user_id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/employees/{user_id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/manager/employees/{user_id}')
data = response.json()
200OK
{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": true,
  "member": true,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/workforce/manager/employees/{user_id}

Update an employee

Update an employee by ID.

application/jsonrequired

WorkforceEmployeeInput request

Object for updating an employee

Object for creating or updating a Team Member

user_idinteger (int64)required
team_idinteger (int64)required
favoriteboolean
muteboolean
photostring (binary)
rolesArray<string>

Array of roles assigned to the Team Member

locationsArray<string>

Array of locations assigned to the Team Member

tagsArray<string>

Array of tags assigned to the Team Member

has_vehicleboolean
compliance_checkstring
notesstring
user_idstringrequiredpath
200OKobject & any

WorkforceEmployee response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

422Unprocessable Entityany

Validation error

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/workforce/manager/employees/{user_id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "has_vehicle": true,
  "compliance_check": "string",
  "notes": "string"
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/employees/{user_id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "has_vehicle": true,
  "compliance_check": "string",
  "notes": "string"
}),
});

const data = await response.json();
import requests

payload = {
  "user_id": 0,
  "team_id": 0,
  "favorite": True,
  "mute": True,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "has_vehicle": True,
  "compliance_check": "string",
  "notes": "string"
}

response = requests.put('https://api.mytommy.com/v1/workforce/manager/employees/{user_id}', json=payload)
data = response.json()
Request Body
{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "has_vehicle": true,
  "compliance_check": "string",
  "notes": "string"
}
200OK
{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": true,
  "member": true,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
422Unprocessable Entity
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/availabilities

Get availabilities

Get availabilities belonging to the current account.

200OKArray<any & any>

WorkforceAvailability response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/availabilities'
const response = await fetch('https://api.mytommy.com/v1/workforce/availabilities', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/availabilities')
data = response.json()
200OK
[
  {
    "am": 0,
    "pm": 0,
    "nd": 0,
    "am_locked": true,
    "pm_locked": true,
    "nd_locked": true,
    "date": "2024-01-15",
    "id": 0,
    "user_id": 0,
    "team_id": 0,
    "employee_id": 0
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/availabilities/{date}

Get availability for date

Get a availability for date.

datestring (date)requiredpath

Availability date

200OKany & any

WorkforceAvailability response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/availabilities/{date}'
const response = await fetch('https://api.mytommy.com/v1/workforce/availabilities/{date}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/availabilities/{date}')
data = response.json()
200OK
{
  "am": 0,
  "pm": 0,
  "nd": 0,
  "am_locked": true,
  "pm_locked": true,
  "nd_locked": true,
  "date": "2024-01-15",
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "employee_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/workforce/availabilities/{date}

Update availability for date

Update availability for date.

application/jsonrequired

WorkforceAvailabilityInput request

Object for updating a availability

aminteger
pminteger
ndinteger
am_lockedboolean
pm_lockedboolean
nd_lockedboolean
datestring (date)
datestring (date)requiredpath

Availability date

200OKany & any

WorkforceAvailability response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/workforce/availabilities/{date}' \
  -H 'Content-Type: application/json' \
  -d '{
  "am": 0,
  "pm": 0,
  "nd": 0,
  "am_locked": true,
  "pm_locked": true,
  "nd_locked": true,
  "date": "2024-01-15"
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/availabilities/{date}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "am": 0,
  "pm": 0,
  "nd": 0,
  "am_locked": true,
  "pm_locked": true,
  "nd_locked": true,
  "date": "2024-01-15"
}),
});

const data = await response.json();
import requests

payload = {
  "am": 0,
  "pm": 0,
  "nd": 0,
  "am_locked": True,
  "pm_locked": True,
  "nd_locked": True,
  "date": "2024-01-15"
}

response = requests.put('https://api.mytommy.com/v1/workforce/availabilities/{date}', json=payload)
data = response.json()
Request Body
{
  "am": 0,
  "pm": 0,
  "nd": 0,
  "am_locked": true,
  "pm_locked": true,
  "nd_locked": true,
  "date": "2024-01-15"
}
200OK
{
  "am": 0,
  "pm": 0,
  "nd": 0,
  "am_locked": true,
  "pm_locked": true,
  "nd_locked": true,
  "date": "2024-01-15",
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "employee_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/workforce/manager/shift_questions

Create a shift question

Create a shift question.

application/jsonrequired

WorkforceShiftQuestion request

Object representing a shift question

team_idinteger (int64)
textstring
offset_minutesinteger (int64)
whenstringalwaysstart_shiftend_shift
alwaysboolean
enabledboolean
tag_idsArray<integer>
201Createdobject

WorkforceShiftQuestion response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/workforce/manager/shift_questions' \
  -H 'Content-Type: application/json' \
  -d '{
  "team_id": 0,
  "text": "string",
  "offset_minutes": 0,
  "when": "always",
  "always": true,
  "enabled": true,
  "tag_ids": [
    0
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shift_questions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "team_id": 0,
  "text": "string",
  "offset_minutes": 0,
  "when": "always",
  "always": true,
  "enabled": true,
  "tag_ids": [
    0
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "team_id": 0,
  "text": "string",
  "offset_minutes": 0,
  "when": "always",
  "always": True,
  "enabled": True,
  "tag_ids": [
    0
  ]
}

response = requests.post('https://api.mytommy.com/v1/workforce/manager/shift_questions', json=payload)
data = response.json()
Request Body
{
  "team_id": 0,
  "text": "string",
  "offset_minutes": 0,
  "when": "always",
  "always": true,
  "enabled": true,
  "tag_ids": [
    0
  ]
}
201Created
{
  "team_id": 0,
  "text": "string",
  "offset_minutes": 0,
  "when": "always",
  "always": true,
  "enabled": true,
  "tag_ids": [
    0
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/shifts

Get shifts

Get shifts belonging to the current account.

200OKArray<object>

WorkforceShift response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/shifts'
const response = await fetch('https://api.mytommy.com/v1/workforce/shifts', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/shifts')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "team_id": 0,
    "assignee_id": 0,
    "event_id": 0,
    "shift_on_same_day": true,
    "shift_requested": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/shifts/active

Get active shifts

Get active shifts belonging to the current account.

200OKArray<object>

WorkforceShift response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/shifts/active'
const response = await fetch('https://api.mytommy.com/v1/workforce/shifts/active', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/shifts/active')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "team_id": 0,
    "assignee_id": 0,
    "event_id": 0,
    "shift_on_same_day": true,
    "shift_requested": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/shifts/{id}

Get a shift

Get a shift by ID.

idinteger (int64)requiredpath

WorkforceShift id

200OKobject

WorkforceShift response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/shifts/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/shifts/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/shifts/{id}')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "assignee_id": 0,
  "event_id": 0,
  "shift_on_same_day": true,
  "shift_requested": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/shifts/{id}/questions

Get shift questions

Get shift questions by shift ID.

idinteger (int64)requiredpath

WorkforceShift id

200OKArray<object>

WorkforceShiftQuestion response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/shifts/{id}/questions'
const response = await fetch('https://api.mytommy.com/v1/workforce/shifts/{id}/questions', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/shifts/{id}/questions')
data = response.json()
200OK
[
  {
    "team_id": 0,
    "text": "string",
    "offset_minutes": 0,
    "when": "always",
    "always": true,
    "enabled": true,
    "tag_ids": [
      0
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/workforce/shifts/{id}/answers

Create a shift answer

Create a shift answer.

application/jsonrequired

WorkforceShiftAnswer request

Object representing a shift answer

team_idinteger (int64)
shift_idinteger (int64)
shift_question_idinteger (int64)
attendance_idinteger (int64)
user_idinteger (int64)
textstring
idstringrequiredpath
201Createdobject

WorkforceShiftAnswer response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/workforce/shifts/{id}/answers' \
  -H 'Content-Type: application/json' \
  -d '{
  "team_id": 0,
  "shift_id": 0,
  "shift_question_id": 0,
  "attendance_id": 0,
  "user_id": 0,
  "text": "string"
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/shifts/{id}/answers', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "team_id": 0,
  "shift_id": 0,
  "shift_question_id": 0,
  "attendance_id": 0,
  "user_id": 0,
  "text": "string"
}),
});

const data = await response.json();
import requests

payload = {
  "team_id": 0,
  "shift_id": 0,
  "shift_question_id": 0,
  "attendance_id": 0,
  "user_id": 0,
  "text": "string"
}

response = requests.post('https://api.mytommy.com/v1/workforce/shifts/{id}/answers', json=payload)
data = response.json()
Request Body
{
  "team_id": 0,
  "shift_id": 0,
  "shift_question_id": 0,
  "attendance_id": 0,
  "user_id": 0,
  "text": "string"
}
201Created
{
  "team_id": 0,
  "shift_id": 0,
  "shift_question_id": 0,
  "attendance_id": 0,
  "user_id": 0,
  "text": "string"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/manager/shifts

Get shifts as manager

Get shifts as manager.

200OKArray<object>

WorkforceShift response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/manager/shifts'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shifts', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/manager/shifts')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "team_id": 0,
    "assignee_id": 0,
    "event_id": 0,
    "shift_on_same_day": true,
    "shift_requested": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/workforce/manager/shifts

Create a shift

Create a shift.

application/jsonrequired

WorkforceShiftInput request

Object for updating a shift

titlestring

Human-friendly title

start_atstring (date-time)
end_atstring (date-time)
statusstringopenassignedpublished

Current status

location_idinteger (int64)
location_namestring
rolestring
departmentstring
detailsstring
dataobject
201Createdobject

WorkforceShift response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/workforce/manager/shifts' \
  -H 'Content-Type: application/json' \
  -d '{
  "title": "Example Title",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "status": "active",
  "location_id": 0,
  "location_name": "string",
  "role": "string",
  "department": "string",
  "details": "string",
  "data": {}
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shifts', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "title": "Example Title",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "status": "active",
  "location_id": 0,
  "location_name": "string",
  "role": "string",
  "department": "string",
  "details": "string",
  "data": {}
}),
});

const data = await response.json();
import requests

payload = {
  "title": "Example Title",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "status": "active",
  "location_id": 0,
  "location_name": "string",
  "role": "string",
  "department": "string",
  "details": "string",
  "data": {}
}

response = requests.post('https://api.mytommy.com/v1/workforce/manager/shifts', json=payload)
data = response.json()
Request Body
{
  "title": "Example Title",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "status": "active",
  "location_id": 0,
  "location_name": "string",
  "role": "string",
  "department": "string",
  "details": "string",
  "data": {}
}
201Created
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "assignee_id": 0,
  "event_id": 0,
  "shift_on_same_day": true,
  "shift_requested": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/manager/shifts/{id}

Get a shift as manager

Get a shift as manager by ID.

idinteger (int64)requiredpath

WorkforceShift id

200OKobject

WorkforceShift response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/manager/shifts/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shifts/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/manager/shifts/{id}')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "assignee_id": 0,
  "event_id": 0,
  "shift_on_same_day": true,
  "shift_requested": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/workforce/manager/shifts/{id}

Update a shift as manager

Update a shift as a manager by ID.

application/jsonrequired

WorkforceShiftInput request

Object for updating a shift

titlestring

Human-friendly title

start_atstring (date-time)
end_atstring (date-time)
statusstringopenassignedpublished

Current status

location_idinteger (int64)
location_namestring
rolestring
departmentstring
detailsstring
dataobject
idinteger (int64)requiredpath

WorkforceShift id

200OKobject

WorkforceShift response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

422Unprocessable Entityany

Validation error

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/workforce/manager/shifts/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "title": "Example Title",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "status": "active",
  "location_id": 0,
  "location_name": "string",
  "role": "string",
  "department": "string",
  "details": "string",
  "data": {}
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shifts/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "title": "Example Title",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "status": "active",
  "location_id": 0,
  "location_name": "string",
  "role": "string",
  "department": "string",
  "details": "string",
  "data": {}
}),
});

const data = await response.json();
import requests

payload = {
  "title": "Example Title",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "status": "active",
  "location_id": 0,
  "location_name": "string",
  "role": "string",
  "department": "string",
  "details": "string",
  "data": {}
}

response = requests.put('https://api.mytommy.com/v1/workforce/manager/shifts/{id}', json=payload)
data = response.json()
Request Body
{
  "title": "Example Title",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "status": "active",
  "location_id": 0,
  "location_name": "string",
  "role": "string",
  "department": "string",
  "details": "string",
  "data": {}
}
200OK
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "assignee_id": 0,
  "event_id": 0,
  "shift_on_same_day": true,
  "shift_requested": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
422Unprocessable Entity
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/workforce/manager/shifts/{id}

Delete a shift as manager

Delete a shift as a manager by ID.

idinteger (int64)requiredpath

WorkforceShift id

200OKobject

WorkforceShift response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/workforce/manager/shifts/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shifts/{id}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/workforce/manager/shifts/{id}')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "assignee_id": 0,
  "event_id": 0,
  "shift_on_same_day": true,
  "shift_requested": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/workforce/shift_requests

Create a shift request

Create a shift request.

201Createdobject & any

WorkforceShiftRequest response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/workforce/shift_requests'
const response = await fetch('https://api.mytommy.com/v1/workforce/shift_requests', {
  method: 'POST',
});

const data = await response.json();
import requests

response = requests.post('https://api.mytommy.com/v1/workforce/shift_requests')
data = response.json()
201Created
{
  "user_id": 0,
  "shift_id": 0,
  "status": "active",
  "id": 0,
  "team_id": 0,
  "requestor_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/workforce/shift_requests/{id}

Update a shift request

Update or update a shift request by ID.

idinteger (int64)requiredpath

WorkforceShiftRequest id

200OKobject & any

WorkforceShiftRequest response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/workforce/shift_requests/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/shift_requests/{id}', {
  method: 'PUT',
});

const data = await response.json();
import requests

response = requests.put('https://api.mytommy.com/v1/workforce/shift_requests/{id}')
data = response.json()
200OK
{
  "user_id": 0,
  "shift_id": 0,
  "status": "active",
  "id": 0,
  "team_id": 0,
  "requestor_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/workforce/shift_requests/{id}

Delete a shift request

Delete a shift request by ID.

idinteger (int64)requiredpath

WorkforceShiftRequest id

200OKobject & any

WorkforceShiftRequest response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/workforce/shift_requests/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/shift_requests/{id}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/workforce/shift_requests/{id}')
data = response.json()
200OK
{
  "user_id": 0,
  "shift_id": 0,
  "status": "active",
  "id": 0,
  "team_id": 0,
  "requestor_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/manager/shift_requests

Get shift requests as manager

Get shift request as manager.

200OKArray<object & any>

WorkforceShiftRequest response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/manager/shift_requests'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shift_requests', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/manager/shift_requests')
data = response.json()
200OK
[
  {
    "user_id": 0,
    "shift_id": 0,
    "status": "active",
    "id": 0,
    "team_id": 0,
    "requestor_id": 0
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/workforce/manager/shift_requests

Create a shift request as manager

Create a shift request as manager.

application/jsonrequired

WorkforceShiftRequestInput request

Object for updating a shift request

user_idinteger (int64)
shift_idinteger (int64)
statusstringrequestedshortlistedapprovedrejectedcanceled

Current status

201Createdobject & any

WorkforceShiftRequest response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/workforce/manager/shift_requests' \
  -H 'Content-Type: application/json' \
  -d '{
  "user_id": 0,
  "shift_id": 0,
  "status": "active"
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shift_requests', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "user_id": 0,
  "shift_id": 0,
  "status": "active"
}),
});

const data = await response.json();
import requests

payload = {
  "user_id": 0,
  "shift_id": 0,
  "status": "active"
}

response = requests.post('https://api.mytommy.com/v1/workforce/manager/shift_requests', json=payload)
data = response.json()
Request Body
{
  "user_id": 0,
  "shift_id": 0,
  "status": "active"
}
201Created
{
  "user_id": 0,
  "shift_id": 0,
  "status": "active",
  "id": 0,
  "team_id": 0,
  "requestor_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/manager/shift_requests/{id}

Get a shift request as manager

Get a shift request as manager by ID.

idinteger (int64)requiredpath

WorkforceShiftRequest id

200OKobject & any

WorkforceShiftRequest response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/manager/shift_requests/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shift_requests/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/manager/shift_requests/{id}')
data = response.json()
200OK
{
  "user_id": 0,
  "shift_id": 0,
  "status": "active",
  "id": 0,
  "team_id": 0,
  "requestor_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/workforce/manager/shift_requests/{id}

Update a shift request as manager

Update a shift request as manager by ID.

application/jsonrequired

WorkforceShiftRequestInput request

Object for updating a shift request

user_idinteger (int64)
shift_idinteger (int64)
statusstringrequestedshortlistedapprovedrejectedcanceled

Current status

idinteger (int64)requiredpath

WorkforceShiftRequest id

200OKobject & any

WorkforceShiftRequest response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/workforce/manager/shift_requests/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "user_id": 0,
  "shift_id": 0,
  "status": "active"
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shift_requests/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "user_id": 0,
  "shift_id": 0,
  "status": "active"
}),
});

const data = await response.json();
import requests

payload = {
  "user_id": 0,
  "shift_id": 0,
  "status": "active"
}

response = requests.put('https://api.mytommy.com/v1/workforce/manager/shift_requests/{id}', json=payload)
data = response.json()
Request Body
{
  "user_id": 0,
  "shift_id": 0,
  "status": "active"
}
200OK
{
  "user_id": 0,
  "shift_id": 0,
  "status": "active",
  "id": 0,
  "team_id": 0,
  "requestor_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/timesheets

Get timesheets

Get timesheets belonging to the current account.

200OKArray<object & any>

WorkforceTimesheet response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/timesheets'
const response = await fetch('https://api.mytommy.com/v1/workforce/timesheets', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/timesheets')
data = response.json()
200OK
[
  {
    "status": "active",
    "resource_id": 0,
    "resource_type": "string",
    "start_date": "2024-01-15",
    "end_date": "2024-01-15",
    "manual": true,
    "id": 0,
    "user_id": 0,
    "team_id": 0
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/timesheets/{id}

Get a timesheet

Get a timesheet by ID.

idinteger (int64)requiredpath

WorkforceTimesheet id

200OKobject & any

WorkforceTimesheet response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/timesheets/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/timesheets/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/timesheets/{id}')
data = response.json()
200OK
{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true,
  "id": 0,
  "user_id": 0,
  "team_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/workforce/timesheets/{id}

Update an timesheet

Update an timesheet by ID.

application/jsonrequired

WorkforceTimesheetInput request

Object for updating a timesheet

statusstringunsubmittedsubmittedpreapprovedapproveddenied

Current status

resource_idinteger (int64)
resource_typestring
start_datestring (date)
end_datestring (date)
manualboolean
idinteger (int64)requiredpath

WorkforceTimesheet id

200OKobject & any

WorkforceTimesheet response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/workforce/timesheets/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/timesheets/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true
}),
});

const data = await response.json();
import requests

payload = {
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": True
}

response = requests.put('https://api.mytommy.com/v1/workforce/timesheets/{id}', json=payload)
data = response.json()
Request Body
{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true
}
200OK
{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true,
  "id": 0,
  "user_id": 0,
  "team_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/workforce/timesheets/{id}

Delete a timesheet

Delete a timesheet by ID.

idinteger (int64)requiredpath

WorkforceTimesheetItem id

204No Content

Null response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/workforce/timesheets/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/timesheets/{id}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/workforce/timesheets/{id}')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/manager/timesheets

Get timesheets as manager

Get timesheets as manager.

200OKArray<object & any>

WorkforceTimesheet response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/manager/timesheets'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/timesheets', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/manager/timesheets')
data = response.json()
200OK
[
  {
    "status": "active",
    "resource_id": 0,
    "resource_type": "string",
    "start_date": "2024-01-15",
    "end_date": "2024-01-15",
    "manual": true,
    "id": 0,
    "user_id": 0,
    "team_id": 0
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/workforce/manager/timesheets

Create a timesheet as manager

Create a timesheet as manager.

application/jsonrequired

WorkforceTimesheetInput request

Object for updating a timesheet

statusstringunsubmittedsubmittedpreapprovedapproveddenied

Current status

resource_idinteger (int64)
resource_typestring
start_datestring (date)
end_datestring (date)
manualboolean
201Createdobject & any

WorkforceTimesheet response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/workforce/manager/timesheets' \
  -H 'Content-Type: application/json' \
  -d '{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/timesheets', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true
}),
});

const data = await response.json();
import requests

payload = {
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": True
}

response = requests.post('https://api.mytommy.com/v1/workforce/manager/timesheets', json=payload)
data = response.json()
Request Body
{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true
}
201Created
{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true,
  "id": 0,
  "user_id": 0,
  "team_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/manager/timesheets/{id}

Get a timesheet

Get a timesheet as manager by ID.

idinteger (int64)requiredpath

WorkforceTimesheet id

200OKobject & any

WorkforceTimesheet response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/manager/timesheets/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/timesheets/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/manager/timesheets/{id}')
data = response.json()
200OK
{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true,
  "id": 0,
  "user_id": 0,
  "team_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/workforce/manager/timesheets/{id}

Update an timesheet

Update an timesheet as manager by ID.

application/jsonrequired

WorkforceTimesheetInput request

Object for updating a timesheet

statusstringunsubmittedsubmittedpreapprovedapproveddenied

Current status

resource_idinteger (int64)
resource_typestring
start_datestring (date)
end_datestring (date)
manualboolean
idinteger (int64)requiredpath

WorkforceTimesheet id

200OKobject & any

WorkforceTimesheet response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/workforce/manager/timesheets/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/timesheets/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true
}),
});

const data = await response.json();
import requests

payload = {
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": True
}

response = requests.put('https://api.mytommy.com/v1/workforce/manager/timesheets/{id}', json=payload)
data = response.json()
Request Body
{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true
}
200OK
{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true,
  "id": 0,
  "user_id": 0,
  "team_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/workforce/manager/timesheets/bulk_update

Bulk update timesheets as manager

Bulk update timesheets as manager by an array of IDs.

application/jsonrequired

WorkforceTimesheetBulkInput request

Object for bulk updating a timesheets

Object for updating a timesheet

statusstringunsubmittedsubmittedpreapprovedapproveddenied

Current status

resource_idinteger (int64)
resource_typestring
start_datestring (date)
end_datestring (date)
manualboolean
timesheet_idsArray<integer>
200OKArray<object & any>

WorkforceTimesheet response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/workforce/manager/timesheets/bulk_update' \
  -H 'Content-Type: application/json' \
  -d '{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true,
  "timesheet_ids": [
    0
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/timesheets/bulk_update', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true,
  "timesheet_ids": [
    0
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": True,
  "timesheet_ids": [
    0
  ]
}

response = requests.put('https://api.mytommy.com/v1/workforce/manager/timesheets/bulk_update', json=payload)
data = response.json()
Request Body
{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true,
  "timesheet_ids": [
    0
  ]
}
200OK
[
  {
    "status": "active",
    "resource_id": 0,
    "resource_type": "string",
    "start_date": "2024-01-15",
    "end_date": "2024-01-15",
    "manual": true,
    "id": 0,
    "user_id": 0,
    "team_id": 0
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/timesheet_items

Get timesheet items

Get timesheet items for the current account.

200OKArray<object & any>

WorkforceTimesheetItem response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/timesheet_items'
const response = await fetch('https://api.mytommy.com/v1/workforce/timesheet_items', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/timesheet_items')
data = response.json()
200OK
[
  {
    "shift_id": 0,
    "timesheet_id": 0,
    "work_hours": 0,
    "break_hours": 0,
    "address": "string",
    "manual": true,
    "id": 0,
    "user_id": 0,
    "team_id": 0,
    "active": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/workforce/timesheet_items

Create a timesheet item

Create a timesheet item.

application/jsonrequired

WorkforceTimesheetItemInput request

Object for updating a timesheet item

shift_idinteger (int64)
timesheet_idinteger (int64)
work_hoursnumber (float)
break_hoursnumber (float)
addressstring
manualboolean
201Createdobject & any

WorkforceTimesheetItem response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/workforce/timesheet_items' \
  -H 'Content-Type: application/json' \
  -d '{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/timesheet_items', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true
}),
});

const data = await response.json();
import requests

payload = {
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": True
}

response = requests.post('https://api.mytommy.com/v1/workforce/timesheet_items', json=payload)
data = response.json()
Request Body
{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true
}
201Created
{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true,
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "active": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/timesheet_items/{id}

Get a timesheet item

Get a timesheet item by ID.

idinteger (int64)requiredpath

WorkforceTimesheetItem id

200OKobject & any

WorkforceTimesheetItem response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/timesheet_items/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/timesheet_items/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/timesheet_items/{id}')
data = response.json()
200OK
{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true,
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "active": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/workforce/timesheet_items/{id}

Update a timesheet item

Update a timesheet item by ID.

application/jsonrequired

WorkforceTimesheetItemInput request

Object for updating a timesheet item

shift_idinteger (int64)
timesheet_idinteger (int64)
work_hoursnumber (float)
break_hoursnumber (float)
addressstring
manualboolean
idinteger (int64)requiredpath

WorkforceTimesheetItem id

200OKobject & any

WorkforceTimesheetItem response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/workforce/timesheet_items/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/timesheet_items/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true
}),
});

const data = await response.json();
import requests

payload = {
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": True
}

response = requests.put('https://api.mytommy.com/v1/workforce/timesheet_items/{id}', json=payload)
data = response.json()
Request Body
{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true
}
200OK
{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true,
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "active": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/workforce/timesheet_items/{id}

Delete a timesheet item

Delete a timesheet item by ID.

idinteger (int64)requiredpath

WorkforceTimesheetItem id

204No Content

Null response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/workforce/timesheet_items/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/timesheet_items/{id}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/workforce/timesheet_items/{id}')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/manager/timesheet_items

Get timesheet items

Get timesheet items belonging to the current account.

200OKArray<object & any>

WorkforceTimesheetItem response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/manager/timesheet_items'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/timesheet_items', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/manager/timesheet_items')
data = response.json()
200OK
[
  {
    "shift_id": 0,
    "timesheet_id": 0,
    "work_hours": 0,
    "break_hours": 0,
    "address": "string",
    "manual": true,
    "id": 0,
    "user_id": 0,
    "team_id": 0,
    "active": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/workforce/manager/timesheet_items

Create a timesheet item

Create a timesheet item.

application/jsonrequired

WorkforceTimesheetItemInput request

Object for updating a timesheet item

shift_idinteger (int64)
timesheet_idinteger (int64)
work_hoursnumber (float)
break_hoursnumber (float)
addressstring
manualboolean
201Createdobject & any

WorkforceTimesheetItem response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/workforce/manager/timesheet_items' \
  -H 'Content-Type: application/json' \
  -d '{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/timesheet_items', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true
}),
});

const data = await response.json();
import requests

payload = {
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": True
}

response = requests.post('https://api.mytommy.com/v1/workforce/manager/timesheet_items', json=payload)
data = response.json()
Request Body
{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true
}
201Created
{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true,
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "active": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/manager/timesheet_items/{id}

Get a timesheet item as manager

Get a timesheet item as manager by ID.

idinteger (int64)requiredpath

WorkforceTimesheetItem id

200OKobject & any

WorkforceTimesheetItem response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/manager/timesheet_items/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/timesheet_items/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/manager/timesheet_items/{id}')
data = response.json()
200OK
{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true,
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "active": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/workforce/manager/timesheet_items/{id}

Update a timesheet item as manager

Update a timesheet item as manager by ID.

application/jsonrequired

WorkforceTimesheetItemInput request

Object for updating a timesheet item

shift_idinteger (int64)
timesheet_idinteger (int64)
work_hoursnumber (float)
break_hoursnumber (float)
addressstring
manualboolean
idinteger (int64)requiredpath

WorkforceTimesheetItem id

200OKobject & any

WorkforceTimesheetItem response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/workforce/manager/timesheet_items/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/timesheet_items/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true
}),
});

const data = await response.json();
import requests

payload = {
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": True
}

response = requests.put('https://api.mytommy.com/v1/workforce/manager/timesheet_items/{id}', json=payload)
data = response.json()
Request Body
{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true
}
200OK
{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true,
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "active": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/attendances

Get attendances

Get attendances for the current account.

200OKArray<object & any>

WorkforceAttendance response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/attendances'
const response = await fetch('https://api.mytommy.com/v1/workforce/attendances', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/attendances')
data = response.json()
200OK
[
  {
    "event_id": 0,
    "latitude": 0,
    "longitude": 0,
    "accuracy": 0,
    "status": "active",
    "address": "string",
    "location_name": "string",
    "image": {},
    "id": 0,
    "user_id": 0
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/workforce/attendances

Create an attendance

Create an attendance.

application/jsonrequired

WorkforceAttendanceInput request

Object for updating an attendance

event_idinteger (int64)
latitudenumber (float)
longitudenumber (float)
accuracynumber (float)
statusstringstartpauseresumestop

Current status

addressstring
location_namestring
imageobject
201Createdobject & any

WorkforceAttendance response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/workforce/attendances' \
  -H 'Content-Type: application/json' \
  -d '{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/attendances', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}),
});

const data = await response.json();
import requests

payload = {
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}

response = requests.post('https://api.mytommy.com/v1/workforce/attendances', json=payload)
data = response.json()
Request Body
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}
201Created
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {},
  "id": 0,
  "user_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/attendances/active

Get active attendances

Get active attendance for the current account.

200OKobject & any

WorkforceAttendance response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/attendances/active'
const response = await fetch('https://api.mytommy.com/v1/workforce/attendances/active', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/attendances/active')
data = response.json()
200OK
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {},
  "id": 0,
  "user_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/attendances/{id}

Get an attendance

Get an attendance by ID.

idinteger (int64)requiredpath

WorkforceAttendance id

200OKobject & any

WorkforceAttendance response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/attendances/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/attendances/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/attendances/{id}')
data = response.json()
200OK
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {},
  "id": 0,
  "user_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/workforce/attendances/{id}

Update an attendance

Update an attendance by ID.

application/jsonrequired

WorkforceAttendanceInput request

Object for updating an attendance

event_idinteger (int64)
latitudenumber (float)
longitudenumber (float)
accuracynumber (float)
statusstringstartpauseresumestop

Current status

addressstring
location_namestring
imageobject
idinteger (int64)requiredpath

WorkforceAttendance id

200OKobject & any

WorkforceAttendance response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/workforce/attendances/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/attendances/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}),
});

const data = await response.json();
import requests

payload = {
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}

response = requests.put('https://api.mytommy.com/v1/workforce/attendances/{id}', json=payload)
data = response.json()
Request Body
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}
200OK
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {},
  "id": 0,
  "user_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/manager/attendances

Get attendances

Get attendances belonging to the current account.

200OKArray<object & any>

WorkforceAttendance response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/manager/attendances'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/attendances', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/manager/attendances')
data = response.json()
200OK
[
  {
    "event_id": 0,
    "latitude": 0,
    "longitude": 0,
    "accuracy": 0,
    "status": "active",
    "address": "string",
    "location_name": "string",
    "image": {},
    "id": 0,
    "user_id": 0
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/workforce/manager/attendances

Create an attendance

Create an attendance.

application/jsonrequired

WorkforceAttendanceInput request

Object for updating an attendance

event_idinteger (int64)
latitudenumber (float)
longitudenumber (float)
accuracynumber (float)
statusstringstartpauseresumestop

Current status

addressstring
location_namestring
imageobject
201Createdobject & any

WorkforceAttendance response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/workforce/manager/attendances' \
  -H 'Content-Type: application/json' \
  -d '{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/attendances', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}),
});

const data = await response.json();
import requests

payload = {
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}

response = requests.post('https://api.mytommy.com/v1/workforce/manager/attendances', json=payload)
data = response.json()
Request Body
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}
201Created
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {},
  "id": 0,
  "user_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/manager/attendances/active

Get active attendances as manager

Get active attendances as manager.

200OKobject & any

WorkforceAttendance response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/manager/attendances/active'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/attendances/active', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/manager/attendances/active')
data = response.json()
200OK
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {},
  "id": 0,
  "user_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/workforce/manager/attendances/{id}

Get an attendance as manager

Get an attendance as manager by ID.

idinteger (int64)requiredpath

WorkforceAttendance id

200OKobject & any

WorkforceAttendance response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/workforce/manager/attendances/{id}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/attendances/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/workforce/manager/attendances/{id}')
data = response.json()
200OK
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {},
  "id": 0,
  "user_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/workforce/manager/attendances/{id}

Update an attendance as manager

Update an attendance as manager by ID.

application/jsonrequired

WorkforceAttendanceInput request

Object for updating an attendance

event_idinteger (int64)
latitudenumber (float)
longitudenumber (float)
accuracynumber (float)
statusstringstartpauseresumestop

Current status

addressstring
location_namestring
imageobject
idinteger (int64)requiredpath

WorkforceAttendance id

200OKobject & any

WorkforceAttendance response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/workforce/manager/attendances/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}'
const response = await fetch('https://api.mytommy.com/v1/workforce/manager/attendances/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}),
});

const data = await response.json();
import requests

payload = {
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}

response = requests.put('https://api.mytommy.com/v1/workforce/manager/attendances/{id}', json=payload)
data = response.json()
Request Body
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}
200OK
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {},
  "id": 0,
  "user_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Contact

Manage contacts: invite, accept, and share connections.

GET/contacts

Get contacts

Get all contacts belonging to the current account.

200OKArray<object & any>

Contact response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/contacts'
const response = await fetch('https://api.mytommy.com/v1/contacts', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/contacts')
data = response.json()
200OK
[
  {
    "friend_id": 0,
    "favorite": true,
    "mute": true,
    "personal": true,
    "roles": [
      "string"
    ],
    "locations": [
      "string"
    ],
    "tags": [
      "string"
    ],
    "id": 0,
    "type": "string",
    "first_name": "string",
    "last_name": "string",
    "icon_url": "string",
    "email": "string",
    "mobile": "string",
    "status": "string",
    "member": true,
    "last_online_at": "2024-01-15T09:30:00Z"
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/contacts

Create contact

Create a contact for a user that may not already exist on Tommy. The created user will be invited to join the current user or team.

application/jsonrequired

ContactRequest request

A representation of a User

idinteger (int64)

Unique user identifier

statusstring

Current account status

first_namestring

Given name

last_namestring

Family name

slugstring

URL-safe identifier

emailstring

Email address

mobilestring

Mobile phone number in E.164 format

dobstring

Date of birth (YYYY-MM-DD)

localestring

IETF language tag

icon_urlstring

Avatar image URL

team_idsArray<integer>
viastring
201Createdobject & any

Contact response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/contacts' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "team_ids": [
    0
  ],
  "via": "string"
}'
const response = await fetch('https://api.mytommy.com/v1/contacts', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "team_ids": [
    0
  ],
  "via": "string"
}),
});

const data = await response.json();
import requests

payload = {
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "team_ids": [
    0
  ],
  "via": "string"
}

response = requests.post('https://api.mytommy.com/v1/contacts', json=payload)
data = response.json()
Request Body
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "team_ids": [
    0
  ],
  "via": "string"
}
201Created
{
  "friend_id": 0,
  "favorite": true,
  "mute": true,
  "personal": true,
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "type": "string",
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "email": "string",
  "mobile": "string",
  "status": "string",
  "member": true,
  "last_online_at": "2024-01-15T09:30:00Z"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/contacts/{friend_id}

Get a contact

Get a contact object by friend user ID.

friend_idinteger (int64)requiredpath

User friend_id

200OKobject & any

Contact response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/contacts/{friend_id}'
const response = await fetch('https://api.mytommy.com/v1/contacts/{friend_id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/contacts/{friend_id}')
data = response.json()
200OK
{
  "friend_id": 0,
  "favorite": true,
  "mute": true,
  "personal": true,
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "type": "string",
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "email": "string",
  "mobile": "string",
  "status": "string",
  "member": true,
  "last_online_at": "2024-01-15T09:30:00Z"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/contacts/{friend_id}

Update a contact

Update a single contact object.

application/jsonrequired

Contact request

A representation of a Contact

friend_idinteger (int64)required

Friend user ID

favoriteboolean
muteboolean
personalboolean
rolesArray<string>

Array of roles assigned to the Contact

locationsArray<string>

Array of locations assigned to the Contact

tagsArray<string>

Array of tags assigned to the Contact

idinteger (int64)
typestring
first_namestring
last_namestring
icon_urlstring
emailstring
mobilestring
statusstring
memberboolean

True when the friend has signed up to Tommy

last_online_atstring (date-time)
friend_idinteger (int64)requiredpath

User friend_id

200OKobject & any

Contact response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/contacts/{friend_id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "friend_id": 0,
  "favorite": true,
  "mute": true,
  "personal": true,
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "type": "string",
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "email": "string",
  "mobile": "string",
  "status": "string",
  "member": true,
  "last_online_at": "2024-01-15T09:30:00Z"
}'
const response = await fetch('https://api.mytommy.com/v1/contacts/{friend_id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "friend_id": 0,
  "favorite": true,
  "mute": true,
  "personal": true,
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "type": "string",
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "email": "string",
  "mobile": "string",
  "status": "string",
  "member": true,
  "last_online_at": "2024-01-15T09:30:00Z"
}),
});

const data = await response.json();
import requests

payload = {
  "friend_id": 0,
  "favorite": True,
  "mute": True,
  "personal": True,
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "type": "string",
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "email": "string",
  "mobile": "string",
  "status": "string",
  "member": True,
  "last_online_at": "2024-01-15T09:30:00Z"
}

response = requests.put('https://api.mytommy.com/v1/contacts/{friend_id}', json=payload)
data = response.json()
Request Body
{
  "friend_id": 0,
  "favorite": true,
  "mute": true,
  "personal": true,
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "type": "string",
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "email": "string",
  "mobile": "string",
  "status": "string",
  "member": true,
  "last_online_at": "2024-01-15T09:30:00Z"
}
200OK
{
  "friend_id": 0,
  "favorite": true,
  "mute": true,
  "personal": true,
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "type": "string",
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "email": "string",
  "mobile": "string",
  "status": "string",
  "member": true,
  "last_online_at": "2024-01-15T09:30:00Z"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/contacts/import

Import bulk contacts

Import bulk contacts from a mobile phone or other device. Imported contacts must provide first_name and mobile or email parameters.

application/jsonrequired

Users request

Array<object>

A representation of a User

idinteger (int64)

Unique user identifier

statusstring

Current account status

first_namestring

Given name

last_namestring

Family name

slugstring

URL-safe identifier

emailstring

Email address

mobilestring

Mobile phone number in E.164 format

dobstring

Date of birth (YYYY-MM-DD)

localestring

IETF language tag

icon_urlstring

Avatar image URL

201CreatedArray<object & any>

Contact response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/contacts/import' \
  -H 'Content-Type: application/json' \
  -d '[
  {
    "id": 12345,
    "status": "active",
    "first_name": "Alex",
    "last_name": "Johnson",
    "slug": "alex-johnson",
    "email": "alex@example.com",
    "mobile": "+15551234567",
    "dob": "1990-01-01",
    "locale": "en-US",
    "icon_url": "https://cdn.example.com/avatars/12345.png"
  }
]'
const response = await fetch('https://api.mytommy.com/v1/contacts/import', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify([
  {
    "id": 12345,
    "status": "active",
    "first_name": "Alex",
    "last_name": "Johnson",
    "slug": "alex-johnson",
    "email": "alex@example.com",
    "mobile": "+15551234567",
    "dob": "1990-01-01",
    "locale": "en-US",
    "icon_url": "https://cdn.example.com/avatars/12345.png"
  }
]),
});

const data = await response.json();
import requests

payload = [
  {
    "id": 12345,
    "status": "active",
    "first_name": "Alex",
    "last_name": "Johnson",
    "slug": "alex-johnson",
    "email": "alex@example.com",
    "mobile": "+15551234567",
    "dob": "1990-01-01",
    "locale": "en-US",
    "icon_url": "https://cdn.example.com/avatars/12345.png"
  }
]

response = requests.post('https://api.mytommy.com/v1/contacts/import', json=payload)
data = response.json()
Request Body
[
  {
    "id": 12345,
    "status": "active",
    "first_name": "Alex",
    "last_name": "Johnson",
    "slug": "alex-johnson",
    "email": "alex@example.com",
    "mobile": "+15551234567",
    "dob": "1990-01-01",
    "locale": "en-US",
    "icon_url": "https://cdn.example.com/avatars/12345.png"
  }
]
201Created
[
  {
    "friend_id": 0,
    "favorite": true,
    "mute": true,
    "personal": true,
    "roles": [
      "string"
    ],
    "locations": [
      "string"
    ],
    "tags": [
      "string"
    ],
    "id": 0,
    "type": "string",
    "first_name": "string",
    "last_name": "string",
    "icon_url": "string",
    "email": "string",
    "mobile": "string",
    "status": "string",
    "member": true,
    "last_online_at": "2024-01-15T09:30:00Z"
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/contacts/{friend_id}/add

Send contact request

Send a contact request to join the given user or team.

application/json

TeamID request

team_idinteger (int64)
friend_idinteger (int64)requiredpath

User friend_id

201Createdobject & any

Contact response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/contacts/{friend_id}/add' \
  -H 'Content-Type: application/json' \
  -d '{
  "team_id": 0
}'
const response = await fetch('https://api.mytommy.com/v1/contacts/{friend_id}/add', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "team_id": 0
}),
});

const data = await response.json();
import requests

payload = {
  "team_id": 0
}

response = requests.post('https://api.mytommy.com/v1/contacts/{friend_id}/add', json=payload)
data = response.json()
Request Body
{
  "team_id": 0
}
201Created
{
  "friend_id": 0,
  "favorite": true,
  "mute": true,
  "personal": true,
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "type": "string",
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "email": "string",
  "mobile": "string",
  "status": "string",
  "member": true,
  "last_online_at": "2024-01-15T09:30:00Z"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/contacts/{friend_id}/invite

Invite contact

Invite the given user to become a contact of the current user or team.

friend_idinteger (int64)requiredpath

User friend_id

201Createdobject & any

Contact response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/contacts/{friend_id}/invite'
const response = await fetch('https://api.mytommy.com/v1/contacts/{friend_id}/invite', {
  method: 'POST',
});

const data = await response.json();
import requests

response = requests.post('https://api.mytommy.com/v1/contacts/{friend_id}/invite')
data = response.json()
201Created
{
  "friend_id": 0,
  "favorite": true,
  "mute": true,
  "personal": true,
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "type": "string",
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "email": "string",
  "mobile": "string",
  "status": "string",
  "member": true,
  "last_online_at": "2024-01-15T09:30:00Z"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/contacts/{friend_id}/accept

Accept contact request

Accept an incoming contact request from the given user.

application/jsonrequired

TeamIDs request

team_idsArray<integer>
friend_idinteger (int64)requiredpath

User friend_id

200OKobject & any

Contact response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/contacts/{friend_id}/accept' \
  -H 'Content-Type: application/json' \
  -d '{
  "team_ids": [
    0
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/contacts/{friend_id}/accept', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "team_ids": [
    0
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "team_ids": [
    0
  ]
}

response = requests.post('https://api.mytommy.com/v1/contacts/{friend_id}/accept', json=payload)
data = response.json()
Request Body
{
  "team_ids": [
    0
  ]
}
200OK
{
  "friend_id": 0,
  "favorite": true,
  "mute": true,
  "personal": true,
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "type": "string",
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "email": "string",
  "mobile": "string",
  "status": "string",
  "member": true,
  "last_online_at": "2024-01-15T09:30:00Z"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/contacts/{friend_id}/decline

Reject contact request

Reject an incoming contact request from the given user.

friend_idinteger (int64)requiredpath

User friend_id

200OKobject & any

Contact response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/contacts/{friend_id}/decline'
const response = await fetch('https://api.mytommy.com/v1/contacts/{friend_id}/decline', {
  method: 'POST',
});

const data = await response.json();
import requests

response = requests.post('https://api.mytommy.com/v1/contacts/{friend_id}/decline')
data = response.json()
200OK
{
  "friend_id": 0,
  "favorite": true,
  "mute": true,
  "personal": true,
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "type": "string",
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "email": "string",
  "mobile": "string",
  "status": "string",
  "member": true,
  "last_online_at": "2024-01-15T09:30:00Z"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Team

Team resources, members, and related operations.

POST/teams

Create a team

Create a team.

201Createdobject

Team response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/teams'
const response = await fetch('https://api.mytommy.com/v1/teams', {
  method: 'POST',
});

const data = await response.json();
import requests

response = requests.post('https://api.mytommy.com/v1/teams')
data = response.json()
201Created
{
  "id": 9876,
  "user_id": 12345,
  "name": "Operations",
  "photo": "<binary>",
  "icon_url": "https://cdn.example.com/teams/ops.png",
  "email": "string",
  "phone": "string",
  "status": "active",
  "slug": "string",
  "features": {
    "compliance": true,
    "timesheets": true,
    "timeclock": true,
    "availability": true,
    "orders": true,
    "clients": true,
    "training": true,
    "leave": true,
    "documents": true,
    "scheduling": true,
    "ndis": true,
    "experimental": true,
    "mileage": true
  }
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/team

Get the current team object

Get the current team object.

200OKobject

Team response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/team'
const response = await fetch('https://api.mytommy.com/v1/team', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/team')
data = response.json()
200OK
{
  "id": 9876,
  "user_id": 12345,
  "name": "Operations",
  "photo": "<binary>",
  "icon_url": "https://cdn.example.com/teams/ops.png",
  "email": "string",
  "phone": "string",
  "status": "active",
  "slug": "string",
  "features": {
    "compliance": true,
    "timesheets": true,
    "timeclock": true,
    "availability": true,
    "orders": true,
    "clients": true,
    "training": true,
    "leave": true,
    "documents": true,
    "scheduling": true,
    "ndis": true,
    "experimental": true,
    "mileage": true
  }
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/team

Update the current team object

Update the current team object.

application/jsonrequired

TeamInput request

A representation of a Team

idinteger (int64)required

Unique team identifier

user_idinteger (int64)required

Owner user ID

namestringrequired

Team display name

photostring (binary)
icon_urlstring

Team icon URL

emailstring
phonestring
statusstring

Current status

slugstring
featuresobject

Feature flags enabled for the team

Feature flags enabled for the team

complianceboolean
timesheetsboolean
timeclockboolean
availabilityboolean
ordersboolean
clientsboolean
trainingboolean
leaveboolean
documentsboolean
schedulingboolean
ndisboolean
experimentalboolean
mileageboolean
200OKobject

Team response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/team' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": 9876,
  "user_id": 12345,
  "name": "Operations",
  "photo": "<binary>",
  "icon_url": "https://cdn.example.com/teams/ops.png",
  "email": "string",
  "phone": "string",
  "status": "active",
  "slug": "string",
  "features": {
    "compliance": true,
    "timesheets": true,
    "timeclock": true,
    "availability": true,
    "orders": true,
    "clients": true,
    "training": true,
    "leave": true,
    "documents": true,
    "scheduling": true,
    "ndis": true,
    "experimental": true,
    "mileage": true
  }
}'
const response = await fetch('https://api.mytommy.com/v1/team', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "id": 9876,
  "user_id": 12345,
  "name": "Operations",
  "photo": "<binary>",
  "icon_url": "https://cdn.example.com/teams/ops.png",
  "email": "string",
  "phone": "string",
  "status": "active",
  "slug": "string",
  "features": {
    "compliance": true,
    "timesheets": true,
    "timeclock": true,
    "availability": true,
    "orders": true,
    "clients": true,
    "training": true,
    "leave": true,
    "documents": true,
    "scheduling": true,
    "ndis": true,
    "experimental": true,
    "mileage": true
  }
}),
});

const data = await response.json();
import requests

payload = {
  "id": 9876,
  "user_id": 12345,
  "name": "Operations",
  "photo": "<binary>",
  "icon_url": "https://cdn.example.com/teams/ops.png",
  "email": "string",
  "phone": "string",
  "status": "active",
  "slug": "string",
  "features": {
    "compliance": True,
    "timesheets": True,
    "timeclock": True,
    "availability": True,
    "orders": True,
    "clients": True,
    "training": True,
    "leave": True,
    "documents": True,
    "scheduling": True,
    "ndis": True,
    "experimental": True,
    "mileage": True
  }
}

response = requests.put('https://api.mytommy.com/v1/team', json=payload)
data = response.json()
Request Body
{
  "id": 9876,
  "user_id": 12345,
  "name": "Operations",
  "photo": "<binary>",
  "icon_url": "https://cdn.example.com/teams/ops.png",
  "email": "string",
  "phone": "string",
  "status": "active",
  "slug": "string",
  "features": {
    "compliance": true,
    "timesheets": true,
    "timeclock": true,
    "availability": true,
    "orders": true,
    "clients": true,
    "training": true,
    "leave": true,
    "documents": true,
    "scheduling": true,
    "ndis": true,
    "experimental": true,
    "mileage": true
  }
}
200OK
{
  "id": 9876,
  "user_id": 12345,
  "name": "Operations",
  "photo": "<binary>",
  "icon_url": "https://cdn.example.com/teams/ops.png",
  "email": "string",
  "phone": "string",
  "status": "active",
  "slug": "string",
  "features": {
    "compliance": true,
    "timesheets": true,
    "timeclock": true,
    "availability": true,
    "orders": true,
    "clients": true,
    "training": true,
    "leave": true,
    "documents": true,
    "scheduling": true,
    "ndis": true,
    "experimental": true,
    "mileage": true
  }
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/team/settings

Get team settings

Get team settings objects.

200OKobject

Setting response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/team/settings'
const response = await fetch('https://api.mytommy.com/v1/team/settings', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/team/settings')
data = response.json()
200OK
{}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PATCH/team/features

Update team features

Bulk update team feature flags. Unknown keys are ignored.

application/jsonrequired
featuresobject

Feature flags enabled for the team

Feature flags enabled for the team

complianceboolean
timesheetsboolean
timeclockboolean
availabilityboolean
ordersboolean
clientsboolean
trainingboolean
leaveboolean
documentsboolean
schedulingboolean
ndisboolean
experimentalboolean
mileageboolean
200OKobject

Updated team features

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PATCH 'https://api.mytommy.com/v1/team/features' \
  -H 'Content-Type: application/json' \
  -d '{
  "features": {
    "compliance": true,
    "timesheets": true,
    "timeclock": true,
    "availability": true,
    "orders": true,
    "clients": true,
    "training": true,
    "leave": true,
    "documents": true,
    "scheduling": true,
    "ndis": true,
    "experimental": true,
    "mileage": true
  }
}'
const response = await fetch('https://api.mytommy.com/v1/team/features', {
  method: 'PATCH',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "features": {
    "compliance": true,
    "timesheets": true,
    "timeclock": true,
    "availability": true,
    "orders": true,
    "clients": true,
    "training": true,
    "leave": true,
    "documents": true,
    "scheduling": true,
    "ndis": true,
    "experimental": true,
    "mileage": true
  }
}),
});

const data = await response.json();
import requests

payload = {
  "features": {
    "compliance": True,
    "timesheets": True,
    "timeclock": True,
    "availability": True,
    "orders": True,
    "clients": True,
    "training": True,
    "leave": True,
    "documents": True,
    "scheduling": True,
    "ndis": True,
    "experimental": True,
    "mileage": True
  }
}

response = requests.patch('https://api.mytommy.com/v1/team/features', json=payload)
data = response.json()
Request Body
{
  "features": {
    "compliance": true,
    "timesheets": true,
    "timeclock": true,
    "availability": true,
    "orders": true,
    "clients": true,
    "training": true,
    "leave": true,
    "documents": true,
    "scheduling": true,
    "ndis": true,
    "experimental": true,
    "mileage": true
  }
}
200OK
{
  "features": {
    "compliance": true,
    "timesheets": true,
    "timeclock": true,
    "availability": true,
    "orders": true,
    "clients": true,
    "training": true,
    "leave": true,
    "documents": true,
    "scheduling": true,
    "ndis": true,
    "experimental": true,
    "mileage": true
  }
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/team/settings/{name}

Get team setting value

Get a team setting value.

namestringrequiredpath

Setting name

200OKobject

Setting response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/team/settings/{name}'
const response = await fetch('https://api.mytommy.com/v1/team/settings/{name}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/team/settings/{name}')
data = response.json()
200OK
{}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/team/settings/{name}

Update team setting value

Update a team setting value.

application/jsonrequired

SettingData request

dataobjectrequired

Setting data as JSON, boolean, integer or string.

contextstring
_formatstring
namestringrequiredpath

Setting name

200OKobject

Setting response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/team/settings/{name}' \
  -H 'Content-Type: application/json' \
  -d '{
  "data": {},
  "context": "string",
  "_format": "string"
}'
const response = await fetch('https://api.mytommy.com/v1/team/settings/{name}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "data": {},
  "context": "string",
  "_format": "string"
}),
});

const data = await response.json();
import requests

payload = {
  "data": {},
  "context": "string",
  "_format": "string"
}

response = requests.put('https://api.mytommy.com/v1/team/settings/{name}', json=payload)
data = response.json()
Request Body
{
  "data": {},
  "context": "string",
  "_format": "string"
}
200OK
{}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/team/settings/{name}

Delete team setting value

Delete a team setting value.

namestringrequiredpath

Setting name

204No Content

No content

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/team/settings/{name}'
const response = await fetch('https://api.mytommy.com/v1/team/settings/{name}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/team/settings/{name}')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/team/demo_data/apply

Apply demo data

Apply industry-specific demo data to the current team.

application/jsonrequired

Demo data application parameters

seed_typestringworkforceaged_carehospitalitynursingpartnerretailconstructionload_testing

The type of demo data to apply

optionsobject

Optional parameters to customize the demo data generation

Optional parameters to customize the demo data generation

number_of_team_membersinteger

Number of team members to create

number_of_locationsinteger

Number of locations to create

number_of_pay_templatesinteger

Number of pay templates to create

number_of_shiftsinteger

Number of shifts to create

number_of_timesheetsinteger

Number of timesheets to create

total_team_membersinteger

Total team members for load testing

locations_countinteger

Number of locations for load testing

pay_templates_countinteger

Number of pay templates for load testing

chats_countinteger

Number of chats for load testing

leave_requests_countinteger

Number of leave requests for load testing

shifts_per_member_per_weekinteger

Shifts per member per week for load testing

weeks_backinteger

Weeks back for load testing

weeks_forwardinteger

Weeks forward for load testing

attendance_ratenumber (float)

Attendance rate for load testing (0.0 to 1.0)

200OKobject

Demo data sync started successfully

400Bad Request

Invalid seed type

401Unauthorizedany

Unauthorized

500Internal Server Errorany

Internal error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/team/demo_data/apply' \
  -H 'Content-Type: application/json' \
  -d '{
  "seed_type": "workforce",
  "options": {
    "number_of_team_members": 0,
    "number_of_locations": 0,
    "number_of_pay_templates": 0,
    "number_of_shifts": 0,
    "number_of_timesheets": 0,
    "total_team_members": 0,
    "locations_count": 0,
    "pay_templates_count": 0,
    "chats_count": 0,
    "leave_requests_count": 0,
    "shifts_per_member_per_week": 0,
    "weeks_back": 0,
    "weeks_forward": 0,
    "attendance_rate": 0
  }
}'
const response = await fetch('https://api.mytommy.com/v1/team/demo_data/apply', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "seed_type": "workforce",
  "options": {
    "number_of_team_members": 0,
    "number_of_locations": 0,
    "number_of_pay_templates": 0,
    "number_of_shifts": 0,
    "number_of_timesheets": 0,
    "total_team_members": 0,
    "locations_count": 0,
    "pay_templates_count": 0,
    "chats_count": 0,
    "leave_requests_count": 0,
    "shifts_per_member_per_week": 0,
    "weeks_back": 0,
    "weeks_forward": 0,
    "attendance_rate": 0
  }
}),
});

const data = await response.json();
import requests

payload = {
  "seed_type": "workforce",
  "options": {
    "number_of_team_members": 0,
    "number_of_locations": 0,
    "number_of_pay_templates": 0,
    "number_of_shifts": 0,
    "number_of_timesheets": 0,
    "total_team_members": 0,
    "locations_count": 0,
    "pay_templates_count": 0,
    "chats_count": 0,
    "leave_requests_count": 0,
    "shifts_per_member_per_week": 0,
    "weeks_back": 0,
    "weeks_forward": 0,
    "attendance_rate": 0
  }
}

response = requests.post('https://api.mytommy.com/v1/team/demo_data/apply', json=payload)
data = response.json()
Request Body
{
  "seed_type": "workforce",
  "options": {
    "number_of_team_members": 0,
    "number_of_locations": 0,
    "number_of_pay_templates": 0,
    "number_of_shifts": 0,
    "number_of_timesheets": 0,
    "total_team_members": 0,
    "locations_count": 0,
    "pay_templates_count": 0,
    "chats_count": 0,
    "leave_requests_count": 0,
    "shifts_per_member_per_week": 0,
    "weeks_back": 0,
    "weeks_forward": 0,
    "attendance_rate": 0
  }
}
200OK
{
  "success": true,
  "message": "string",
  "sync_id": 0,
  "team_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/team/demo_data/reset

Reset demo data

Remove all generated demo data from the current team.

200OKobject

Demo data reset successfully

401Unauthorizedany

Unauthorized

500Internal Server Errorany

Internal error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/team/demo_data/reset'
const response = await fetch('https://api.mytommy.com/v1/team/demo_data/reset', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/team/demo_data/reset')
data = response.json()
200OK
{
  "success": true,
  "message": "string",
  "team_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/team/members

Get all members belonging to the current team

Get all members belonging to the current team.

200OKArray<object & any>

TeamMember response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/team/members'
const response = await fetch('https://api.mytommy.com/v1/team/members', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/team/members')
data = response.json()
200OK
[
  {
    "user_id": 0,
    "team_id": 0,
    "favorite": true,
    "mute": true,
    "photo": "<binary>",
    "roles": [
      "string"
    ],
    "locations": [
      "string"
    ],
    "tags": [
      "string"
    ],
    "id": 0,
    "first_name": "string",
    "last_name": "string",
    "email": "string",
    "mobile": "string",
    "manager": true,
    "member": true,
    "status": "string",
    "icon_url": "string",
    "addon_links": [
      {
        "title": "Example Title",
        "package": "string",
        "url": "string",
        "icon_url": "string"
      }
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/team/members/{user_id}

Get a team member

Get a single team member object by it's corresponding user ID.

user_idinteger (int64)requiredpath

User user_id

200OKobject & any

TeamMember response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/team/members/{user_id}'
const response = await fetch('https://api.mytommy.com/v1/team/members/{user_id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/team/members/{user_id}')
data = response.json()
200OK
{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": true,
  "member": true,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/team/members/{user_id}

Update a team member

Update a single team member object.

application/jsonrequired

TeamMember request

Object that represents a Team Member

Object for creating or updating a Team Member

user_idinteger (int64)required
team_idinteger (int64)required
favoriteboolean
muteboolean
photostring (binary)
rolesArray<string>

Array of roles assigned to the Team Member

locationsArray<string>

Array of locations assigned to the Team Member

tagsArray<string>

Array of tags assigned to the Team Member

idinteger (int64)
user_idinteger (int64)
team_idinteger (int64)
first_namestring
last_namestring
emailstring
mobilestring
managerboolean
memberboolean

True when the team member has signed up to Tommy

statusstring
icon_urlstring
addon_linksArray<any>

Array of profile links accessible by the current User on the Team Member profile

titlestring

Human-friendly title

packagestring
urlstring
icon_urlstring
user_idinteger (int64)requiredpath

User user_id

200OKobject & any

TeamMember response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/team/members/{user_id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": true,
  "member": true,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/team/members/{user_id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": true,
  "member": true,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "user_id": 0,
  "team_id": 0,
  "favorite": True,
  "mute": True,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": True,
  "member": True,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}

response = requests.put('https://api.mytommy.com/v1/team/members/{user_id}', json=payload)
data = response.json()
Request Body
{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": true,
  "member": true,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}
200OK
{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": true,
  "member": true,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/team/members/invite

Invite team member

Invite a member to the current team.

application/jsonrequired

TeamMember request

Object that represents a Team Member

Object for creating or updating a Team Member

user_idinteger (int64)required
team_idinteger (int64)required
favoriteboolean
muteboolean
photostring (binary)
rolesArray<string>

Array of roles assigned to the Team Member

locationsArray<string>

Array of locations assigned to the Team Member

tagsArray<string>

Array of tags assigned to the Team Member

idinteger (int64)
user_idinteger (int64)
team_idinteger (int64)
first_namestring
last_namestring
emailstring
mobilestring
managerboolean
memberboolean

True when the team member has signed up to Tommy

statusstring
icon_urlstring
addon_linksArray<any>

Array of profile links accessible by the current User on the Team Member profile

titlestring

Human-friendly title

packagestring
urlstring
icon_urlstring
200OKobject & any

TeamMember response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/team/members/invite' \
  -H 'Content-Type: application/json' \
  -d '{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": true,
  "member": true,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/team/members/invite', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": true,
  "member": true,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "user_id": 0,
  "team_id": 0,
  "favorite": True,
  "mute": True,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": True,
  "member": True,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}

response = requests.post('https://api.mytommy.com/v1/team/members/invite', json=payload)
data = response.json()
Request Body
{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": true,
  "member": true,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}
200OK
{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": true,
  "member": true,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/teams/{id}

Get a teams

Get a teams object by slug.

idstringrequiredpath

Team slug

200OKobject

Team response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/teams/{id}'
const response = await fetch('https://api.mytommy.com/v1/teams/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/teams/{id}')
data = response.json()
200OK
{
  "id": 9876,
  "user_id": 12345,
  "name": "Operations",
  "photo": "<binary>",
  "icon_url": "https://cdn.example.com/teams/ops.png",
  "email": "string",
  "phone": "string",
  "status": "active",
  "slug": "string",
  "features": {
    "compliance": true,
    "timesheets": true,
    "timeclock": true,
    "availability": true,
    "orders": true,
    "clients": true,
    "training": true,
    "leave": true,
    "documents": true,
    "scheduling": true,
    "ndis": true,
    "experimental": true,
    "mileage": true
  }
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Developer

Developer-focused endpoints for addons and integrations.

GET/developers

Get all developers on the system

Get all developers on the system.

200OKArray<object & any>

Developer response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/developers'
const response = await fetch('https://api.mytommy.com/v1/developers', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/developers')
data = response.json()
200OK
[
  {
    "name": "Example Name",
    "details": "string",
    "icon_url": "string",
    "addons": [
      {
        "id": 123,
        "user_id": 0,
        "developer_id": 0,
        "package": "string",
        "title": "Example Title",
        "author": "string",
        "environment": "string",
        "version": "string",
        "description": "Short description",
        "homepage": "string",
        "icon_url": "string",
        "file_base_url": "string",
        "installed": true,
        "updated_at": "2025-01-02 12:00:00+00:00",
        "roles": [
          "string"
        ],
        "permissions": [
          {}
        ],
        "input_devices": [
          {}
        ],
        "locales": [
          "string"
        ],
        "views": [
          {
            "id": 123,
            "title": "Example Title",
            "type": "string",
            "path": "string",
            "index": true,
            "icon_url": "string"
          }
        ]
      }
    ],
    "actions": [
      {
        "id": 123,
        "user_id": 0,
        "developer_id": 0,
        "action_version_id": 0,
        "author": "string",
        "trigger": {
          "id": 123,
          "action_version_id": 0,
          "name": "Example Name",
          "description": "Short description"
        },
        "activity": {
          "id": 123,
          "action_version_id": 0,
          "name": "Example Name",
          "description": "Short description"
        },
        "dependencies": {},
        "name": "Example Name",
        "summary": "string",
        "description": "Short description",
        "icon_url": "string",
        "installed": true,
        "kind": "string",
        "unique": true
      }
    ],
    "solutions": [
      {
        "id": 123,
        "user_id": 0,
        "developer_id": 0,
        "name": "Example Name",
        "summary": "string",
        "description": "Short description"
      }
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/developers/{id}

Get a developer

Get a developer object by user ID.

idinteger (int64)requiredpath

Developer id

200OKobject & any

Developer response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/developers/{id}'
const response = await fetch('https://api.mytommy.com/v1/developers/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/developers/{id}')
data = response.json()
200OK
{
  "name": "Example Name",
  "details": "string",
  "icon_url": "string",
  "addons": [
    {
      "id": 123,
      "user_id": 0,
      "developer_id": 0,
      "package": "string",
      "title": "Example Title",
      "author": "string",
      "environment": "string",
      "version": "string",
      "description": "Short description",
      "homepage": "string",
      "icon_url": "string",
      "file_base_url": "string",
      "installed": true,
      "updated_at": "2025-01-02 12:00:00+00:00",
      "roles": [
        "string"
      ],
      "permissions": [
        {}
      ],
      "input_devices": [
        {}
      ],
      "locales": [
        "string"
      ],
      "views": [
        {
          "id": 123,
          "title": "Example Title",
          "type": "string",
          "path": "string",
          "index": true,
          "icon_url": "string"
        }
      ]
    }
  ],
  "actions": [
    {
      "id": 123,
      "user_id": 0,
      "developer_id": 0,
      "action_version_id": 0,
      "author": "string",
      "trigger": {
        "id": 123,
        "action_version_id": 0,
        "name": "Example Name",
        "description": "Short description"
      },
      "activity": {
        "id": 123,
        "action_version_id": 0,
        "name": "Example Name",
        "description": "Short description"
      },
      "dependencies": {},
      "name": "Example Name",
      "summary": "string",
      "description": "Short description",
      "icon_url": "string",
      "installed": true,
      "kind": "string",
      "unique": true
    }
  ],
  "solutions": [
    {
      "id": 123,
      "user_id": 0,
      "developer_id": 0,
      "name": "Example Name",
      "summary": "string",
      "description": "Short description"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/developers/{id}/addons

Get developer addons

Get all addons for a specific developer.

idinteger (int64)requiredpath

Developer id

200OKArray<any>

Addon response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/developers/{id}/addons'
const response = await fetch('https://api.mytommy.com/v1/developers/{id}/addons', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/developers/{id}/addons')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "developer_id": 0,
    "package": "string",
    "title": "Example Title",
    "author": "string",
    "environment": "string",
    "version": "string",
    "description": "Short description",
    "homepage": "string",
    "icon_url": "string",
    "file_base_url": "string",
    "installed": true,
    "updated_at": "2025-01-02 12:00:00+00:00",
    "roles": [
      "string"
    ],
    "permissions": [
      {}
    ],
    "input_devices": [
      {}
    ],
    "locales": [
      "string"
    ],
    "views": [
      {
        "id": 123,
        "title": "Example Title",
        "type": "string",
        "path": "string",
        "index": true,
        "icon_url": "string"
      }
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/developers/{id}/actions

Get developer actions

Get all actions for a specific developer.

idinteger (int64)requiredpath

Developer id

200OKArray<any>

Action response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/developers/{id}/actions'
const response = await fetch('https://api.mytommy.com/v1/developers/{id}/actions', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/developers/{id}/actions')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "developer_id": 0,
    "action_version_id": 0,
    "author": "string",
    "trigger": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "activity": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "dependencies": {},
    "name": "Example Name",
    "summary": "string",
    "description": "Short description",
    "icon_url": "string",
    "installed": true,
    "kind": "string",
    "unique": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Addon

Discover, manage, and interact with addons.

GET/developers/{id}/addons

Get developer addons

Get all addons for a specific developer.

idinteger (int64)requiredpath

Developer id

200OKArray<any>

Addon response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/developers/{id}/addons'
const response = await fetch('https://api.mytommy.com/v1/developers/{id}/addons', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/developers/{id}/addons')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "developer_id": 0,
    "package": "string",
    "title": "Example Title",
    "author": "string",
    "environment": "string",
    "version": "string",
    "description": "Short description",
    "homepage": "string",
    "icon_url": "string",
    "file_base_url": "string",
    "installed": true,
    "updated_at": "2025-01-02 12:00:00+00:00",
    "roles": [
      "string"
    ],
    "permissions": [
      {}
    ],
    "input_devices": [
      {}
    ],
    "locales": [
      "string"
    ],
    "views": [
      {
        "id": 123,
        "title": "Example Title",
        "type": "string",
        "path": "string",
        "index": true,
        "icon_url": "string"
      }
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/addons

Get all addons

Get all addons available for install by the current team or user.

200OKArray<any>

Addon response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/addons'
const response = await fetch('https://api.mytommy.com/v1/addons', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/addons')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "developer_id": 0,
    "package": "string",
    "title": "Example Title",
    "author": "string",
    "environment": "string",
    "version": "string",
    "description": "Short description",
    "homepage": "string",
    "icon_url": "string",
    "file_base_url": "string",
    "installed": true,
    "updated_at": "2025-01-02 12:00:00+00:00",
    "roles": [
      "string"
    ],
    "permissions": [
      {}
    ],
    "input_devices": [
      {}
    ],
    "locales": [
      "string"
    ],
    "views": [
      {
        "id": 123,
        "title": "Example Title",
        "type": "string",
        "path": "string",
        "index": true,
        "icon_url": "string"
      }
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/addons/installed

Get installed addons

Get all addons installed for the current team or user.

200OKArray<any>

Addon response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/addons/installed'
const response = await fetch('https://api.mytommy.com/v1/addons/installed', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/addons/installed')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "developer_id": 0,
    "package": "string",
    "title": "Example Title",
    "author": "string",
    "environment": "string",
    "version": "string",
    "description": "Short description",
    "homepage": "string",
    "icon_url": "string",
    "file_base_url": "string",
    "installed": true,
    "updated_at": "2025-01-02 12:00:00+00:00",
    "roles": [
      "string"
    ],
    "permissions": [
      {}
    ],
    "input_devices": [
      {}
    ],
    "locales": [
      "string"
    ],
    "views": [
      {
        "id": 123,
        "title": "Example Title",
        "type": "string",
        "path": "string",
        "index": true,
        "icon_url": "string"
      }
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/addons/{package}

Get an addon

Get an addon by it's package name.

packagestringrequiredpath

Addon package

200OKany

Addon response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/addons/{package}'
const response = await fetch('https://api.mytommy.com/v1/addons/{package}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/addons/{package}')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "package": "string",
  "title": "Example Title",
  "author": "string",
  "environment": "string",
  "version": "string",
  "description": "Short description",
  "homepage": "string",
  "icon_url": "string",
  "file_base_url": "string",
  "installed": true,
  "updated_at": "2025-01-02 12:00:00+00:00",
  "roles": [
    "string"
  ],
  "permissions": [
    {}
  ],
  "input_devices": [
    {}
  ],
  "locales": [
    "string"
  ],
  "views": [
    {
      "id": 123,
      "title": "Example Title",
      "type": "string",
      "path": "string",
      "index": true,
      "icon_url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/addons/{package}/report

Report addon as inappropriate

Report addon as inappropriate.

packagestringrequiredpath

Addon package

200OK

Success response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/addons/{package}/report'
const response = await fetch('https://api.mytommy.com/v1/addons/{package}/report', {
  method: 'POST',
});

const data = await response.json();
import requests

response = requests.post('https://api.mytommy.com/v1/addons/{package}/report')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/addons/{package}/actions

Get addon actions

Get all actions for an addon.

packagestringrequiredpath

Addon package

200OKArray<any>

Action response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/addons/{package}/actions'
const response = await fetch('https://api.mytommy.com/v1/addons/{package}/actions', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/addons/{package}/actions')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "developer_id": 0,
    "action_version_id": 0,
    "author": "string",
    "trigger": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "activity": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "dependencies": {},
    "name": "Example Name",
    "summary": "string",
    "description": "Short description",
    "icon_url": "string",
    "installed": true,
    "kind": "string",
    "unique": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/addons/{addon_package}/install

Get installed addon

Get an installed addon.

addon_packagestringrequiredpath

Addon package

200OKany

Addon response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/addons/{addon_package}/install'
const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/addons/{addon_package}/install')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "package": "string",
  "title": "Example Title",
  "author": "string",
  "environment": "string",
  "version": "string",
  "description": "Short description",
  "homepage": "string",
  "icon_url": "string",
  "file_base_url": "string",
  "installed": true,
  "updated_at": "2025-01-02 12:00:00+00:00",
  "roles": [
    "string"
  ],
  "permissions": [
    {}
  ],
  "input_devices": [
    {}
  ],
  "locales": [
    "string"
  ],
  "views": [
    {
      "id": 123,
      "title": "Example Title",
      "type": "string",
      "path": "string",
      "index": true,
      "icon_url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/addons/{addon_package}/install

Install addon

Install an addon.

application/jsonrequired

Addon request

idinteger (int64)required

Unique identifier

user_idinteger (int64)required
developer_idinteger (int64)
packagestringrequired
titlestring

Human-friendly title

authorstring
environmentstring
versionstring
descriptionstring

Human-friendly description

homepagestring
icon_urlstring
file_base_urlstring
installedboolean
updated_atstring (date-time)

Last update timestamp (ISO8601)

rolesArray<string>

Array of roles required to install this addon.

permissionsArray<object>
input_devicesArray<object>
localesArray<string>
viewsArray<any>
idstring

Unique identifier

titlestring

Human-friendly title

typestring
pathstring
indexboolean
icon_urlstring
addon_packagestringrequiredpath

Addon package

201Createdany

Addon response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/addons/{addon_package}/install' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "package": "string",
  "title": "Example Title",
  "author": "string",
  "environment": "string",
  "version": "string",
  "description": "Short description",
  "homepage": "string",
  "icon_url": "string",
  "file_base_url": "string",
  "installed": true,
  "updated_at": "2025-01-02 12:00:00+00:00",
  "roles": [
    "string"
  ],
  "permissions": [
    {}
  ],
  "input_devices": [
    {}
  ],
  "locales": [
    "string"
  ],
  "views": [
    {
      "id": 123,
      "title": "Example Title",
      "type": "string",
      "path": "string",
      "index": true,
      "icon_url": "string"
    }
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "package": "string",
  "title": "Example Title",
  "author": "string",
  "environment": "string",
  "version": "string",
  "description": "Short description",
  "homepage": "string",
  "icon_url": "string",
  "file_base_url": "string",
  "installed": true,
  "updated_at": "2025-01-02 12:00:00+00:00",
  "roles": [
    "string"
  ],
  "permissions": [
    {}
  ],
  "input_devices": [
    {}
  ],
  "locales": [
    "string"
  ],
  "views": [
    {
      "id": 123,
      "title": "Example Title",
      "type": "string",
      "path": "string",
      "index": true,
      "icon_url": "string"
    }
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "package": "string",
  "title": "Example Title",
  "author": "string",
  "environment": "string",
  "version": "string",
  "description": "Short description",
  "homepage": "string",
  "icon_url": "string",
  "file_base_url": "string",
  "installed": True,
  "updated_at": "2025-01-02 12:00:00+00:00",
  "roles": [
    "string"
  ],
  "permissions": [
    {}
  ],
  "input_devices": [
    {}
  ],
  "locales": [
    "string"
  ],
  "views": [
    {
      "id": 123,
      "title": "Example Title",
      "type": "string",
      "path": "string",
      "index": True,
      "icon_url": "string"
    }
  ]
}

response = requests.post('https://api.mytommy.com/v1/addons/{addon_package}/install', json=payload)
data = response.json()
Request Body
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "package": "string",
  "title": "Example Title",
  "author": "string",
  "environment": "string",
  "version": "string",
  "description": "Short description",
  "homepage": "string",
  "icon_url": "string",
  "file_base_url": "string",
  "installed": true,
  "updated_at": "2025-01-02 12:00:00+00:00",
  "roles": [
    "string"
  ],
  "permissions": [
    {}
  ],
  "input_devices": [
    {}
  ],
  "locales": [
    "string"
  ],
  "views": [
    {
      "id": 123,
      "title": "Example Title",
      "type": "string",
      "path": "string",
      "index": true,
      "icon_url": "string"
    }
  ]
}
201Created
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "package": "string",
  "title": "Example Title",
  "author": "string",
  "environment": "string",
  "version": "string",
  "description": "Short description",
  "homepage": "string",
  "icon_url": "string",
  "file_base_url": "string",
  "installed": true,
  "updated_at": "2025-01-02 12:00:00+00:00",
  "roles": [
    "string"
  ],
  "permissions": [
    {}
  ],
  "input_devices": [
    {}
  ],
  "locales": [
    "string"
  ],
  "views": [
    {
      "id": 123,
      "title": "Example Title",
      "type": "string",
      "path": "string",
      "index": true,
      "icon_url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/addons/{addon_package}/install

Update installed addon

Update an installed addon.

addon_packagestringrequiredpath

Addon package

200OKany

Addon response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/addons/{addon_package}/install'
const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install', {
  method: 'PUT',
});

const data = await response.json();
import requests

response = requests.put('https://api.mytommy.com/v1/addons/{addon_package}/install')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "package": "string",
  "title": "Example Title",
  "author": "string",
  "environment": "string",
  "version": "string",
  "description": "Short description",
  "homepage": "string",
  "icon_url": "string",
  "file_base_url": "string",
  "installed": true,
  "updated_at": "2025-01-02 12:00:00+00:00",
  "roles": [
    "string"
  ],
  "permissions": [
    {}
  ],
  "input_devices": [
    {}
  ],
  "locales": [
    "string"
  ],
  "views": [
    {
      "id": 123,
      "title": "Example Title",
      "type": "string",
      "path": "string",
      "index": true,
      "icon_url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/addons/{addon_package}/install

Delete installed addon

Delete an installed addon.

addon_packagestringrequiredpath

Addon package

200OKany

Addon response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/addons/{addon_package}/install'
const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/addons/{addon_package}/install')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "package": "string",
  "title": "Example Title",
  "author": "string",
  "environment": "string",
  "version": "string",
  "description": "Short description",
  "homepage": "string",
  "icon_url": "string",
  "file_base_url": "string",
  "installed": true,
  "updated_at": "2025-01-02 12:00:00+00:00",
  "roles": [
    "string"
  ],
  "permissions": [
    {}
  ],
  "input_devices": [
    {}
  ],
  "locales": [
    "string"
  ],
  "views": [
    {
      "id": 123,
      "title": "Example Title",
      "type": "string",
      "path": "string",
      "index": true,
      "icon_url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/addons/{addon_package}/install/permissions

Get addon permissions

Get all addon permission objects.

addon_packagestringrequiredpath

Addon package

200OKany

Permission response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/addons/{addon_package}/install/permissions'
const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install/permissions', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/addons/{addon_package}/install/permissions')
data = response.json()
200OK
{
  "user_id": 0,
  "team_id": 0,
  "name": "Example Name",
  "title": "Example Title",
  "hint": "string",
  "resource_type": "string",
  "resource_kind": "string",
  "operations": [
    "string"
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/addons/{addon_package}/install/permissions/{name}

Get addon permission

Get an addon permission object.

addon_packagestringrequiredpath

Addon package

namestringrequiredpath

Permission name

200OKany

Permission response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/addons/{addon_package}/install/permissions/{name}'
const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install/permissions/{name}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/addons/{addon_package}/install/permissions/{name}')
data = response.json()
200OK
{
  "user_id": 0,
  "team_id": 0,
  "name": "Example Name",
  "title": "Example Title",
  "hint": "string",
  "resource_type": "string",
  "resource_kind": "string",
  "operations": [
    "string"
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/addons/{addon_package}/install/permissions/{name}

Update addon permission

Update an addon permission object.

application/jsonrequired

Permission request

user_idinteger (int64)
team_idinteger (int64)
namestring

Display name

titlestring

Human-friendly title

hintstring
resource_typestring
resource_kindstring
operationsArray<string>

Array of permissable operations

addon_packagestringrequiredpath

Addon package

namestringrequiredpath

Permission name

200OKany

Permission response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/addons/{addon_package}/install/permissions/{name}' \
  -H 'Content-Type: application/json' \
  -d '{
  "user_id": 0,
  "team_id": 0,
  "name": "Example Name",
  "title": "Example Title",
  "hint": "string",
  "resource_type": "string",
  "resource_kind": "string",
  "operations": [
    "string"
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install/permissions/{name}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "user_id": 0,
  "team_id": 0,
  "name": "Example Name",
  "title": "Example Title",
  "hint": "string",
  "resource_type": "string",
  "resource_kind": "string",
  "operations": [
    "string"
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "user_id": 0,
  "team_id": 0,
  "name": "Example Name",
  "title": "Example Title",
  "hint": "string",
  "resource_type": "string",
  "resource_kind": "string",
  "operations": [
    "string"
  ]
}

response = requests.put('https://api.mytommy.com/v1/addons/{addon_package}/install/permissions/{name}', json=payload)
data = response.json()
Request Body
{
  "user_id": 0,
  "team_id": 0,
  "name": "Example Name",
  "title": "Example Title",
  "hint": "string",
  "resource_type": "string",
  "resource_kind": "string",
  "operations": [
    "string"
  ]
}
200OK
{
  "user_id": 0,
  "team_id": 0,
  "name": "Example Name",
  "title": "Example Title",
  "hint": "string",
  "resource_type": "string",
  "resource_kind": "string",
  "operations": [
    "string"
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/addons/{addon_package}/install/settings

Get all addon settings

Get all addon settings objects.

addon_packagestringrequiredpath

Addon package

200OKany

Setting response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/addons/{addon_package}/install/settings'
const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install/settings', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/addons/{addon_package}/install/settings')
data = response.json()
200OK
{
  "user_id": 0,
  "team_id": 0,
  "addon_install_id": 0,
  "resource_id": 0,
  "resource_type": "string",
  "context": "string",
  "format": "string",
  "data": {}
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/addons/{addon_package}/install/settings/{name}

Get addon setting

Get an addon setting object.

addon_packagestringrequiredpath

Addon package

namestringrequiredpath

Setting name

200OKany

Setting response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}'
const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}')
data = response.json()
200OK
{
  "user_id": 0,
  "team_id": 0,
  "addon_install_id": 0,
  "resource_id": 0,
  "resource_type": "string",
  "context": "string",
  "format": "string",
  "data": {}
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/addons/{addon_package}/install/settings/{name}

Update addon settings

Update an addon settings object.

application/jsonrequired

Setting request

user_idinteger (int64)
team_idinteger (int64)
addon_install_idinteger (int64)
resource_idinteger (int64)
resource_typestring
contextstring
formatstring
dataobjectrequired

Setting data as JSON.

addon_packagestringrequiredpath

Addon package

namestringrequiredpath

Setting name

200OKany

Setting response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}' \
  -H 'Content-Type: application/json' \
  -d '{
  "user_id": 0,
  "team_id": 0,
  "addon_install_id": 0,
  "resource_id": 0,
  "resource_type": "string",
  "context": "string",
  "format": "string",
  "data": {}
}'
const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "user_id": 0,
  "team_id": 0,
  "addon_install_id": 0,
  "resource_id": 0,
  "resource_type": "string",
  "context": "string",
  "format": "string",
  "data": {}
}),
});

const data = await response.json();
import requests

payload = {
  "user_id": 0,
  "team_id": 0,
  "addon_install_id": 0,
  "resource_id": 0,
  "resource_type": "string",
  "context": "string",
  "format": "string",
  "data": {}
}

response = requests.put('https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}', json=payload)
data = response.json()
Request Body
{
  "user_id": 0,
  "team_id": 0,
  "addon_install_id": 0,
  "resource_id": 0,
  "resource_type": "string",
  "context": "string",
  "format": "string",
  "data": {}
}
200OK
{
  "user_id": 0,
  "team_id": 0,
  "addon_install_id": 0,
  "resource_id": 0,
  "resource_type": "string",
  "context": "string",
  "format": "string",
  "data": {}
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/addons/{addon_package}/install/settings/{name}

Delete addon setting

Delete an addon setting object.

addon_packagestringrequiredpath

Addon package

namestringrequiredpath

Setting name

200OK

Null response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}'
const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/addons/search

Search addons

Get all addons matching the given search term.

termstringrequiredquery

Search term used to filter addons

200OKArray<any>

Addon response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/addons/search'
const response = await fetch('https://api.mytommy.com/v1/addons/search', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/addons/search')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "developer_id": 0,
    "package": "string",
    "title": "Example Title",
    "author": "string",
    "environment": "string",
    "version": "string",
    "description": "Short description",
    "homepage": "string",
    "icon_url": "string",
    "file_base_url": "string",
    "installed": true,
    "updated_at": "2025-01-02 12:00:00+00:00",
    "roles": [
      "string"
    ],
    "permissions": [
      {}
    ],
    "input_devices": [
      {}
    ],
    "locales": [
      "string"
    ],
    "views": [
      {
        "id": 123,
        "title": "Example Title",
        "type": "string",
        "path": "string",
        "index": true,
        "icon_url": "string"
      }
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Action

List and manage actions, triggers, and related tasks.

GET/developers/{id}/actions

Get developer actions

Get all actions for a specific developer.

idinteger (int64)requiredpath

Developer id

200OKArray<any>

Action response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/developers/{id}/actions'
const response = await fetch('https://api.mytommy.com/v1/developers/{id}/actions', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/developers/{id}/actions')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "developer_id": 0,
    "action_version_id": 0,
    "author": "string",
    "trigger": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "activity": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "dependencies": {},
    "name": "Example Name",
    "summary": "string",
    "description": "Short description",
    "icon_url": "string",
    "installed": true,
    "kind": "string",
    "unique": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/actions

Get all actions

Get all available actions.

200OKArray<any>

Action response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/actions'
const response = await fetch('https://api.mytommy.com/v1/actions', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/actions')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "developer_id": 0,
    "action_version_id": 0,
    "author": "string",
    "trigger": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "activity": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "dependencies": {},
    "name": "Example Name",
    "summary": "string",
    "description": "Short description",
    "icon_url": "string",
    "installed": true,
    "kind": "string",
    "unique": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/actions/installed

Get installed actions

Get all installed actions for the current team or user.

200OKArray<any>

Action response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/actions/installed'
const response = await fetch('https://api.mytommy.com/v1/actions/installed', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/actions/installed')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "developer_id": 0,
    "action_version_id": 0,
    "author": "string",
    "trigger": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "activity": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "dependencies": {},
    "name": "Example Name",
    "summary": "string",
    "description": "Short description",
    "icon_url": "string",
    "installed": true,
    "kind": "string",
    "unique": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/actions/recent

Get recent actions

Get recently used actions for the current team or user.

200OKArray<any>

Action response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/actions/recent'
const response = await fetch('https://api.mytommy.com/v1/actions/recent', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/actions/recent')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "developer_id": 0,
    "action_version_id": 0,
    "author": "string",
    "trigger": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "activity": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "dependencies": {},
    "name": "Example Name",
    "summary": "string",
    "description": "Short description",
    "icon_url": "string",
    "installed": true,
    "kind": "string",
    "unique": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/actions/{id}

Get action

Get a specific action by ID.

idstringrequiredpath

Action id

200OKany

Action response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/actions/{id}'
const response = await fetch('https://api.mytommy.com/v1/actions/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/actions/{id}')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "action_version_id": 0,
  "author": "string",
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "dependencies": {},
  "name": "Example Name",
  "summary": "string",
  "description": "Short description",
  "icon_url": "string",
  "installed": true,
  "kind": "string",
  "unique": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/actions/{id}/variables

Get action variables

Get variables for a specific action.

idstringrequiredpath

Action id

200OKobject

object response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/actions/{id}/variables'
const response = await fetch('https://api.mytommy.com/v1/actions/{id}/variables', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/actions/{id}/variables')
data = response.json()
200OK
{}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/actions/installs

List action installs

Get all action installs for the current team or user.

200OKArray<any>

ActionInstall response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/actions/installs'
const response = await fetch('https://api.mytommy.com/v1/actions/installs', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/actions/installs')
data = response.json()
200OK
[
  {
    "id": 123,
    "action_id": 0,
    "addon_install_id": 0,
    "title": "Example Title",
    "summary": "string",
    "description": "Short description",
    "schedule": {},
    "installed": true,
    "deleted_at": "2024-01-15T09:30:00Z",
    "updated_at": "2025-01-02 12:00:00+00:00",
    "tag_ids": [
      0
    ],
    "tags_list": [
      "string"
    ],
    "trigger": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "activity": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "settings": {}
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/actions/installs

Install action

Install an action for the current team or user.

application/jsonrequired

Action request

idinteger (int64)

Unique identifier

user_idinteger (int64)
developer_idinteger (int64)
action_version_idinteger (int64)
authorstring
triggerany
idinteger (int64)

Unique identifier

action_version_idinteger (int64)
namestring

Display name

descriptionstring

Human-friendly description

activityany
idinteger (int64)

Unique identifier

action_version_idinteger (int64)
namestring

Display name

descriptionstring

Human-friendly description

dependenciesobject
namestring

Display name

summarystring
descriptionstring

Human-friendly description

icon_urlstring
installedboolean
kindstring
uniqueboolean
201Createdany

Action response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/actions/installs' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "action_version_id": 0,
  "author": "string",
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "dependencies": {},
  "name": "Example Name",
  "summary": "string",
  "description": "Short description",
  "icon_url": "string",
  "installed": true,
  "kind": "string",
  "unique": true
}'
const response = await fetch('https://api.mytommy.com/v1/actions/installs', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "action_version_id": 0,
  "author": "string",
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "dependencies": {},
  "name": "Example Name",
  "summary": "string",
  "description": "Short description",
  "icon_url": "string",
  "installed": true,
  "kind": "string",
  "unique": true
}),
});

const data = await response.json();
import requests

payload = {
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "action_version_id": 0,
  "author": "string",
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "dependencies": {},
  "name": "Example Name",
  "summary": "string",
  "description": "Short description",
  "icon_url": "string",
  "installed": True,
  "kind": "string",
  "unique": True
}

response = requests.post('https://api.mytommy.com/v1/actions/installs', json=payload)
data = response.json()
Request Body
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "action_version_id": 0,
  "author": "string",
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "dependencies": {},
  "name": "Example Name",
  "summary": "string",
  "description": "Short description",
  "icon_url": "string",
  "installed": true,
  "kind": "string",
  "unique": true
}
201Created
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "action_version_id": 0,
  "author": "string",
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "dependencies": {},
  "name": "Example Name",
  "summary": "string",
  "description": "Short description",
  "icon_url": "string",
  "installed": true,
  "kind": "string",
  "unique": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/actions/installs/{id}

Get installed action

Get an action install by ID.

idstringrequiredpath

ActionInstall id

200OKany

ActionInstall response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/actions/installs/{id}'
const response = await fetch('https://api.mytommy.com/v1/actions/installs/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/actions/installs/{id}')
data = response.json()
200OK
{
  "id": 123,
  "action_id": 0,
  "addon_install_id": 0,
  "title": "Example Title",
  "summary": "string",
  "description": "Short description",
  "schedule": {},
  "installed": true,
  "deleted_at": "2024-01-15T09:30:00Z",
  "updated_at": "2025-01-02 12:00:00+00:00",
  "tag_ids": [
    0
  ],
  "tags_list": [
    "string"
  ],
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "settings": {}
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/actions/installs/{id}

Update action install

Update an action install.

application/jsonrequired

ActionInstall request

idinteger (int64)

Unique identifier

action_idinteger (int64)
addon_install_idinteger (int64)
titlestring

Human-friendly title

summarystring
descriptionstring

Human-friendly description

scheduleobject
installedboolean
deleted_atstring (date-time)
updated_atstring (date-time)

Last update timestamp (ISO8601)

tag_idsArray<integer>
tags_listArray<string>
triggerany
idinteger (int64)

Unique identifier

action_version_idinteger (int64)
namestring

Display name

descriptionstring

Human-friendly description

activityany
idinteger (int64)

Unique identifier

action_version_idinteger (int64)
namestring

Display name

descriptionstring

Human-friendly description

settingsobject
idstringrequiredpath

ActionInstall id

200OKany

ActionInstall response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/actions/installs/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": 123,
  "action_id": 0,
  "addon_install_id": 0,
  "title": "Example Title",
  "summary": "string",
  "description": "Short description",
  "schedule": {},
  "installed": true,
  "deleted_at": "2024-01-15T09:30:00Z",
  "updated_at": "2025-01-02 12:00:00+00:00",
  "tag_ids": [
    0
  ],
  "tags_list": [
    "string"
  ],
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "settings": {}
}'
const response = await fetch('https://api.mytommy.com/v1/actions/installs/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "id": 123,
  "action_id": 0,
  "addon_install_id": 0,
  "title": "Example Title",
  "summary": "string",
  "description": "Short description",
  "schedule": {},
  "installed": true,
  "deleted_at": "2024-01-15T09:30:00Z",
  "updated_at": "2025-01-02 12:00:00+00:00",
  "tag_ids": [
    0
  ],
  "tags_list": [
    "string"
  ],
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "settings": {}
}),
});

const data = await response.json();
import requests

payload = {
  "id": 123,
  "action_id": 0,
  "addon_install_id": 0,
  "title": "Example Title",
  "summary": "string",
  "description": "Short description",
  "schedule": {},
  "installed": True,
  "deleted_at": "2024-01-15T09:30:00Z",
  "updated_at": "2025-01-02 12:00:00+00:00",
  "tag_ids": [
    0
  ],
  "tags_list": [
    "string"
  ],
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "settings": {}
}

response = requests.put('https://api.mytommy.com/v1/actions/installs/{id}', json=payload)
data = response.json()
Request Body
{
  "id": 123,
  "action_id": 0,
  "addon_install_id": 0,
  "title": "Example Title",
  "summary": "string",
  "description": "Short description",
  "schedule": {},
  "installed": true,
  "deleted_at": "2024-01-15T09:30:00Z",
  "updated_at": "2025-01-02 12:00:00+00:00",
  "tag_ids": [
    0
  ],
  "tags_list": [
    "string"
  ],
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "settings": {}
}
200OK
{
  "id": 123,
  "action_id": 0,
  "addon_install_id": 0,
  "title": "Example Title",
  "summary": "string",
  "description": "Short description",
  "schedule": {},
  "installed": true,
  "deleted_at": "2024-01-15T09:30:00Z",
  "updated_at": "2025-01-02 12:00:00+00:00",
  "tag_ids": [
    0
  ],
  "tags_list": [
    "string"
  ],
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "settings": {}
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/actions/installs/{id}

Delete installed action

Delete an action install.

idstringrequiredpath

ActionInstall id

200OKany

ActionInstall response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/actions/installs/{id}'
const response = await fetch('https://api.mytommy.com/v1/actions/installs/{id}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/actions/installs/{id}')
data = response.json()
200OK
{
  "id": 123,
  "action_id": 0,
  "addon_install_id": 0,
  "title": "Example Title",
  "summary": "string",
  "description": "Short description",
  "schedule": {},
  "installed": true,
  "deleted_at": "2024-01-15T09:30:00Z",
  "updated_at": "2025-01-02 12:00:00+00:00",
  "tag_ids": [
    0
  ],
  "tags_list": [
    "string"
  ],
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "settings": {}
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/actions/installs/{id}/run

Run an action

Run an installed action.

application/jsonrequired

TriggerData request

trigger_dataobject

Trigger data object

idstringrequiredpath

ActionInstall id

200OKany

Action response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/actions/installs/{id}/run' \
  -H 'Content-Type: application/json' \
  -d '{
  "trigger_data": {}
}'
const response = await fetch('https://api.mytommy.com/v1/actions/installs/{id}/run', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "trigger_data": {}
}),
});

const data = await response.json();
import requests

payload = {
  "trigger_data": {}
}

response = requests.get('https://api.mytommy.com/v1/actions/installs/{id}/run', json=payload)
data = response.json()
Request Body
{
  "trigger_data": {}
}
200OK
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "action_version_id": 0,
  "author": "string",
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "dependencies": {},
  "name": "Example Name",
  "summary": "string",
  "description": "Short description",
  "icon_url": "string",
  "installed": true,
  "kind": "string",
  "unique": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/actions/installs/{id}/run_later

Run an action later

Schedule an installed action to run later.

idstringrequiredpath

ActionInstall id

200OKany

Action response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/actions/installs/{id}/run_later'
const response = await fetch('https://api.mytommy.com/v1/actions/installs/{id}/run_later', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/actions/installs/{id}/run_later')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "action_version_id": 0,
  "author": "string",
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "dependencies": {},
  "name": "Example Name",
  "summary": "string",
  "description": "Short description",
  "icon_url": "string",
  "installed": true,
  "kind": "string",
  "unique": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/actions/installs/{id}/history

Get action event history

Get history for an installed action.

idstringrequiredpath

ActionInstall id

200OKArray<any>

AuditLog response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/actions/installs/{id}/history'
const response = await fetch('https://api.mytommy.com/v1/actions/installs/{id}/history', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/actions/installs/{id}/history')
data = response.json()
200OK
[
  {
    "user_id": 0,
    "team_id": 0,
    "name": "Example Name",
    "message": "string"
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/addons/{package}/actions

Get addon actions

Get all actions for an addon.

packagestringrequiredpath

Addon package

200OKArray<any>

Action response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/addons/{package}/actions'
const response = await fetch('https://api.mytommy.com/v1/addons/{package}/actions', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/addons/{package}/actions')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "developer_id": 0,
    "action_version_id": 0,
    "author": "string",
    "trigger": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "activity": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "dependencies": {},
    "name": "Example Name",
    "summary": "string",
    "description": "Short description",
    "icon_url": "string",
    "installed": true,
    "kind": "string",
    "unique": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/actions/search

Search actions

Search actions by term.

termstringrequiredquery

Search term used to filter actions

200OKArray<any>

Action response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/actions/search'
const response = await fetch('https://api.mytommy.com/v1/actions/search', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/actions/search')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "developer_id": 0,
    "action_version_id": 0,
    "author": "string",
    "trigger": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "activity": {
      "id": 123,
      "action_version_id": 0,
      "name": "Example Name",
      "description": "Short description"
    },
    "dependencies": {},
    "name": "Example Name",
    "summary": "string",
    "description": "Short description",
    "icon_url": "string",
    "installed": true,
    "kind": "string",
    "unique": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Chat

Start chats, list conversations, and manage participants.

GET/chats

Get chat rooms

Get all chat rooms.

200OKArray<any>

Chat response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/chats'
const response = await fetch('https://api.mytommy.com/v1/chats', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/chats')
data = response.json()
200OK
[
  {
    "id": 222,
    "user_id": 0,
    "team_id": 0,
    "title": "Example Title",
    "group": true,
    "favorite": true,
    "mute": true,
    "unread_messages_count": 0,
    "users": [
      {
        "id": 123,
        "chat_id": 0,
        "user_id": 0,
        "first_name": "string",
        "last_name": "string",
        "icon_url": "string",
        "deleted": true
      }
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/chats

Create chat room

Create a chat room with multiple users.

application/jsonrequired

ChatInput request

titlestring

The chat room title.

groupboolean
favoriteboolean
muteboolean
user_idsArray<integer>
201Createdany

Chat response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/chats' \
  -H 'Content-Type: application/json' \
  -d '{
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "user_ids": [
    0
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/chats', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "user_ids": [
    0
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "title": "Example Title",
  "group": True,
  "favorite": True,
  "mute": True,
  "user_ids": [
    0
  ]
}

response = requests.post('https://api.mytommy.com/v1/chats', json=payload)
data = response.json()
Request Body
{
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "user_ids": [
    0
  ]
}
201Created
{
  "id": 222,
  "user_id": 0,
  "team_id": 0,
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "unread_messages_count": 0,
  "users": [
    {
      "id": 123,
      "chat_id": 0,
      "user_id": 0,
      "first_name": "string",
      "last_name": "string",
      "icon_url": "string",
      "deleted": true
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/chats/initiate

Get or create chat room

Get or create a chat room with multiple given users.

application/jsonrequired

ChatInitiateInput request

Array of user IDs to initiate the chat with.

user_idsArray<integer>required
200OKany

Chat response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/chats/initiate' \
  -H 'Content-Type: application/json' \
  -d '{
  "user_ids": [
    0
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/chats/initiate', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "user_ids": [
    0
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "user_ids": [
    0
  ]
}

response = requests.post('https://api.mytommy.com/v1/chats/initiate', json=payload)
data = response.json()
Request Body
{
  "user_ids": [
    0
  ]
}
200OK
{
  "id": 222,
  "user_id": 0,
  "team_id": 0,
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "unread_messages_count": 0,
  "users": [
    {
      "id": 123,
      "chat_id": 0,
      "user_id": 0,
      "first_name": "string",
      "last_name": "string",
      "icon_url": "string",
      "deleted": true
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/chats/{id}

Get chat

Get a single chat object by it's ID.

idinteger (int64)requiredpath

Chat id

200OKany

Chat response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/chats/{id}'
const response = await fetch('https://api.mytommy.com/v1/chats/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/chats/{id}')
data = response.json()
200OK
{
  "id": 222,
  "user_id": 0,
  "team_id": 0,
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "unread_messages_count": 0,
  "users": [
    {
      "id": 123,
      "chat_id": 0,
      "user_id": 0,
      "first_name": "string",
      "last_name": "string",
      "icon_url": "string",
      "deleted": true
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/chats/{id}

Update chat

Update a chat object.

application/jsonrequired

ChatInput request

titlestring

The chat room title.

groupboolean
favoriteboolean
muteboolean
user_idsArray<integer>
idinteger (int64)requiredpath

Chat id

200OKany

Chat response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/chats/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "user_ids": [
    0
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/chats/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "user_ids": [
    0
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "title": "Example Title",
  "group": True,
  "favorite": True,
  "mute": True,
  "user_ids": [
    0
  ]
}

response = requests.put('https://api.mytommy.com/v1/chats/{id}', json=payload)
data = response.json()
Request Body
{
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "user_ids": [
    0
  ]
}
200OK
{
  "id": 222,
  "user_id": 0,
  "team_id": 0,
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "unread_messages_count": 0,
  "users": [
    {
      "id": 123,
      "chat_id": 0,
      "user_id": 0,
      "first_name": "string",
      "last_name": "string",
      "icon_url": "string",
      "deleted": true
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/chats/{id}

Delete chat

Delete a chat object.

application/jsonrequired

Chat request

A representation of a Chat

idinteger (int64)

Unique chat identifier

user_idinteger (int64)

The user ID of the chat owner.

team_idinteger (int64)

The team ID.

titlestring

The chat room title.

groupboolean
favoriteboolean
muteboolean
unread_messages_countinteger (int64)
usersArray<any>
idinteger (int64)

Unique identifier

chat_idinteger (int64)required
user_idinteger (int64)required
first_namestring
last_namestring
icon_urlstring
deletedboolean
idinteger (int64)requiredpath

Chat id

200OKany

Chat response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/chats/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": 222,
  "user_id": 0,
  "team_id": 0,
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "unread_messages_count": 0,
  "users": [
    {
      "id": 123,
      "chat_id": 0,
      "user_id": 0,
      "first_name": "string",
      "last_name": "string",
      "icon_url": "string",
      "deleted": true
    }
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/chats/{id}', {
  method: 'DELETE',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "id": 222,
  "user_id": 0,
  "team_id": 0,
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "unread_messages_count": 0,
  "users": [
    {
      "id": 123,
      "chat_id": 0,
      "user_id": 0,
      "first_name": "string",
      "last_name": "string",
      "icon_url": "string",
      "deleted": true
    }
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "id": 222,
  "user_id": 0,
  "team_id": 0,
  "title": "Example Title",
  "group": True,
  "favorite": True,
  "mute": True,
  "unread_messages_count": 0,
  "users": [
    {
      "id": 123,
      "chat_id": 0,
      "user_id": 0,
      "first_name": "string",
      "last_name": "string",
      "icon_url": "string",
      "deleted": True
    }
  ]
}

response = requests.delete('https://api.mytommy.com/v1/chats/{id}', json=payload)
data = response.json()
Request Body
{
  "id": 222,
  "user_id": 0,
  "team_id": 0,
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "unread_messages_count": 0,
  "users": [
    {
      "id": 123,
      "chat_id": 0,
      "user_id": 0,
      "first_name": "string",
      "last_name": "string",
      "icon_url": "string",
      "deleted": true
    }
  ]
}
200OK
{
  "id": 222,
  "user_id": 0,
  "team_id": 0,
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "unread_messages_count": 0,
  "users": [
    {
      "id": 123,
      "chat_id": 0,
      "user_id": 0,
      "first_name": "string",
      "last_name": "string",
      "icon_url": "string",
      "deleted": true
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/chats/{chat_id}/messages

Get chat messages

Get all messages belonging to the given chat.

chat_idinteger (int64)requiredpath

Chat chat_id

200OKArray<any>

Message response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/chats/{chat_id}/messages'
const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/messages', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/chats/{chat_id}/messages')
data = response.json()
200OK
[
  {
    "id": 333,
    "chat_id": 222,
    "sender_id": 0,
    "body": "Hello world",
    "kind": "string",
    "chat_title": "string",
    "sender_first_name": "string",
    "sender_last_name": "string",
    "sender_icon_url": "string",
    "sent_at": "2024-01-15T09:30:00Z",
    "attachments": [
      {
        "signed_id": "string",
        "content_type": "string",
        "filename": "string",
        "url": "string"
      }
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/chats/{chat_id}/messages

Create create message

Create a chat and send it to the chat participants.

application/jsonrequired

MessageInput request

chat_idinteger (int64)
sender_idinteger (int64)required
bodystringrequired
kindstring
send_atstring (date-time)

Time in the future to send the message

attachmentsArray<string>

Object for creating or updating an Attachment.

chat_idinteger (int64)requiredpath

Chat chat_id

201Createdany

Message response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

429Too Many Requestsany

Rate limit error

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/chats/{chat_id}/messages' \
  -H 'Content-Type: application/json' \
  -d '{
  "chat_id": 0,
  "sender_id": 0,
  "body": "string",
  "kind": "string",
  "send_at": "2024-01-15T09:30:00Z",
  "attachments": [
    "<binary>"
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/messages', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "chat_id": 0,
  "sender_id": 0,
  "body": "string",
  "kind": "string",
  "send_at": "2024-01-15T09:30:00Z",
  "attachments": [
    "<binary>"
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "chat_id": 0,
  "sender_id": 0,
  "body": "string",
  "kind": "string",
  "send_at": "2024-01-15T09:30:00Z",
  "attachments": [
    "<binary>"
  ]
}

response = requests.post('https://api.mytommy.com/v1/chats/{chat_id}/messages', json=payload)
data = response.json()
Request Body
{
  "chat_id": 0,
  "sender_id": 0,
  "body": "string",
  "kind": "string",
  "send_at": "2024-01-15T09:30:00Z",
  "attachments": [
    "<binary>"
  ]
}
201Created
{
  "id": 333,
  "chat_id": 222,
  "sender_id": 0,
  "body": "Hello world",
  "kind": "string",
  "chat_title": "string",
  "sender_first_name": "string",
  "sender_last_name": "string",
  "sender_icon_url": "string",
  "sent_at": "2024-01-15T09:30:00Z",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
429Too Many Requests
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/chats/{chat_id}/messages/{id}

Get chat message

Get a chat message belonging to the given chat.

chat_idinteger (int64)requiredpath

Chat chat_id

idinteger (int64)requiredpath

Message id

200OKany

Message response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}'
const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}')
data = response.json()
200OK
{
  "id": 333,
  "chat_id": 222,
  "sender_id": 0,
  "body": "Hello world",
  "kind": "string",
  "chat_title": "string",
  "sender_first_name": "string",
  "sender_last_name": "string",
  "sender_icon_url": "string",
  "sent_at": "2024-01-15T09:30:00Z",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/chats/{chat_id}/messages/{id}

Delete chat message

Delete a chat message belonging to the given chat.

chat_idinteger (int64)requiredpath

Chat chat_id

idinteger (int64)requiredpath

Message id

200OKany

Message response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}'
const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}')
data = response.json()
200OK
{
  "id": 333,
  "chat_id": 222,
  "sender_id": 0,
  "body": "Hello world",
  "kind": "string",
  "chat_title": "string",
  "sender_first_name": "string",
  "sender_last_name": "string",
  "sender_icon_url": "string",
  "sent_at": "2024-01-15T09:30:00Z",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/chats/{chat_id}/users

Get chat users

Get all users participating in the given chat.

chat_idinteger (int64)requiredpath

Chat chat_id

200OKArray<any>

ChatUser response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/chats/{chat_id}/users'
const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/users', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/chats/{chat_id}/users')
data = response.json()
200OK
[
  {
    "id": 123,
    "chat_id": 0,
    "user_id": 0,
    "first_name": "string",
    "last_name": "string",
    "icon_url": "string",
    "deleted": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/chats/{chat_id}/users

Create chat user

Create and add a user to the chat.

application/jsonrequired

UserID request

User ID parameter

user_idinteger (int64)
chat_idinteger (int64)requiredpath

Chat chat_id

201Createdany

ChatUser response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/chats/{chat_id}/users' \
  -H 'Content-Type: application/json' \
  -d '{
  "user_id": 0
}'
const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/users', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "user_id": 0
}),
});

const data = await response.json();
import requests

payload = {
  "user_id": 0
}

response = requests.post('https://api.mytommy.com/v1/chats/{chat_id}/users', json=payload)
data = response.json()
Request Body
{
  "user_id": 0
}
201Created
{
  "id": 123,
  "chat_id": 0,
  "user_id": 0,
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "deleted": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/chats/{chat_id}/users/{user_id}

Delete chat user

Delete a chat user.

chat_idinteger (int64)requiredpath

Chat chat_id

user_idinteger (int64)requiredpath

User user_id

200OKany

ChatUser response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/chats/{chat_id}/users/{user_id}'
const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/users/{user_id}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/chats/{chat_id}/users/{user_id}')
data = response.json()
200OK
{
  "id": 123,
  "chat_id": 0,
  "user_id": 0,
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "deleted": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/chats/{chat_id}/reactions

Create reaction

Create a reaction to a message in the chat.

application/jsonrequired

ReactionInput request

message_idinteger (int64)required

The message ID to react to

valuestringrequired

The reaction emoji value

chat_idinteger (int64)requiredpath

Chat chat_id

201Createdany

MessageFlag response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/chats/{chat_id}/reactions' \
  -H 'Content-Type: application/json' \
  -d '{
  "message_id": 0,
  "value": "string"
}'
const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/reactions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "message_id": 0,
  "value": "string"
}),
});

const data = await response.json();
import requests

payload = {
  "message_id": 0,
  "value": "string"
}

response = requests.post('https://api.mytommy.com/v1/chats/{chat_id}/reactions', json=payload)
data = response.json()
Request Body
{
  "message_id": 0,
  "value": "string"
}
201Created
{
  "id": 123,
  "user_id": 0,
  "message_id": 0,
  "chat_id": 0,
  "kind": "string",
  "value": "string",
  "created_at": "2025-01-01 12:00:00+00:00",
  "updated_at": "2025-01-02 12:00:00+00:00"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/chats/{chat_id}/reactions/{id}

Delete reaction

Delete a reaction from a message.

chat_idinteger (int64)requiredpath

Chat chat_id

idinteger (int64)requiredpath

MessageFlag id

200OKany

MessageFlag response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/chats/{chat_id}/reactions/{id}'
const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/reactions/{id}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/chats/{chat_id}/reactions/{id}')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "message_id": 0,
  "chat_id": 0,
  "kind": "string",
  "value": "string",
  "created_at": "2025-01-01 12:00:00+00:00",
  "updated_at": "2025-01-02 12:00:00+00:00"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/messages

Create and send a chat message to the receiver

Create and send a chat message to the receiver.

application/jsonrequired

MessageInput request

chat_idinteger (int64)
sender_idinteger (int64)required
bodystringrequired
kindstring
send_atstring (date-time)

Time in the future to send the message

attachmentsArray<string>

Object for creating or updating an Attachment.

201Createdany

Message response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/messages' \
  -H 'Content-Type: application/json' \
  -d '{
  "chat_id": 0,
  "sender_id": 0,
  "body": "string",
  "kind": "string",
  "send_at": "2024-01-15T09:30:00Z",
  "attachments": [
    "<binary>"
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/messages', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "chat_id": 0,
  "sender_id": 0,
  "body": "string",
  "kind": "string",
  "send_at": "2024-01-15T09:30:00Z",
  "attachments": [
    "<binary>"
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "chat_id": 0,
  "sender_id": 0,
  "body": "string",
  "kind": "string",
  "send_at": "2024-01-15T09:30:00Z",
  "attachments": [
    "<binary>"
  ]
}

response = requests.post('https://api.mytommy.com/v1/messages', json=payload)
data = response.json()
Request Body
{
  "chat_id": 0,
  "sender_id": 0,
  "body": "string",
  "kind": "string",
  "send_at": "2024-01-15T09:30:00Z",
  "attachments": [
    "<binary>"
  ]
}
201Created
{
  "id": 333,
  "chat_id": 222,
  "sender_id": 0,
  "body": "Hello world",
  "kind": "string",
  "chat_title": "string",
  "sender_first_name": "string",
  "sender_last_name": "string",
  "sender_icon_url": "string",
  "sent_at": "2024-01-15T09:30:00Z",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/messages/recent

Get recent chat messages

Get recent chat messages for the current account scope.

200OKArray<any>

Message response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/messages/recent'
const response = await fetch('https://api.mytommy.com/v1/messages/recent', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/messages/recent')
data = response.json()
200OK
[
  {
    "id": 333,
    "chat_id": 222,
    "sender_id": 0,
    "body": "Hello world",
    "kind": "string",
    "chat_title": "string",
    "sender_first_name": "string",
    "sender_last_name": "string",
    "sender_icon_url": "string",
    "sent_at": "2024-01-15T09:30:00Z",
    "attachments": [
      {
        "signed_id": "string",
        "content_type": "string",
        "filename": "string",
        "url": "string"
      }
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/messages/favorite

Get favorite chat messages

Get favorite chat messages for the current account scope.

200OKArray<any>

Message response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/messages/favorite'
const response = await fetch('https://api.mytommy.com/v1/messages/favorite', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/messages/favorite')
data = response.json()
200OK
[
  {
    "id": 333,
    "chat_id": 222,
    "sender_id": 0,
    "body": "Hello world",
    "kind": "string",
    "chat_title": "string",
    "sender_first_name": "string",
    "sender_last_name": "string",
    "sender_icon_url": "string",
    "sent_at": "2024-01-15T09:30:00Z",
    "attachments": [
      {
        "signed_id": "string",
        "content_type": "string",
        "filename": "string",
        "url": "string"
      }
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Message

Send and retrieve messages, mark read, and more.

PUT/messages/{id}

Update message

Update a message object.

application/jsonrequired

MessageInput request

chat_idinteger (int64)
sender_idinteger (int64)required
bodystringrequired
kindstring
send_atstring (date-time)

Time in the future to send the message

attachmentsArray<string>

Object for creating or updating an Attachment.

idinteger (int64)requiredpath

Message id

200OKany

Message response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/messages/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "chat_id": 0,
  "sender_id": 0,
  "body": "string",
  "kind": "string",
  "send_at": "2024-01-15T09:30:00Z",
  "attachments": [
    "<binary>"
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/messages/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "chat_id": 0,
  "sender_id": 0,
  "body": "string",
  "kind": "string",
  "send_at": "2024-01-15T09:30:00Z",
  "attachments": [
    "<binary>"
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "chat_id": 0,
  "sender_id": 0,
  "body": "string",
  "kind": "string",
  "send_at": "2024-01-15T09:30:00Z",
  "attachments": [
    "<binary>"
  ]
}

response = requests.put('https://api.mytommy.com/v1/messages/{id}', json=payload)
data = response.json()
Request Body
{
  "chat_id": 0,
  "sender_id": 0,
  "body": "string",
  "kind": "string",
  "send_at": "2024-01-15T09:30:00Z",
  "attachments": [
    "<binary>"
  ]
}
200OK
{
  "id": 333,
  "chat_id": 222,
  "sender_id": 0,
  "body": "Hello world",
  "kind": "string",
  "chat_title": "string",
  "sender_first_name": "string",
  "sender_last_name": "string",
  "sender_icon_url": "string",
  "sent_at": "2024-01-15T09:30:00Z",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/messages/{id}

Delete message

Delete a message object.

application/jsonrequired

Message request

A representation of a Message

idinteger (int64)

Unique message identifier

chat_idinteger (int64)

Associated chat ID

sender_idinteger (int64)
bodystring

Message contents

kindstring
chat_titlestring
sender_first_namestring
sender_last_namestring
sender_icon_urlstring
sent_atstring (date-time)
attachmentsArray<any>

Object that represents an Attachment.

signed_idstring
content_typestring
filenamestring
urlstring
idinteger (int64)requiredpath

Message id

200OKany

Message response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/messages/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": 333,
  "chat_id": 222,
  "sender_id": 0,
  "body": "Hello world",
  "kind": "string",
  "chat_title": "string",
  "sender_first_name": "string",
  "sender_last_name": "string",
  "sender_icon_url": "string",
  "sent_at": "2024-01-15T09:30:00Z",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/messages/{id}', {
  method: 'DELETE',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "id": 333,
  "chat_id": 222,
  "sender_id": 0,
  "body": "Hello world",
  "kind": "string",
  "chat_title": "string",
  "sender_first_name": "string",
  "sender_last_name": "string",
  "sender_icon_url": "string",
  "sent_at": "2024-01-15T09:30:00Z",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "id": 333,
  "chat_id": 222,
  "sender_id": 0,
  "body": "Hello world",
  "kind": "string",
  "chat_title": "string",
  "sender_first_name": "string",
  "sender_last_name": "string",
  "sender_icon_url": "string",
  "sent_at": "2024-01-15T09:30:00Z",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}

response = requests.delete('https://api.mytommy.com/v1/messages/{id}', json=payload)
data = response.json()
Request Body
{
  "id": 333,
  "chat_id": 222,
  "sender_id": 0,
  "body": "Hello world",
  "kind": "string",
  "chat_title": "string",
  "sender_first_name": "string",
  "sender_last_name": "string",
  "sender_icon_url": "string",
  "sent_at": "2024-01-15T09:30:00Z",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}
200OK
{
  "id": 333,
  "chat_id": 222,
  "sender_id": 0,
  "body": "Hello world",
  "kind": "string",
  "chat_title": "string",
  "sender_first_name": "string",
  "sender_last_name": "string",
  "sender_icon_url": "string",
  "sent_at": "2024-01-15T09:30:00Z",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Fragment

Reusable content fragments and related operations.

GET/fragments

Get fragments

Get all fragments.

200OKArray<object>

Fragment response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/fragments'
const response = await fetch('https://api.mytommy.com/v1/fragments', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/fragments')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "team_id": 0,
    "addons_install_id": 0,
    "kind": "string",
    "name": "Example Name",
    "data": {},
    "start_at": "2024-01-15T09:30:00Z",
    "end_at": "2024-01-15T09:30:00Z",
    "parent_id": 0,
    "resource_id": 0,
    "resource_type": "string",
    "attachments": [
      {
        "signed_id": "string",
        "content_type": "string",
        "filename": "string",
        "url": "string"
      }
    ]
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/fragments

Create an fragment

Create an fragment

application/jsonrequired

FragmentInput request

Object for creating or updating an Fragment.

kindstring
namestring

Display name

datastring
timestring (date-time)
parent_idinteger (int64)
attachmentsArray<string>

Object for creating or updating an Attachment.

201Createdobject

Fragment response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/fragments' \
  -H 'Content-Type: application/json' \
  -d '{
  "kind": "string",
  "name": "Example Name",
  "data": "string",
  "time": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "attachments": [
    "<binary>"
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/fragments', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "kind": "string",
  "name": "Example Name",
  "data": "string",
  "time": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "attachments": [
    "<binary>"
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "kind": "string",
  "name": "Example Name",
  "data": "string",
  "time": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "attachments": [
    "<binary>"
  ]
}

response = requests.post('https://api.mytommy.com/v1/fragments', json=payload)
data = response.json()
Request Body
{
  "kind": "string",
  "name": "Example Name",
  "data": "string",
  "time": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "attachments": [
    "<binary>"
  ]
}
201Created
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "addons_install_id": 0,
  "kind": "string",
  "name": "Example Name",
  "data": {},
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "resource_id": 0,
  "resource_type": "string",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/fragments/{id}

Get an fragment

Get an fragment object.

idinteger (int64)requiredpath

Fragment id

200OKobject

Fragment response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/fragments/{id}'
const response = await fetch('https://api.mytommy.com/v1/fragments/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/fragments/{id}')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "addons_install_id": 0,
  "kind": "string",
  "name": "Example Name",
  "data": {},
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "resource_id": 0,
  "resource_type": "string",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/fragments/{id}

Update an fragment

Update an fragment object.

application/jsonrequired

FragmentInput request

Object for creating or updating an Fragment.

kindstring
namestring

Display name

datastring
timestring (date-time)
parent_idinteger (int64)
attachmentsArray<string>

Object for creating or updating an Attachment.

idinteger (int64)requiredpath

Fragment id

200OKobject

Fragment response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/fragments/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "kind": "string",
  "name": "Example Name",
  "data": "string",
  "time": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "attachments": [
    "<binary>"
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/fragments/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "kind": "string",
  "name": "Example Name",
  "data": "string",
  "time": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "attachments": [
    "<binary>"
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "kind": "string",
  "name": "Example Name",
  "data": "string",
  "time": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "attachments": [
    "<binary>"
  ]
}

response = requests.put('https://api.mytommy.com/v1/fragments/{id}', json=payload)
data = response.json()
Request Body
{
  "kind": "string",
  "name": "Example Name",
  "data": "string",
  "time": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "attachments": [
    "<binary>"
  ]
}
200OK
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "addons_install_id": 0,
  "kind": "string",
  "name": "Example Name",
  "data": {},
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "resource_id": 0,
  "resource_type": "string",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/fragments/{id}

Delete an fragment

Delete an fragment object.

idinteger (int64)requiredpath

Fragment id

200OKobject

Fragment response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/fragments/{id}'
const response = await fetch('https://api.mytommy.com/v1/fragments/{id}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/fragments/{id}')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "addons_install_id": 0,
  "kind": "string",
  "name": "Example Name",
  "data": {},
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "resource_id": 0,
  "resource_type": "string",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Invitation

Create, accept, decline, and manage invitations.

GET/invitations

Get all invitations associated with the current account

Get all invitations associated with the current account.

200OKArray<object & any>

Invitation response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/invitations'
const response = await fetch('https://api.mytommy.com/v1/invitations', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/invitations')
data = response.json()
200OK
[
  {
    "friend_id": 0,
    "invitee_id": 0,
    "invitee_type": "string",
    "message": "string",
    "user_id": 0,
    "team_id": 0,
    "inviter": {
      "id": 111,
      "type": "string",
      "user_id": 0,
      "team_id": 0,
      "name": "Acme Corp",
      "contact_name": "string",
      "kind": "string",
      "icon_url": "string",
      "mobile": "string",
      "notification_count": 0
    },
    "invitee": {
      "id": 111,
      "type": "string",
      "user_id": 0,
      "team_id": 0,
      "name": "Acme Corp",
      "contact_name": "string",
      "kind": "string",
      "icon_url": "string",
      "mobile": "string",
      "notification_count": 0
    },
    "contact": {
      "friend_id": 0,
      "favorite": true,
      "mute": true,
      "personal": true,
      "roles": [
        "string"
      ],
      "locations": [
        "string"
      ],
      "tags": [
        "string"
      ],
      "id": 0,
      "type": "string",
      "first_name": "string",
      "last_name": "string",
      "icon_url": "string",
      "email": "string",
      "mobile": "string",
      "status": "string",
      "member": true,
      "last_online_at": "2024-01-15T09:30:00Z"
    },
    "token": "string",
    "status": "string",
    "link": "string",
    "times_sent": 0,
    "sent_at": "2024-01-15T09:30:00Z",
    "accepted_at": "2024-01-15T09:30:00Z"
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/invitations

Create invitation

Create an invitation link for a member or non-menmer to connect with the current user or team.

application/jsonrequired

InvitationInput request

Object for creating an Invitation.

friend_idinteger (int64)
invitee_idinteger (int64)
invitee_typestring
messagestring
201Createdobject & any

Invitation response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/invitations' \
  -H 'Content-Type: application/json' \
  -d '{
  "friend_id": 0,
  "invitee_id": 0,
  "invitee_type": "string",
  "message": "string"
}'
const response = await fetch('https://api.mytommy.com/v1/invitations', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "friend_id": 0,
  "invitee_id": 0,
  "invitee_type": "string",
  "message": "string"
}),
});

const data = await response.json();
import requests

payload = {
  "friend_id": 0,
  "invitee_id": 0,
  "invitee_type": "string",
  "message": "string"
}

response = requests.post('https://api.mytommy.com/v1/invitations', json=payload)
data = response.json()
Request Body
{
  "friend_id": 0,
  "invitee_id": 0,
  "invitee_type": "string",
  "message": "string"
}
201Created
{
  "friend_id": 0,
  "invitee_id": 0,
  "invitee_type": "string",
  "message": "string",
  "user_id": 0,
  "team_id": 0,
  "inviter": {
    "id": 111,
    "type": "string",
    "user_id": 0,
    "team_id": 0,
    "name": "Acme Corp",
    "contact_name": "string",
    "kind": "string",
    "icon_url": "string",
    "mobile": "string",
    "notification_count": 0
  },
  "invitee": {
    "id": 111,
    "type": "string",
    "user_id": 0,
    "team_id": 0,
    "name": "Acme Corp",
    "contact_name": "string",
    "kind": "string",
    "icon_url": "string",
    "mobile": "string",
    "notification_count": 0
  },
  "contact": {
    "friend_id": 0,
    "favorite": true,
    "mute": true,
    "personal": true,
    "roles": [
      "string"
    ],
    "locations": [
      "string"
    ],
    "tags": [
      "string"
    ],
    "id": 0,
    "type": "string",
    "first_name": "string",
    "last_name": "string",
    "icon_url": "string",
    "email": "string",
    "mobile": "string",
    "status": "string",
    "member": true,
    "last_online_at": "2024-01-15T09:30:00Z"
  },
  "token": "string",
  "status": "string",
  "link": "string",
  "times_sent": 0,
  "sent_at": "2024-01-15T09:30:00Z",
  "accepted_at": "2024-01-15T09:30:00Z"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/invitations/{token}

Get invitations

Get an invitations object by token.

tokeninteger (int64)requiredpath

Invitation token

200OKobject & any

Invitation response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/invitations/{token}'
const response = await fetch('https://api.mytommy.com/v1/invitations/{token}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/invitations/{token}')
data = response.json()
200OK
{
  "friend_id": 0,
  "invitee_id": 0,
  "invitee_type": "string",
  "message": "string",
  "user_id": 0,
  "team_id": 0,
  "inviter": {
    "id": 111,
    "type": "string",
    "user_id": 0,
    "team_id": 0,
    "name": "Acme Corp",
    "contact_name": "string",
    "kind": "string",
    "icon_url": "string",
    "mobile": "string",
    "notification_count": 0
  },
  "invitee": {
    "id": 111,
    "type": "string",
    "user_id": 0,
    "team_id": 0,
    "name": "Acme Corp",
    "contact_name": "string",
    "kind": "string",
    "icon_url": "string",
    "mobile": "string",
    "notification_count": 0
  },
  "contact": {
    "friend_id": 0,
    "favorite": true,
    "mute": true,
    "personal": true,
    "roles": [
      "string"
    ],
    "locations": [
      "string"
    ],
    "tags": [
      "string"
    ],
    "id": 0,
    "type": "string",
    "first_name": "string",
    "last_name": "string",
    "icon_url": "string",
    "email": "string",
    "mobile": "string",
    "status": "string",
    "member": true,
    "last_online_at": "2024-01-15T09:30:00Z"
  },
  "token": "string",
  "status": "string",
  "link": "string",
  "times_sent": 0,
  "sent_at": "2024-01-15T09:30:00Z",
  "accepted_at": "2024-01-15T09:30:00Z"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/invitations/{token}/accept

Accept an invitation

Accept an invitation belonging to the given token.

tokenstringrequiredpath

Invitation token

200OKobject & any

Invitation response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/invitations/{token}/accept'
const response = await fetch('https://api.mytommy.com/v1/invitations/{token}/accept', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/invitations/{token}/accept')
data = response.json()
200OK
{
  "friend_id": 0,
  "invitee_id": 0,
  "invitee_type": "string",
  "message": "string",
  "user_id": 0,
  "team_id": 0,
  "inviter": {
    "id": 111,
    "type": "string",
    "user_id": 0,
    "team_id": 0,
    "name": "Acme Corp",
    "contact_name": "string",
    "kind": "string",
    "icon_url": "string",
    "mobile": "string",
    "notification_count": 0
  },
  "invitee": {
    "id": 111,
    "type": "string",
    "user_id": 0,
    "team_id": 0,
    "name": "Acme Corp",
    "contact_name": "string",
    "kind": "string",
    "icon_url": "string",
    "mobile": "string",
    "notification_count": 0
  },
  "contact": {
    "friend_id": 0,
    "favorite": true,
    "mute": true,
    "personal": true,
    "roles": [
      "string"
    ],
    "locations": [
      "string"
    ],
    "tags": [
      "string"
    ],
    "id": 0,
    "type": "string",
    "first_name": "string",
    "last_name": "string",
    "icon_url": "string",
    "email": "string",
    "mobile": "string",
    "status": "string",
    "member": true,
    "last_online_at": "2024-01-15T09:30:00Z"
  },
  "token": "string",
  "status": "string",
  "link": "string",
  "times_sent": 0,
  "sent_at": "2024-01-15T09:30:00Z",
  "accepted_at": "2024-01-15T09:30:00Z"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/invitations/{token}/decline

Reject an invitation

Reject an invitation belonging to the given token.

tokenstringrequiredpath

Invitation token

200OKobject & any

Invitation response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/invitations/{token}/decline'
const response = await fetch('https://api.mytommy.com/v1/invitations/{token}/decline', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/invitations/{token}/decline')
data = response.json()
200OK
{
  "friend_id": 0,
  "invitee_id": 0,
  "invitee_type": "string",
  "message": "string",
  "user_id": 0,
  "team_id": 0,
  "inviter": {
    "id": 111,
    "type": "string",
    "user_id": 0,
    "team_id": 0,
    "name": "Acme Corp",
    "contact_name": "string",
    "kind": "string",
    "icon_url": "string",
    "mobile": "string",
    "notification_count": 0
  },
  "invitee": {
    "id": 111,
    "type": "string",
    "user_id": 0,
    "team_id": 0,
    "name": "Acme Corp",
    "contact_name": "string",
    "kind": "string",
    "icon_url": "string",
    "mobile": "string",
    "notification_count": 0
  },
  "contact": {
    "friend_id": 0,
    "favorite": true,
    "mute": true,
    "personal": true,
    "roles": [
      "string"
    ],
    "locations": [
      "string"
    ],
    "tags": [
      "string"
    ],
    "id": 0,
    "type": "string",
    "first_name": "string",
    "last_name": "string",
    "icon_url": "string",
    "email": "string",
    "mobile": "string",
    "status": "string",
    "member": true,
    "last_online_at": "2024-01-15T09:30:00Z"
  },
  "token": "string",
  "status": "string",
  "link": "string",
  "times_sent": 0,
  "sent_at": "2024-01-15T09:30:00Z",
  "accepted_at": "2024-01-15T09:30:00Z"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Event

List and manage events and attendances.

GET/events

Get events

Get all events.

200OKArray<object & any>

Event response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/events'
const response = await fetch('https://api.mytommy.com/v1/events', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/events')
data = response.json()
200OK
[
  {
    "kind": "string",
    "title": "Example Title",
    "details": "string",
    "location_name": "string",
    "color": "string",
    "start_at": "2024-01-15T09:30:00Z",
    "end_at": "2024-01-15T09:30:00Z",
    "id": 0,
    "user_id": 0,
    "team_id": 0,
    "addons_install_id": 0
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/events

Create an event

Create an event

application/jsonrequired

EventInput request

Object for creating or updating an Event.

kindstring
titlestring

Human-friendly title

detailsstring
location_namestring
colorstring
start_atstring (date-time)
end_atstring (date-time)
201Createdobject & any

Event response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

422Unprocessable Entityany

Validation error

500Internal Server Errorany

Internal error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/events' \
  -H 'Content-Type: application/json' \
  -d '{
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z"
}'
const response = await fetch('https://api.mytommy.com/v1/events', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z"
}),
});

const data = await response.json();
import requests

payload = {
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z"
}

response = requests.post('https://api.mytommy.com/v1/events', json=payload)
data = response.json()
Request Body
{
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z"
}
201Created
{
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "addons_install_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
422Unprocessable Entity
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/events/{id}

Get an event

Get an event object.

idinteger (int64)requiredpath

Event id

200OKobject & any

Event response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/events/{id}'
const response = await fetch('https://api.mytommy.com/v1/events/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/events/{id}')
data = response.json()
200OK
{
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "addons_install_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/events/{id}

Update an event

Update an event object.

application/jsonrequired

EventInput request

Object for creating or updating an Event.

kindstring
titlestring

Human-friendly title

detailsstring
location_namestring
colorstring
start_atstring (date-time)
end_atstring (date-time)
idinteger (int64)requiredpath

Event id

200OKobject & any

Event response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

422Unprocessable Entityany

Validation error

500Internal Server Errorany

Internal error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/events/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z"
}'
const response = await fetch('https://api.mytommy.com/v1/events/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z"
}),
});

const data = await response.json();
import requests

payload = {
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z"
}

response = requests.put('https://api.mytommy.com/v1/events/{id}', json=payload)
data = response.json()
Request Body
{
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z"
}
200OK
{
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "addons_install_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
422Unprocessable Entity
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/events/{id}

Delete an event

Delete an event object.

idinteger (int64)requiredpath

Event id

200OKobject & any

Event response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/events/{id}'
const response = await fetch('https://api.mytommy.com/v1/events/{id}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/events/{id}')
data = response.json()
200OK
{
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "addons_install_id": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Session

Authentication and session-related endpoints.

POST/sessions

Login

This method handles users who are \ authenticating with an email or phone, and password combination.

application/jsonrequired

UserCredentials request

User login credentials

loginstringrequired
passwordstringrequired
200OKobject

User response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/sessions' \
  -H 'Content-Type: application/json' \
  -d '{
  "login": "string",
  "password": "string"
}'
const response = await fetch('https://api.mytommy.com/v1/sessions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "login": "string",
  "password": "string"
}),
});

const data = await response.json();
import requests

payload = {
  "login": "string",
  "password": "string"
}

response = requests.post('https://api.mytommy.com/v1/sessions', json=payload)
data = response.json()
Request Body
{
  "login": "string",
  "password": "string"
}
200OK
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/sessions

Logout

This method destroys the current user session.

200OK

Success response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/sessions'
const response = await fetch('https://api.mytommy.com/v1/sessions', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/sessions')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Geolocation

Geo services such as reverse geocoding and lookups.

Wallet

Payments, balances, and transactions.

GET/wallet

Get wallet

Get wallet owned by the current account.

200OKArray<object>

Wallet response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/wallet'
const response = await fetch('https://api.mytommy.com/v1/wallet', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/wallet')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "balance": 129900,
    "credit_limit": 0,
    "enable_notifications": true,
    "show_balance": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/wallet

Update a wallet

Update a wallet.

application/jsonrequired

WalletInput request

Object for updating a Wallet

enable_notificationsboolean
show_balanceboolean
200OKobject

Wallet response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/wallet' \
  -H 'Content-Type: application/json' \
  -d '{
  "enable_notifications": true,
  "show_balance": true
}'
const response = await fetch('https://api.mytommy.com/v1/wallet', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "enable_notifications": true,
  "show_balance": true
}),
});

const data = await response.json();
import requests

payload = {
  "enable_notifications": True,
  "show_balance": True
}

response = requests.put('https://api.mytommy.com/v1/wallet', json=payload)
data = response.json()
Request Body
{
  "enable_notifications": true,
  "show_balance": true
}
200OK
{
  "id": 123,
  "user_id": 0,
  "balance": 129900,
  "credit_limit": 0,
  "enable_notifications": true,
  "show_balance": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/wallet/cards

Get wallet cards

Get wallet cards connected to the current account.

200OKArray<object>

WalletCard response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/wallet/cards'
const response = await fetch('https://api.mytommy.com/v1/wallet/cards', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/wallet/cards')
data = response.json()
200OK
[
  {
    "id": 123,
    "wallet_id": 0,
    "wallet_account_id": 0,
    "name": "Example Name",
    "icon_url": "string",
    "balance": 0,
    "credit_limit": 0,
    "active": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/wallet/accounts

Get wallet accounts

Get wallet accounts connected to the current account.

200OKArray<object>

WalletAccount response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/wallet/accounts'
const response = await fetch('https://api.mytommy.com/v1/wallet/accounts', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/wallet/accounts')
data = response.json()
200OK
[
  {
    "id": 123,
    "team_id": 0,
    "name": "Example Name",
    "card_name": "string",
    "phone": "string",
    "vendor_reference": "string",
    "icon_url": "string",
    "description": "Short description",
    "enable_chat": true,
    "enable_integrations": true,
    "active": true
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/wallet/accounts/{id}

Get a wallet account

Get a wallet account by ID.

idinteger (int64)requiredpath

WalletAccount id

200OKobject

WalletAccount response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/wallet/accounts/{id}'
const response = await fetch('https://api.mytommy.com/v1/wallet/accounts/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/wallet/accounts/{id}')
data = response.json()
200OK
{
  "id": 123,
  "team_id": 0,
  "name": "Example Name",
  "card_name": "string",
  "phone": "string",
  "vendor_reference": "string",
  "icon_url": "string",
  "description": "Short description",
  "enable_chat": true,
  "enable_integrations": true,
  "active": true
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/wallet/transactions

Get wallet transactions

Get wallet transactions belonging to the current account.

200OKArray<object>

WalletTransaction response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/wallet/transactions'
const response = await fetch('https://api.mytommy.com/v1/wallet/transactions', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/wallet/transactions')
data = response.json()
200OK
[
  {
    "wallet_card_id": 0,
    "wallet_account_id": 0,
    "addon_id": 0,
    "addon_install_id": 0,
    "payee_name": "string",
    "icon_url": "string",
    "invoice_url": "string",
    "status": "active",
    "amount": 0,
    "vendor_reference": "string"
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/wallet/transactions

Create a wallet transaction

Create a wallet transaction.

application/jsonrequired

WalletTransactionInput request

Object for creating or updating a Wallet Transaction

wallet_card_idinteger (int64)required
wallet_account_idinteger (int64)required
addon_idinteger (int64)
addon_install_idinteger (int64)
payee_namestring
amountnumber (double)required
201Createdobject

WalletTransaction response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/wallet/transactions' \
  -H 'Content-Type: application/json' \
  -d '{
  "wallet_card_id": 0,
  "wallet_account_id": 0,
  "addon_id": 0,
  "addon_install_id": 0,
  "payee_name": "string",
  "amount": 0
}'
const response = await fetch('https://api.mytommy.com/v1/wallet/transactions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "wallet_card_id": 0,
  "wallet_account_id": 0,
  "addon_id": 0,
  "addon_install_id": 0,
  "payee_name": "string",
  "amount": 0
}),
});

const data = await response.json();
import requests

payload = {
  "wallet_card_id": 0,
  "wallet_account_id": 0,
  "addon_id": 0,
  "addon_install_id": 0,
  "payee_name": "string",
  "amount": 0
}

response = requests.post('https://api.mytommy.com/v1/wallet/transactions', json=payload)
data = response.json()
Request Body
{
  "wallet_card_id": 0,
  "wallet_account_id": 0,
  "addon_id": 0,
  "addon_install_id": 0,
  "payee_name": "string",
  "amount": 0
}
201Created
{
  "wallet_card_id": 0,
  "wallet_account_id": 0,
  "addon_id": 0,
  "addon_install_id": 0,
  "payee_name": "string",
  "icon_url": "string",
  "invoice_url": "string",
  "status": "active",
  "amount": 0,
  "vendor_reference": "string"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/wallet/transactions/{id}

Get a wallet transaction

Get a wallet transaction by ID.

idinteger (int64)requiredpath

WalletTransaction id

200OKobject

WalletTransaction response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/wallet/transactions/{id}'
const response = await fetch('https://api.mytommy.com/v1/wallet/transactions/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/wallet/transactions/{id}')
data = response.json()
200OK
{
  "wallet_card_id": 0,
  "wallet_account_id": 0,
  "addon_id": 0,
  "addon_install_id": 0,
  "payee_name": "string",
  "icon_url": "string",
  "invoice_url": "string",
  "status": "active",
  "amount": 0,
  "vendor_reference": "string"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/wallet/transactions/{id}/refund

Refund a wallet transaction

Refund a wallet transaction by ID.

idinteger (int64)requiredpath

WalletTransaction id

200OKobject

WalletTransaction response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

422Unprocessable Entityany

Validation error

500Internal Server Errorany

Internal error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/wallet/transactions/{id}/refund'
const response = await fetch('https://api.mytommy.com/v1/wallet/transactions/{id}/refund', {
  method: 'POST',
});

const data = await response.json();
import requests

response = requests.post('https://api.mytommy.com/v1/wallet/transactions/{id}/refund')
data = response.json()
200OK
{
  "wallet_card_id": 0,
  "wallet_account_id": 0,
  "addon_id": 0,
  "addon_install_id": 0,
  "payee_name": "string",
  "icon_url": "string",
  "invoice_url": "string",
  "status": "active",
  "amount": 0,
  "vendor_reference": "string"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
422Unprocessable Entity
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Vendor

Vendor catalogs, products, and orders.

GET/vendors/{vendor_team_id}/orders

Get vendor orders

Get all vendor orders.

vendor_team_idstringrequiredpath

Team team_id

200OKArray<object>

VendorOrder response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders'
const response = await fetch('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders')
data = response.json()
200OK
[
  {
    "id": 123,
    "user_id": 0,
    "team_id": 0,
    "assignee_id": 0,
    "event_id": 0,
    "wallet_transaction_id": 0,
    "workforce_shift_id": 0,
    "coupon_ids": [
      0
    ],
    "name": "Example Name",
    "status": "active",
    "canceled": true,
    "data": {}
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/vendors/{vendor_team_id}/orders

Create an vendor order

Create an vendor order

application/jsonrequired

VendorOrderInput request

Object for creating or updating an VendorOrder.

assignee_idinteger (int64)
assignee_team_idinteger (int64)
namestring

Display name

statusstring

Current status

canceledboolean
dataobject
event_attributesobject

Object for creating or updating an Event.

Object for creating or updating an Event.

kindstring
titlestring

Human-friendly title

detailsstring
location_namestring
colorstring
start_atstring (date-time)
end_atstring (date-time)
coupon_idsArray<integer>

Array coupon IDs.

order_items_attributesArray<object>

Object for creating or updating an VendorOrderItem.

orderable_idinteger (int64)
orderable_typestring
quantityinteger (int64)
vendor_team_idstringrequiredpath

Team team_id

201Createdobject

VendorOrder response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

422Unprocessable Entityany

Validation error

500Internal Server Errorany

Internal error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders' \
  -H 'Content-Type: application/json' \
  -d '{
  "assignee_id": 0,
  "assignee_team_id": 0,
  "name": "Example Name",
  "status": "active",
  "canceled": true,
  "data": {},
  "event_attributes": {
    "kind": "string",
    "title": "Example Title",
    "details": "string",
    "location_name": "string",
    "color": "string",
    "start_at": "2024-01-15T09:30:00Z",
    "end_at": "2024-01-15T09:30:00Z"
  },
  "coupon_ids": [
    0
  ],
  "order_items_attributes": [
    {
      "orderable_id": 0,
      "orderable_type": "string",
      "quantity": 0
    }
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "assignee_id": 0,
  "assignee_team_id": 0,
  "name": "Example Name",
  "status": "active",
  "canceled": true,
  "data": {},
  "event_attributes": {
    "kind": "string",
    "title": "Example Title",
    "details": "string",
    "location_name": "string",
    "color": "string",
    "start_at": "2024-01-15T09:30:00Z",
    "end_at": "2024-01-15T09:30:00Z"
  },
  "coupon_ids": [
    0
  ],
  "order_items_attributes": [
    {
      "orderable_id": 0,
      "orderable_type": "string",
      "quantity": 0
    }
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "assignee_id": 0,
  "assignee_team_id": 0,
  "name": "Example Name",
  "status": "active",
  "canceled": True,
  "data": {},
  "event_attributes": {
    "kind": "string",
    "title": "Example Title",
    "details": "string",
    "location_name": "string",
    "color": "string",
    "start_at": "2024-01-15T09:30:00Z",
    "end_at": "2024-01-15T09:30:00Z"
  },
  "coupon_ids": [
    0
  ],
  "order_items_attributes": [
    {
      "orderable_id": 0,
      "orderable_type": "string",
      "quantity": 0
    }
  ]
}

response = requests.post('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders', json=payload)
data = response.json()
Request Body
{
  "assignee_id": 0,
  "assignee_team_id": 0,
  "name": "Example Name",
  "status": "active",
  "canceled": true,
  "data": {},
  "event_attributes": {
    "kind": "string",
    "title": "Example Title",
    "details": "string",
    "location_name": "string",
    "color": "string",
    "start_at": "2024-01-15T09:30:00Z",
    "end_at": "2024-01-15T09:30:00Z"
  },
  "coupon_ids": [
    0
  ],
  "order_items_attributes": [
    {
      "orderable_id": 0,
      "orderable_type": "string",
      "quantity": 0
    }
  ]
}
201Created
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "assignee_id": 0,
  "event_id": 0,
  "wallet_transaction_id": 0,
  "workforce_shift_id": 0,
  "coupon_ids": [
    0
  ],
  "name": "Example Name",
  "status": "active",
  "canceled": true,
  "data": {}
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
422Unprocessable Entity
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/vendors/{vendor_team_id}/orders/{id}

Get an vendor order

Get an vendor order object.

vendor_team_idstringrequiredpath

Team team_id

idinteger (int64)requiredpath

VendorOrder id

200OKobject

VendorOrder response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}'
const response = await fetch('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "assignee_id": 0,
  "event_id": 0,
  "wallet_transaction_id": 0,
  "workforce_shift_id": 0,
  "coupon_ids": [
    0
  ],
  "name": "Example Name",
  "status": "active",
  "canceled": true,
  "data": {}
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
PUT/vendors/{vendor_team_id}/orders/{id}

Update an vendor order

Update an vendor order object.

application/jsonrequired

VendorOrderInput request

Object for creating or updating an VendorOrder.

assignee_idinteger (int64)
assignee_team_idinteger (int64)
namestring

Display name

statusstring

Current status

canceledboolean
dataobject
event_attributesobject

Object for creating or updating an Event.

Object for creating or updating an Event.

kindstring
titlestring

Human-friendly title

detailsstring
location_namestring
colorstring
start_atstring (date-time)
end_atstring (date-time)
coupon_idsArray<integer>

Array coupon IDs.

order_items_attributesArray<object>

Object for creating or updating an VendorOrderItem.

orderable_idinteger (int64)
orderable_typestring
quantityinteger (int64)
vendor_team_idstringrequiredpath

Team team_id

idinteger (int64)requiredpath

VendorOrder id

200OKobject

VendorOrder response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

422Unprocessable Entityany

Validation error

500Internal Server Errorany

Internal error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X PUT 'https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
  "assignee_id": 0,
  "assignee_team_id": 0,
  "name": "Example Name",
  "status": "active",
  "canceled": true,
  "data": {},
  "event_attributes": {
    "kind": "string",
    "title": "Example Title",
    "details": "string",
    "location_name": "string",
    "color": "string",
    "start_at": "2024-01-15T09:30:00Z",
    "end_at": "2024-01-15T09:30:00Z"
  },
  "coupon_ids": [
    0
  ],
  "order_items_attributes": [
    {
      "orderable_id": 0,
      "orderable_type": "string",
      "quantity": 0
    }
  ]
}'
const response = await fetch('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "assignee_id": 0,
  "assignee_team_id": 0,
  "name": "Example Name",
  "status": "active",
  "canceled": true,
  "data": {},
  "event_attributes": {
    "kind": "string",
    "title": "Example Title",
    "details": "string",
    "location_name": "string",
    "color": "string",
    "start_at": "2024-01-15T09:30:00Z",
    "end_at": "2024-01-15T09:30:00Z"
  },
  "coupon_ids": [
    0
  ],
  "order_items_attributes": [
    {
      "orderable_id": 0,
      "orderable_type": "string",
      "quantity": 0
    }
  ]
}),
});

const data = await response.json();
import requests

payload = {
  "assignee_id": 0,
  "assignee_team_id": 0,
  "name": "Example Name",
  "status": "active",
  "canceled": True,
  "data": {},
  "event_attributes": {
    "kind": "string",
    "title": "Example Title",
    "details": "string",
    "location_name": "string",
    "color": "string",
    "start_at": "2024-01-15T09:30:00Z",
    "end_at": "2024-01-15T09:30:00Z"
  },
  "coupon_ids": [
    0
  ],
  "order_items_attributes": [
    {
      "orderable_id": 0,
      "orderable_type": "string",
      "quantity": 0
    }
  ]
}

response = requests.put('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}', json=payload)
data = response.json()
Request Body
{
  "assignee_id": 0,
  "assignee_team_id": 0,
  "name": "Example Name",
  "status": "active",
  "canceled": true,
  "data": {},
  "event_attributes": {
    "kind": "string",
    "title": "Example Title",
    "details": "string",
    "location_name": "string",
    "color": "string",
    "start_at": "2024-01-15T09:30:00Z",
    "end_at": "2024-01-15T09:30:00Z"
  },
  "coupon_ids": [
    0
  ],
  "order_items_attributes": [
    {
      "orderable_id": 0,
      "orderable_type": "string",
      "quantity": 0
    }
  ]
}
200OK
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "assignee_id": 0,
  "event_id": 0,
  "wallet_transaction_id": 0,
  "workforce_shift_id": 0,
  "coupon_ids": [
    0
  ],
  "name": "Example Name",
  "status": "active",
  "canceled": true,
  "data": {}
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
422Unprocessable Entity
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/vendors/{vendor_team_id}/orders/{id}

Cancel an vendor order

Cancel an vendor order object.

vendor_team_idstringrequiredpath

Team team_id

idinteger (int64)requiredpath

VendorOrder id

200OKobject

VendorOrder response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}'
const response = await fetch('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}')
data = response.json()
200OK
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "assignee_id": 0,
  "event_id": 0,
  "wallet_transaction_id": 0,
  "workforce_shift_id": 0,
  "coupon_ids": [
    0
  ],
  "name": "Example Name",
  "status": "active",
  "canceled": true,
  "data": {}
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Device

Device registration and device actions.

POST/devices

Register a device

Register a mobile device for push notifications.

application/jsonrequired

Device request

User device

idinteger (int64)

Unique device identifier

user_idinteger (int64)required
platformstringiosandroidrequired

Device platform type

environmentstringdevelopmentproduction

Device build environment

uuidstringrequired

Device UUID

tokenstring

Device token

200OKobject

Device response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/devices' \
  -H 'Content-Type: application/json' \
  -d '{
  "id": 444,
  "user_id": 0,
  "platform": "ios",
  "environment": "development",
  "uuid": "string",
  "token": "xxxx-yyyy-zzzz"
}'
const response = await fetch('https://api.mytommy.com/v1/devices', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "id": 444,
  "user_id": 0,
  "platform": "ios",
  "environment": "development",
  "uuid": "string",
  "token": "xxxx-yyyy-zzzz"
}),
});

const data = await response.json();
import requests

payload = {
  "id": 444,
  "user_id": 0,
  "platform": "ios",
  "environment": "development",
  "uuid": "string",
  "token": "xxxx-yyyy-zzzz"
}

response = requests.post('https://api.mytommy.com/v1/devices', json=payload)
data = response.json()
Request Body
{
  "id": 444,
  "user_id": 0,
  "platform": "ios",
  "environment": "development",
  "uuid": "string",
  "token": "xxxx-yyyy-zzzz"
}
200OK
{
  "id": 444,
  "user_id": 0,
  "platform": "ios",
  "environment": "development",
  "uuid": "string",
  "token": "xxxx-yyyy-zzzz"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/devices/{id}

Delete a device

Delete a mobile device.

idinteger (int64)requiredpath

Device ID

200OK

Success response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/devices/{id}'
const response = await fetch('https://api.mytommy.com/v1/devices/{id}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/devices/{id}')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Tag

Tagging resources for organization.

GET/tags

Get tags

Get all tags.

200OKArray<object>

Tag response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/tags'
const response = await fetch('https://api.mytommy.com/v1/tags', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/tags')
data = response.json()
200OK
[
  {
    "id": 555,
    "name": "priority",
    "taggings_count": 0
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
POST/tags

Create a tag

Create a tag

application/jsonrequired

TaggingInput request

Object for creating a Tagging.

contextstringmemberstagsroleslocations

Tagging type

namestring

Display name

201Created

Null response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

422Unprocessable Entityany

Validation error

500Internal Server Errorany

Internal error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X POST 'https://api.mytommy.com/v1/tags' \
  -H 'Content-Type: application/json' \
  -d '{
  "context": "members",
  "name": "Example Name"
}'
const response = await fetch('https://api.mytommy.com/v1/tags', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "context": "members",
  "name": "Example Name"
}),
});

const data = await response.json();
import requests

payload = {
  "context": "members",
  "name": "Example Name"
}

response = requests.post('https://api.mytommy.com/v1/tags', json=payload)
data = response.json()
Request Body
{
  "context": "members",
  "name": "Example Name"
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
422Unprocessable Entity
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/tags/{id}

Get a tag

Get a tag object.

idinteger (int64)requiredpath

Tag id

200OKobject

Tag response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/tags/{id}'
const response = await fetch('https://api.mytommy.com/v1/tags/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/tags/{id}')
data = response.json()
200OK
{
  "id": 555,
  "name": "priority",
  "taggings_count": 0
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
DELETE/tags/{id}

Delete a tag

Delete a tag object.

idinteger (int64)requiredpath

Tag id

200OK

Null response

401Unauthorizedany

Unauthorized

403Forbiddenany

Forbidden

500Internal Server Errorany

Internal error

defaultany

Unexpected error

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X DELETE 'https://api.mytommy.com/v1/tags/{id}'
const response = await fetch('https://api.mytommy.com/v1/tags/{id}', {
  method: 'DELETE',
});

const data = await response.json();
import requests

response = requests.delete('https://api.mytommy.com/v1/tags/{id}')
data = response.json()
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
403Forbidden
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
500Internal Server Error
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
default
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Syncs

Synchronization endpoints and statuses.

GET/syncs

List syncs

Get a paginated list of sync operations for the current team.

pageinteger (int32)query

Page number for pagination

perinteger (int32)query

Number of items per page

200OKArray<object>

Syncs retrieved successfully

401Unauthorizedany

Unauthorized

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/syncs'
const response = await fetch('https://api.mytommy.com/v1/syncs', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/syncs')
data = response.json()
200OK
[
  {
    "id": 123,
    "team_id": 0,
    "user_id": 0,
    "integration_id": 0,
    "status": "active",
    "direction": "import",
    "item_type": "string",
    "progress_percentage": 0,
    "total_items": 0,
    "success_items": 0,
    "failed_items": 0,
    "options": {},
    "message": "string",
    "started_at": "2024-01-15T09:30:00Z",
    "ended_at": "2024-01-15T09:30:00Z",
    "created_at": "2025-01-01 12:00:00+00:00",
    "updated_at": "2025-01-02 12:00:00+00:00",
    "user": {
      "id": 0,
      "name": "string",
      "email": "string"
    }
  }
]
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
GET/syncs/{id}

Get sync details

Get detailed information about a specific sync operation.

idinteger (int64)requiredpath

ID of the sync to retrieve

200OKobject

Sync details retrieved successfully

401Unauthorizedany

Unauthorized

404Not Foundany

Not Found

api_keyapiKey in header

Provide your API key via the api_key header.

curl -X GET 'https://api.mytommy.com/v1/syncs/{id}'
const response = await fetch('https://api.mytommy.com/v1/syncs/{id}', {
  method: 'GET',
});

const data = await response.json();
import requests

response = requests.get('https://api.mytommy.com/v1/syncs/{id}')
data = response.json()
200OK
{
  "id": 123,
  "team_id": 0,
  "user_id": 0,
  "integration_id": 0,
  "status": "active",
  "direction": "import",
  "item_type": "string",
  "progress_percentage": 0,
  "total_items": 0,
  "success_items": 0,
  "failed_items": 0,
  "options": {},
  "message": "string",
  "started_at": "2024-01-15T09:30:00Z",
  "ended_at": "2024-01-15T09:30:00Z",
  "created_at": "2025-01-01 12:00:00+00:00",
  "updated_at": "2025-01-02 12:00:00+00:00",
  "user": {
    "id": 0,
    "name": "string",
    "email": "string"
  }
}
401Unauthorized
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}
404Not Found
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

Models

Account

object

A representation of a Account

idinteger (int64)

Unique account identifier

typestring
user_idinteger (int64)
team_idinteger (int64)
namestring

Account display name

contact_namestring
kindstring
icon_urlstring
mobilestring
notification_countinteger (int64)
Example
{
  "id": 111,
  "type": "string",
  "user_id": 0,
  "team_id": 0,
  "name": "Acme Corp",
  "contact_name": "string",
  "kind": "string",
  "icon_url": "string",
  "mobile": "string",
  "notification_count": 0
}

AttachmentInput

string

Object for creating or updating an Attachment.

Example
"<binary>"

Attachment

object

Object that represents an Attachment.

signed_idstring
content_typestring
filenamestring
urlstring
Example
{
  "signed_id": "string",
  "content_type": "string",
  "filename": "string",
  "url": "string"
}

User

object

A representation of a User

idinteger (int64)

Unique user identifier

statusstring

Current account status

first_namestring

Given name

last_namestring

Family name

slugstring

URL-safe identifier

emailstring

Email address

mobilestring

Mobile phone number in E.164 format

dobstring

Date of birth (YYYY-MM-DD)

localestring

IETF language tag

icon_urlstring

Avatar image URL

Example
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png"
}

UserInput

object

A representation of a User

idinteger (int64)

Unique user identifier

statusstring

Current account status

first_namestring

Given name

last_namestring

Family name

slugstring

URL-safe identifier

emailstring

Email address

mobilestring

Mobile phone number in E.164 format

dobstring

Date of birth (YYYY-MM-DD)

localestring

IETF language tag

icon_urlstring

Avatar image URL

photostring (binary)
passwordstring
Example
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "photo": "<binary>",
  "password": "string"
}

UserID

object

User ID parameter

user_idinteger (int64)
Example
{
  "user_id": 0
}

Team

object

A representation of a Team

idinteger (int64)required

Unique team identifier

user_idinteger (int64)required

Owner user ID

namestringrequired

Team display name

photostring (binary)
icon_urlstring

Team icon URL

emailstring
phonestring
statusstring

Current status

slugstring
featuresobject

Feature flags enabled for the team

Feature flags enabled for the team

complianceboolean
timesheetsboolean
timeclockboolean
availabilityboolean
ordersboolean
clientsboolean
trainingboolean
leaveboolean
documentsboolean
schedulingboolean
ndisboolean
experimentalboolean
mileageboolean
Example
{
  "id": 9876,
  "user_id": 12345,
  "name": "Operations",
  "photo": "<binary>",
  "icon_url": "https://cdn.example.com/teams/ops.png",
  "email": "string",
  "phone": "string",
  "status": "active",
  "slug": "string",
  "features": {
    "compliance": true,
    "timesheets": true,
    "timeclock": true,
    "availability": true,
    "orders": true,
    "clients": true,
    "training": true,
    "leave": true,
    "documents": true,
    "scheduling": true,
    "ndis": true,
    "experimental": true,
    "mileage": true
  }
}

TeamFeatures

object

Feature flags enabled for the team

complianceboolean
timesheetsboolean
timeclockboolean
availabilityboolean
ordersboolean
clientsboolean
trainingboolean
leaveboolean
documentsboolean
schedulingboolean
ndisboolean
experimentalboolean
mileageboolean
Example
{
  "compliance": true,
  "timesheets": true,
  "timeclock": true,
  "availability": true,
  "orders": true,
  "clients": true,
  "training": true,
  "leave": true,
  "documents": true,
  "scheduling": true,
  "ndis": true,
  "experimental": true,
  "mileage": true
}

TeamInput

object

A representation of a Team

idinteger (int64)required

Unique team identifier

user_idinteger (int64)required

Owner user ID

namestringrequired

Team display name

photostring (binary)
icon_urlstring

Team icon URL

emailstring
phonestring
statusstring

Current status

slugstring
featuresobject

Feature flags enabled for the team

Feature flags enabled for the team

complianceboolean
timesheetsboolean
timeclockboolean
availabilityboolean
ordersboolean
clientsboolean
trainingboolean
leaveboolean
documentsboolean
schedulingboolean
ndisboolean
experimentalboolean
mileageboolean
Example
{
  "id": 9876,
  "user_id": 12345,
  "name": "Operations",
  "photo": "<binary>",
  "icon_url": "https://cdn.example.com/teams/ops.png",
  "email": "string",
  "phone": "string",
  "status": "active",
  "slug": "string",
  "features": {
    "compliance": true,
    "timesheets": true,
    "timeclock": true,
    "availability": true,
    "orders": true,
    "clients": true,
    "training": true,
    "leave": true,
    "documents": true,
    "scheduling": true,
    "ndis": true,
    "experimental": true,
    "mileage": true
  }
}

TeamID

object
team_idinteger (int64)
Example
{
  "team_id": 0
}

TeamIDs

object
team_idsArray<integer>
Example
{
  "team_ids": [
    0
  ]
}

TeamMemberInput

object

Object for creating or updating a Team Member

user_idinteger (int64)required
team_idinteger (int64)required
favoriteboolean
muteboolean
photostring (binary)
rolesArray<string>

Array of roles assigned to the Team Member

locationsArray<string>

Array of locations assigned to the Team Member

tagsArray<string>

Array of tags assigned to the Team Member

Example
{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ]
}

TeamMember

object

Object that represents a Team Member

Object for creating or updating a Team Member

user_idinteger (int64)required
team_idinteger (int64)required
favoriteboolean
muteboolean
photostring (binary)
rolesArray<string>

Array of roles assigned to the Team Member

locationsArray<string>

Array of locations assigned to the Team Member

tagsArray<string>

Array of tags assigned to the Team Member

idinteger (int64)
user_idinteger (int64)
team_idinteger (int64)
first_namestring
last_namestring
emailstring
mobilestring
managerboolean
memberboolean

True when the team member has signed up to Tommy

statusstring
icon_urlstring
addon_linksArray<any>

Array of profile links accessible by the current User on the Team Member profile

titlestring

Human-friendly title

packagestring
urlstring
icon_urlstring
Example
{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": true,
  "member": true,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}

DeveloperInput

object

Object representing a Tommy developer

namestring

Display name

detailsstring
Example
{
  "name": "Example Name",
  "details": "string"
}

Developer

object

Object representing a Tommy developer

namestring

Display name

detailsstring
icon_urlstring
addonsArray<any>
idinteger (int64)required

Unique identifier

user_idinteger (int64)required
developer_idinteger (int64)
packagestringrequired
titlestring

Human-friendly title

authorstring
environmentstring
versionstring
descriptionstring

Human-friendly description

homepagestring
icon_urlstring
file_base_urlstring
installedboolean
updated_atstring (date-time)

Last update timestamp (ISO8601)

rolesArray<string>

Array of roles required to install this addon.

permissionsArray<object>
input_devicesArray<object>
localesArray<string>
viewsArray<any>
idstring

Unique identifier

titlestring

Human-friendly title

typestring
pathstring
indexboolean
icon_urlstring
actionsArray<any>
idinteger (int64)

Unique identifier

user_idinteger (int64)
developer_idinteger (int64)
action_version_idinteger (int64)
authorstring
triggerany
idinteger (int64)

Unique identifier

action_version_idinteger (int64)
namestring

Display name

descriptionstring

Human-friendly description

activityany
idinteger (int64)

Unique identifier

action_version_idinteger (int64)
namestring

Display name

descriptionstring

Human-friendly description

dependenciesobject
namestring

Display name

summarystring
descriptionstring

Human-friendly description

icon_urlstring
installedboolean
kindstring
uniqueboolean
solutionsArray<any>
idinteger (int64)

Unique identifier

user_idinteger (int64)
developer_idinteger (int64)
namestring

Display name

summarystring
descriptionstring

Human-friendly description

Example
{
  "name": "Example Name",
  "details": "string",
  "icon_url": "string",
  "addons": [
    {
      "id": 123,
      "user_id": 0,
      "developer_id": 0,
      "package": "string",
      "title": "Example Title",
      "author": "string",
      "environment": "string",
      "version": "string",
      "description": "Short description",
      "homepage": "string",
      "icon_url": "string",
      "file_base_url": "string",
      "installed": true,
      "updated_at": "2025-01-02 12:00:00+00:00",
      "roles": [
        "string"
      ],
      "permissions": [
        {}
      ],
      "input_devices": [
        {}
      ],
      "locales": [
        "string"
      ],
      "views": [
        {
          "id": 123,
          "title": "Example Title",
          "type": "string",
          "path": "string",
          "index": true,
          "icon_url": "string"
        }
      ]
    }
  ],
  "actions": [
    {
      "id": 123,
      "user_id": 0,
      "developer_id": 0,
      "action_version_id": 0,
      "author": "string",
      "trigger": {
        "id": 123,
        "action_version_id": 0,
        "name": "Example Name",
        "description": "Short description"
      },
      "activity": {
        "id": 123,
        "action_version_id": 0,
        "name": "Example Name",
        "description": "Short description"
      },
      "dependencies": {},
      "name": "Example Name",
      "summary": "string",
      "description": "Short description",
      "icon_url": "string",
      "installed": true,
      "kind": "string",
      "unique": true
    }
  ],
  "solutions": [
    {
      "id": 123,
      "user_id": 0,
      "developer_id": 0,
      "name": "Example Name",
      "summary": "string",
      "description": "Short description"
    }
  ]
}

Solution

object
idinteger (int64)

Unique identifier

user_idinteger (int64)
developer_idinteger (int64)
namestring

Display name

summarystring
descriptionstring

Human-friendly description

Example
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "name": "Example Name",
  "summary": "string",
  "description": "Short description"
}

Chat

object

A representation of a Chat

idinteger (int64)

Unique chat identifier

user_idinteger (int64)

The user ID of the chat owner.

team_idinteger (int64)

The team ID.

titlestring

The chat room title.

groupboolean
favoriteboolean
muteboolean
unread_messages_countinteger (int64)
usersArray<any>
idinteger (int64)

Unique identifier

chat_idinteger (int64)required
user_idinteger (int64)required
first_namestring
last_namestring
icon_urlstring
deletedboolean
Example
{
  "id": 222,
  "user_id": 0,
  "team_id": 0,
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "unread_messages_count": 0,
  "users": [
    {
      "id": 123,
      "chat_id": 0,
      "user_id": 0,
      "first_name": "string",
      "last_name": "string",
      "icon_url": "string",
      "deleted": true
    }
  ]
}

ChatInput

object
titlestring

The chat room title.

groupboolean
favoriteboolean
muteboolean
user_idsArray<integer>
Example
{
  "title": "Example Title",
  "group": true,
  "favorite": true,
  "mute": true,
  "user_ids": [
    0
  ]
}

ChatInitiateInput

object

Array of user IDs to initiate the chat with.

user_idsArray<integer>required
Example
{
  "user_ids": [
    0
  ]
}

ChatUser

object
idinteger (int64)

Unique identifier

chat_idinteger (int64)required
user_idinteger (int64)required
first_namestring
last_namestring
icon_urlstring
deletedboolean
Example
{
  "id": 123,
  "chat_id": 0,
  "user_id": 0,
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "deleted": true
}

MessageFlag

object
idinteger (int64)

Unique identifier

user_idinteger (int64)
message_idinteger (int64)
chat_idinteger (int64)
kindstring

The type of flag (read, reaction, etc.)

valuestring

The reaction emoji value

created_atstring (date-time)

Creation timestamp (ISO8601)

updated_atstring (date-time)

Last update timestamp (ISO8601)

Example
{
  "id": 123,
  "user_id": 0,
  "message_id": 0,
  "chat_id": 0,
  "kind": "string",
  "value": "string",
  "created_at": "2025-01-01 12:00:00+00:00",
  "updated_at": "2025-01-02 12:00:00+00:00"
}

ReactionInput

object
message_idinteger (int64)required

The message ID to react to

valuestringrequired

The reaction emoji value

Example
{
  "message_id": 0,
  "value": "string"
}

MessageInput

object
chat_idinteger (int64)
sender_idinteger (int64)required
bodystringrequired
kindstring
send_atstring (date-time)

Time in the future to send the message

attachmentsArray<string>

Object for creating or updating an Attachment.

Example
{
  "chat_id": 0,
  "sender_id": 0,
  "body": "string",
  "kind": "string",
  "send_at": "2024-01-15T09:30:00Z",
  "attachments": [
    "<binary>"
  ]
}

Message

object

A representation of a Message

idinteger (int64)

Unique message identifier

chat_idinteger (int64)

Associated chat ID

sender_idinteger (int64)
bodystring

Message contents

kindstring
chat_titlestring
sender_first_namestring
sender_last_namestring
sender_icon_urlstring
sent_atstring (date-time)
attachmentsArray<any>

Object that represents an Attachment.

signed_idstring
content_typestring
filenamestring
urlstring
Example
{
  "id": 333,
  "chat_id": 222,
  "sender_id": 0,
  "body": "Hello world",
  "kind": "string",
  "chat_title": "string",
  "sender_first_name": "string",
  "sender_last_name": "string",
  "sender_icon_url": "string",
  "sent_at": "2024-01-15T09:30:00Z",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}

AddonView

object
idstring

Unique identifier

titlestring

Human-friendly title

typestring
pathstring
indexboolean
icon_urlstring
Example
{
  "id": 123,
  "title": "Example Title",
  "type": "string",
  "path": "string",
  "index": true,
  "icon_url": "string"
}

Addon

object
idinteger (int64)required

Unique identifier

user_idinteger (int64)required
developer_idinteger (int64)
packagestringrequired
titlestring

Human-friendly title

authorstring
environmentstring
versionstring
descriptionstring

Human-friendly description

homepagestring
icon_urlstring
file_base_urlstring
installedboolean
updated_atstring (date-time)

Last update timestamp (ISO8601)

rolesArray<string>

Array of roles required to install this addon.

permissionsArray<object>
input_devicesArray<object>
localesArray<string>
viewsArray<any>
idstring

Unique identifier

titlestring

Human-friendly title

typestring
pathstring
indexboolean
icon_urlstring
Example
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "package": "string",
  "title": "Example Title",
  "author": "string",
  "environment": "string",
  "version": "string",
  "description": "Short description",
  "homepage": "string",
  "icon_url": "string",
  "file_base_url": "string",
  "installed": true,
  "updated_at": "2025-01-02 12:00:00+00:00",
  "roles": [
    "string"
  ],
  "permissions": [
    {}
  ],
  "input_devices": [
    {}
  ],
  "locales": [
    "string"
  ],
  "views": [
    {
      "id": 123,
      "title": "Example Title",
      "type": "string",
      "path": "string",
      "index": true,
      "icon_url": "string"
    }
  ]
}

AuditLog

object
user_idinteger (int64)
team_idinteger (int64)
namestring

Display name

messagestring
Example
{
  "user_id": 0,
  "team_id": 0,
  "name": "Example Name",
  "message": "string"
}

Activity

object
idinteger (int64)

Unique identifier

action_version_idinteger (int64)
namestring

Display name

descriptionstring

Human-friendly description

Example
{
  "id": 123,
  "action_version_id": 0,
  "name": "Example Name",
  "description": "Short description"
}

Trigger

object
idinteger (int64)

Unique identifier

action_version_idinteger (int64)
namestring

Display name

descriptionstring

Human-friendly description

Example
{
  "id": 123,
  "action_version_id": 0,
  "name": "Example Name",
  "description": "Short description"
}

Action

object
idinteger (int64)

Unique identifier

user_idinteger (int64)
developer_idinteger (int64)
action_version_idinteger (int64)
authorstring
triggerany
idinteger (int64)

Unique identifier

action_version_idinteger (int64)
namestring

Display name

descriptionstring

Human-friendly description

activityany
idinteger (int64)

Unique identifier

action_version_idinteger (int64)
namestring

Display name

descriptionstring

Human-friendly description

dependenciesobject
namestring

Display name

summarystring
descriptionstring

Human-friendly description

icon_urlstring
installedboolean
kindstring
uniqueboolean
Example
{
  "id": 123,
  "user_id": 0,
  "developer_id": 0,
  "action_version_id": 0,
  "author": "string",
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "dependencies": {},
  "name": "Example Name",
  "summary": "string",
  "description": "Short description",
  "icon_url": "string",
  "installed": true,
  "kind": "string",
  "unique": true
}

ActionInstall

object
idinteger (int64)

Unique identifier

action_idinteger (int64)
addon_install_idinteger (int64)
titlestring

Human-friendly title

summarystring
descriptionstring

Human-friendly description

scheduleobject
installedboolean
deleted_atstring (date-time)
updated_atstring (date-time)

Last update timestamp (ISO8601)

tag_idsArray<integer>
tags_listArray<string>
triggerany
idinteger (int64)

Unique identifier

action_version_idinteger (int64)
namestring

Display name

descriptionstring

Human-friendly description

activityany
idinteger (int64)

Unique identifier

action_version_idinteger (int64)
namestring

Display name

descriptionstring

Human-friendly description

settingsobject
Example
{
  "id": 123,
  "action_id": 0,
  "addon_install_id": 0,
  "title": "Example Title",
  "summary": "string",
  "description": "Short description",
  "schedule": {},
  "installed": true,
  "deleted_at": "2024-01-15T09:30:00Z",
  "updated_at": "2025-01-02 12:00:00+00:00",
  "tag_ids": [
    0
  ],
  "tags_list": [
    "string"
  ],
  "trigger": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "activity": {
    "id": 123,
    "action_version_id": 0,
    "name": "Example Name",
    "description": "Short description"
  },
  "settings": {}
}

TriggerData

object
trigger_dataobject

Trigger data object

Example
{
  "trigger_data": {}
}

Setting

object
user_idinteger (int64)
team_idinteger (int64)
addon_install_idinteger (int64)
resource_idinteger (int64)
resource_typestring
contextstring
formatstring
dataobjectrequired

Setting data as JSON.

Example
{
  "user_id": 0,
  "team_id": 0,
  "addon_install_id": 0,
  "resource_id": 0,
  "resource_type": "string",
  "context": "string",
  "format": "string",
  "data": {}
}

SettingData

object
dataobjectrequired

Setting data as JSON, boolean, integer or string.

contextstring
_formatstring
Example
{
  "data": {},
  "context": "string",
  "_format": "string"
}

FragmentInput

object

Object for creating or updating an Fragment.

kindstring
namestring

Display name

datastring
timestring (date-time)
parent_idinteger (int64)
attachmentsArray<string>

Object for creating or updating an Attachment.

Example
{
  "kind": "string",
  "name": "Example Name",
  "data": "string",
  "time": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "attachments": [
    "<binary>"
  ]
}

Fragment

object

Object that represents an Fragment.

idinteger (int64)

Unique identifier

user_idinteger (int64)required
team_idinteger (int64)
addons_install_idinteger (int64)
kindstring
namestring

Display name

dataobject
start_atstring (date-time)
end_atstring (date-time)
parent_idinteger (int64)
resource_idinteger (int64)
resource_typestring
attachmentsArray<any>

Object that represents an Attachment.

signed_idstring
content_typestring
filenamestring
urlstring
Example
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "addons_install_id": 0,
  "kind": "string",
  "name": "Example Name",
  "data": {},
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "parent_id": 0,
  "resource_id": 0,
  "resource_type": "string",
  "attachments": [
    {
      "signed_id": "string",
      "content_type": "string",
      "filename": "string",
      "url": "string"
    }
  ]
}

ContactInput

object

A representation of a Contact

friend_idinteger (int64)required

Friend user ID

favoriteboolean
muteboolean
personalboolean
rolesArray<string>

Array of roles assigned to the Contact

locationsArray<string>

Array of locations assigned to the Contact

tagsArray<string>

Array of tags assigned to the Contact

Example
{
  "friend_id": 0,
  "favorite": true,
  "mute": true,
  "personal": true,
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ]
}

Contact

object

A representation of a Contact

friend_idinteger (int64)required

Friend user ID

favoriteboolean
muteboolean
personalboolean
rolesArray<string>

Array of roles assigned to the Contact

locationsArray<string>

Array of locations assigned to the Contact

tagsArray<string>

Array of tags assigned to the Contact

idinteger (int64)
typestring
first_namestring
last_namestring
icon_urlstring
emailstring
mobilestring
statusstring
memberboolean

True when the friend has signed up to Tommy

last_online_atstring (date-time)
Example
{
  "friend_id": 0,
  "favorite": true,
  "mute": true,
  "personal": true,
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "type": "string",
  "first_name": "string",
  "last_name": "string",
  "icon_url": "string",
  "email": "string",
  "mobile": "string",
  "status": "string",
  "member": true,
  "last_online_at": "2024-01-15T09:30:00Z"
}

ContactRequest

object

A representation of a User

idinteger (int64)

Unique user identifier

statusstring

Current account status

first_namestring

Given name

last_namestring

Family name

slugstring

URL-safe identifier

emailstring

Email address

mobilestring

Mobile phone number in E.164 format

dobstring

Date of birth (YYYY-MM-DD)

localestring

IETF language tag

icon_urlstring

Avatar image URL

team_idsArray<integer>
viastring
Example
{
  "id": 12345,
  "status": "active",
  "first_name": "Alex",
  "last_name": "Johnson",
  "slug": "alex-johnson",
  "email": "alex@example.com",
  "mobile": "+15551234567",
  "dob": "1990-01-01",
  "locale": "en-US",
  "icon_url": "https://cdn.example.com/avatars/12345.png",
  "team_ids": [
    0
  ],
  "via": "string"
}

InvitationInput

object

Object for creating an Invitation.

friend_idinteger (int64)
invitee_idinteger (int64)
invitee_typestring
messagestring
Example
{
  "friend_id": 0,
  "invitee_id": 0,
  "invitee_type": "string",
  "message": "string"
}

Invitation

object

Invitation for a user to join Tommy

Object for creating an Invitation.

friend_idinteger (int64)
invitee_idinteger (int64)
invitee_typestring
messagestring
user_idinteger (int64)
team_idinteger (int64)
inviterany

A representation of a Account

A representation of a Account

idinteger (int64)

Unique account identifier

typestring
user_idinteger (int64)
team_idinteger (int64)
namestring

Account display name

contact_namestring
kindstring
icon_urlstring
mobilestring
notification_countinteger (int64)
inviteeany

A representation of a Account

A representation of a Account

idinteger (int64)

Unique account identifier

typestring
user_idinteger (int64)
team_idinteger (int64)
namestring

Account display name

contact_namestring
kindstring
icon_urlstring
mobilestring
notification_countinteger (int64)
contactobject & any

A representation of a Contact

friend_idinteger (int64)required

Friend user ID

favoriteboolean
muteboolean
personalboolean
rolesArray<string>

Array of roles assigned to the Contact

locationsArray<string>

Array of locations assigned to the Contact

tagsArray<string>

Array of tags assigned to the Contact

idinteger (int64)
typestring
first_namestring
last_namestring
icon_urlstring
emailstring
mobilestring
statusstring
memberboolean

True when the friend has signed up to Tommy

last_online_atstring (date-time)
tokenstring
statusstring
linkstring
times_sentinteger (int64)
sent_atstring (date-time)
accepted_atstring (date-time)
Example
{
  "friend_id": 0,
  "invitee_id": 0,
  "invitee_type": "string",
  "message": "string",
  "user_id": 0,
  "team_id": 0,
  "inviter": {
    "id": 111,
    "type": "string",
    "user_id": 0,
    "team_id": 0,
    "name": "Acme Corp",
    "contact_name": "string",
    "kind": "string",
    "icon_url": "string",
    "mobile": "string",
    "notification_count": 0
  },
  "invitee": {
    "id": 111,
    "type": "string",
    "user_id": 0,
    "team_id": 0,
    "name": "Acme Corp",
    "contact_name": "string",
    "kind": "string",
    "icon_url": "string",
    "mobile": "string",
    "notification_count": 0
  },
  "contact": {
    "friend_id": 0,
    "favorite": true,
    "mute": true,
    "personal": true,
    "roles": [
      "string"
    ],
    "locations": [
      "string"
    ],
    "tags": [
      "string"
    ],
    "id": 0,
    "type": "string",
    "first_name": "string",
    "last_name": "string",
    "icon_url": "string",
    "email": "string",
    "mobile": "string",
    "status": "string",
    "member": true,
    "last_online_at": "2024-01-15T09:30:00Z"
  },
  "token": "string",
  "status": "string",
  "link": "string",
  "times_sent": 0,
  "sent_at": "2024-01-15T09:30:00Z",
  "accepted_at": "2024-01-15T09:30:00Z"
}

EventInput

object

Object for creating or updating an Event.

kindstring
titlestring

Human-friendly title

detailsstring
location_namestring
colorstring
start_atstring (date-time)
end_atstring (date-time)
Example
{
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z"
}

Event

object

Object that represents an Event.

Object for creating or updating an Event.

kindstring
titlestring

Human-friendly title

detailsstring
location_namestring
colorstring
start_atstring (date-time)
end_atstring (date-time)
idinteger (int64)
user_idinteger (int64)
team_idinteger (int64)
addons_install_idinteger (int64)
Example
{
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "location_name": "string",
  "color": "string",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "addons_install_id": 0
}

UserCredentials

object

User login credentials

loginstringrequired
passwordstringrequired
Example
{
  "login": "string",
  "password": "string"
}

Permission

object
user_idinteger (int64)
team_idinteger (int64)
namestring

Display name

titlestring

Human-friendly title

hintstring
resource_typestring
resource_kindstring
operationsArray<string>

Array of permissable operations

Example
{
  "user_id": 0,
  "team_id": 0,
  "name": "Example Name",
  "title": "Example Title",
  "hint": "string",
  "resource_type": "string",
  "resource_kind": "string",
  "operations": [
    "string"
  ]
}

GeolocationInput

object

Object for creating or updating an Geolocation.

latitudenumber (float)
longitudenumber (float)
accuracynumber (float)
timestampstring (date-time)
kindstring
titlestring

Human-friendly title

detailsstring
Example
{
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "timestamp": "2024-01-15T09:30:00Z",
  "kind": "string",
  "title": "Example Title",
  "details": "string"
}

Geolocation

object

Object that represents an Geolocation.

Object for creating or updating an Geolocation.

latitudenumber (float)
longitudenumber (float)
accuracynumber (float)
timestampstring (date-time)
kindstring
titlestring

Human-friendly title

detailsstring
idinteger (int64)
user_idinteger (int64)
team_idinteger (int64)
addons_install_idinteger (int64)
Example
{
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "timestamp": "2024-01-15T09:30:00Z",
  "kind": "string",
  "title": "Example Title",
  "details": "string",
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "addons_install_id": 0
}

WalletInput

object

Object for updating a Wallet

enable_notificationsboolean
show_balanceboolean
Example
{
  "enable_notifications": true,
  "show_balance": true
}

Wallet

object

Object representing a Wallet

idinteger (int64)

Unique identifier

user_idinteger (int64)
balancenumber (double)

Current wallet balance (cents or minor units unless noted)

credit_limitnumber (double)
enable_notificationsboolean
show_balanceboolean
Example
{
  "id": 123,
  "user_id": 0,
  "balance": 129900,
  "credit_limit": 0,
  "enable_notifications": true,
  "show_balance": true
}

WalletCard

object

Object representing a Wallet Card

idinteger (int64)

Unique identifier

wallet_idinteger (int64)
wallet_account_idinteger (int64)
namestring

Display name

icon_urlstring
balancenumber (double)
credit_limitnumber (double)
activeboolean
Example
{
  "id": 123,
  "wallet_id": 0,
  "wallet_account_id": 0,
  "name": "Example Name",
  "icon_url": "string",
  "balance": 0,
  "credit_limit": 0,
  "active": true
}

WalletAccount

object

Object representing a Wallet Account

idinteger (int64)

Unique identifier

team_idinteger (int64)
namestring

Display name

card_namestring
phonestring
vendor_referencestring
icon_urlstring
descriptionstring

Human-friendly description

enable_chatboolean
enable_integrationsboolean
activeboolean
Example
{
  "id": 123,
  "team_id": 0,
  "name": "Example Name",
  "card_name": "string",
  "phone": "string",
  "vendor_reference": "string",
  "icon_url": "string",
  "description": "Short description",
  "enable_chat": true,
  "enable_integrations": true,
  "active": true
}

WalletTransactionInput

object

Object for creating or updating a Wallet Transaction

wallet_card_idinteger (int64)required
wallet_account_idinteger (int64)required
addon_idinteger (int64)
addon_install_idinteger (int64)
payee_namestring
amountnumber (double)required
Example
{
  "wallet_card_id": 0,
  "wallet_account_id": 0,
  "addon_id": 0,
  "addon_install_id": 0,
  "payee_name": "string",
  "amount": 0
}

WalletTransaction

object

Object representing a Wallet Transaction

wallet_card_idinteger (int64)
wallet_account_idinteger (int64)
addon_idinteger (int64)
addon_install_idinteger (int64)
payee_namestring
icon_urlstring
invoice_urlstring
statusstringpendingpaidrefundedfailed

Transaction status

amountnumber (double)
vendor_referencestring
Example
{
  "wallet_card_id": 0,
  "wallet_account_id": 0,
  "addon_id": 0,
  "addon_install_id": 0,
  "payee_name": "string",
  "icon_url": "string",
  "invoice_url": "string",
  "status": "active",
  "amount": 0,
  "vendor_reference": "string"
}

VendorOrderItemInput

object

Object for creating or updating an VendorOrderItem.

orderable_idinteger (int64)
orderable_typestring
quantityinteger (int64)
Example
{
  "orderable_id": 0,
  "orderable_type": "string",
  "quantity": 0
}

VendorOrderInput

object

Object for creating or updating an VendorOrder.

assignee_idinteger (int64)
assignee_team_idinteger (int64)
namestring

Display name

statusstring

Current status

canceledboolean
dataobject
event_attributesobject

Object for creating or updating an Event.

Object for creating or updating an Event.

kindstring
titlestring

Human-friendly title

detailsstring
location_namestring
colorstring
start_atstring (date-time)
end_atstring (date-time)
coupon_idsArray<integer>

Array coupon IDs.

order_items_attributesArray<object>

Object for creating or updating an VendorOrderItem.

orderable_idinteger (int64)
orderable_typestring
quantityinteger (int64)
Example
{
  "assignee_id": 0,
  "assignee_team_id": 0,
  "name": "Example Name",
  "status": "active",
  "canceled": true,
  "data": {},
  "event_attributes": {
    "kind": "string",
    "title": "Example Title",
    "details": "string",
    "location_name": "string",
    "color": "string",
    "start_at": "2024-01-15T09:30:00Z",
    "end_at": "2024-01-15T09:30:00Z"
  },
  "coupon_ids": [
    0
  ],
  "order_items_attributes": [
    {
      "orderable_id": 0,
      "orderable_type": "string",
      "quantity": 0
    }
  ]
}

VendorOrder

object

Object that represents an VendorOrder.

idinteger (int64)

Unique identifier

user_idinteger (int64)required
team_idinteger (int64)
assignee_idinteger (int64)
event_idinteger (int64)
wallet_transaction_idinteger (int64)
workforce_shift_idinteger (int64)
coupon_idsArray<integer>

Array coupon IDs.

namestring

Display name

statusstring

Current status

canceledboolean
dataobject
Example
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "assignee_id": 0,
  "event_id": 0,
  "wallet_transaction_id": 0,
  "workforce_shift_id": 0,
  "coupon_ids": [
    0
  ],
  "name": "Example Name",
  "status": "active",
  "canceled": true,
  "data": {}
}

WorkforceInput

object

Object for updating a Workforce account

namestring

Display name

week_startstringmondayturesdaywednesday
timeclock_require_gpsboolean
timeclock_require_photoboolean
timeclock_enable_mobileboolean
timeclock_enable_webboolean
timeclock_enable_kioskboolean
timesheets_rounding_methodstringnoneupdownnearest
timesheets_rounding_minutesinteger
timesheets_enable_break_roundingboolean
shift_upcoming_notification_minutesinteger

Minutes before shift start to send notification

shift_forgot_clockin_minutesinteger

Minutes after shift start to send forgot clockin notification

shift_forgot_clockout_minutesinteger

Minutes after shift end to send forgot clockout notification

shift_notifications_enabledboolean

Enable/disable shift notifications

event_notifications_enabledboolean

Enable/disable event notifications

dataobject

Arbitrary data storage

Example
{
  "name": "Example Name",
  "week_start": "monday",
  "timeclock_require_gps": true,
  "timeclock_require_photo": true,
  "timeclock_enable_mobile": true,
  "timeclock_enable_web": true,
  "timeclock_enable_kiosk": true,
  "timesheets_rounding_method": "none",
  "timesheets_rounding_minutes": 0,
  "timesheets_enable_break_rounding": true,
  "shift_upcoming_notification_minutes": 0,
  "shift_forgot_clockin_minutes": 0,
  "shift_forgot_clockout_minutes": 0,
  "shift_notifications_enabled": true,
  "event_notifications_enabled": true,
  "data": {}
}

Workforce

object

Object representing a Workforce account

Object for updating a Workforce account

namestring

Display name

week_startstringmondayturesdaywednesday
timeclock_require_gpsboolean
timeclock_require_photoboolean
timeclock_enable_mobileboolean
timeclock_enable_webboolean
timeclock_enable_kioskboolean
timesheets_rounding_methodstringnoneupdownnearest
timesheets_rounding_minutesinteger
timesheets_enable_break_roundingboolean
shift_upcoming_notification_minutesinteger

Minutes before shift start to send notification

shift_forgot_clockin_minutesinteger

Minutes after shift start to send forgot clockin notification

shift_forgot_clockout_minutesinteger

Minutes after shift end to send forgot clockout notification

shift_notifications_enabledboolean

Enable/disable shift notifications

event_notifications_enabledboolean

Enable/disable event notifications

dataobject

Arbitrary data storage

idinteger (int64)
Example
{
  "name": "Example Name",
  "week_start": "monday",
  "timeclock_require_gps": true,
  "timeclock_require_photo": true,
  "timeclock_enable_mobile": true,
  "timeclock_enable_web": true,
  "timeclock_enable_kiosk": true,
  "timesheets_rounding_method": "none",
  "timesheets_rounding_minutes": 0,
  "timesheets_enable_break_rounding": true,
  "shift_upcoming_notification_minutes": 0,
  "shift_forgot_clockin_minutes": 0,
  "shift_forgot_clockout_minutes": 0,
  "shift_notifications_enabled": true,
  "event_notifications_enabled": true,
  "data": {},
  "id": 0
}

WorkforceEmployeeInput

object

Object for updating an employee

Object for creating or updating a Team Member

user_idinteger (int64)required
team_idinteger (int64)required
favoriteboolean
muteboolean
photostring (binary)
rolesArray<string>

Array of roles assigned to the Team Member

locationsArray<string>

Array of locations assigned to the Team Member

tagsArray<string>

Array of tags assigned to the Team Member

has_vehicleboolean
compliance_checkstring
notesstring
Example
{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "has_vehicle": true,
  "compliance_check": "string",
  "notes": "string"
}

WorkforceEmployee

object

Object representing an employee

Object that represents a Team Member

Object for creating or updating a Team Member

user_idinteger (int64)required
team_idinteger (int64)required
favoriteboolean
muteboolean
photostring (binary)
rolesArray<string>

Array of roles assigned to the Team Member

locationsArray<string>

Array of locations assigned to the Team Member

tagsArray<string>

Array of tags assigned to the Team Member

idinteger (int64)
user_idinteger (int64)
team_idinteger (int64)
first_namestring
last_namestring
emailstring
mobilestring
managerboolean
memberboolean

True when the team member has signed up to Tommy

statusstring
icon_urlstring
addon_linksArray<any>

Array of profile links accessible by the current User on the Team Member profile

titlestring

Human-friendly title

packagestring
urlstring
icon_urlstring
Example
{
  "user_id": 0,
  "team_id": 0,
  "favorite": true,
  "mute": true,
  "photo": "<binary>",
  "roles": [
    "string"
  ],
  "locations": [
    "string"
  ],
  "tags": [
    "string"
  ],
  "id": 0,
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "mobile": "string",
  "manager": true,
  "member": true,
  "status": "string",
  "icon_url": "string",
  "addon_links": [
    {
      "title": "Example Title",
      "package": "string",
      "url": "string",
      "icon_url": "string"
    }
  ]
}

WorkforceAvailabilityInput

object

Object for updating a availability

aminteger
pminteger
ndinteger
am_lockedboolean
pm_lockedboolean
nd_lockedboolean
datestring (date)
Example
{
  "am": 0,
  "pm": 0,
  "nd": 0,
  "am_locked": true,
  "pm_locked": true,
  "nd_locked": true,
  "date": "2024-01-15"
}

WorkforceAvailability

object

Object representing a availability

Object for updating a availability

aminteger
pminteger
ndinteger
am_lockedboolean
pm_lockedboolean
nd_lockedboolean
datestring (date)
idinteger (int64)
user_idinteger (int64)
team_idinteger (int64)
employee_idinteger (int64)
Example
{
  "am": 0,
  "pm": 0,
  "nd": 0,
  "am_locked": true,
  "pm_locked": true,
  "nd_locked": true,
  "date": "2024-01-15",
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "employee_id": 0
}

WorkforceShiftQuestion

object

Object representing a shift question

team_idinteger (int64)
textstring
offset_minutesinteger (int64)
whenstringalwaysstart_shiftend_shift
alwaysboolean
enabledboolean
tag_idsArray<integer>
Example
{
  "team_id": 0,
  "text": "string",
  "offset_minutes": 0,
  "when": "always",
  "always": true,
  "enabled": true,
  "tag_ids": [
    0
  ]
}

WorkforceShiftAnswer

object

Object representing a shift answer

team_idinteger (int64)
shift_idinteger (int64)
shift_question_idinteger (int64)
attendance_idinteger (int64)
user_idinteger (int64)
textstring
Example
{
  "team_id": 0,
  "shift_id": 0,
  "shift_question_id": 0,
  "attendance_id": 0,
  "user_id": 0,
  "text": "string"
}

WorkforceShiftInput

object

Object for updating a shift

titlestring

Human-friendly title

start_atstring (date-time)
end_atstring (date-time)
statusstringopenassignedpublished

Current status

location_idinteger (int64)
location_namestring
rolestring
departmentstring
detailsstring
dataobject
Example
{
  "title": "Example Title",
  "start_at": "2024-01-15T09:30:00Z",
  "end_at": "2024-01-15T09:30:00Z",
  "status": "active",
  "location_id": 0,
  "location_name": "string",
  "role": "string",
  "department": "string",
  "details": "string",
  "data": {}
}

WorkforceShift

object

Object representing a shift

idinteger (int64)

Unique identifier

user_idinteger (int64)
team_idinteger (int64)
assignee_idinteger (int64)
event_idinteger (int64)
shift_on_same_dayboolean
shift_requestedboolean
Example
{
  "id": 123,
  "user_id": 0,
  "team_id": 0,
  "assignee_id": 0,
  "event_id": 0,
  "shift_on_same_day": true,
  "shift_requested": true
}

WorkforceShiftRequestInput

object

Object for updating a shift request

user_idinteger (int64)
shift_idinteger (int64)
statusstringrequestedshortlistedapprovedrejectedcanceled

Current status

Example
{
  "user_id": 0,
  "shift_id": 0,
  "status": "active"
}

WorkforceShiftRequest

object

Object representing a shift request

Object for updating a shift request

user_idinteger (int64)
shift_idinteger (int64)
statusstringrequestedshortlistedapprovedrejectedcanceled

Current status

idinteger (int64)
team_idinteger (int64)
requestor_idinteger (int64)
Example
{
  "user_id": 0,
  "shift_id": 0,
  "status": "active",
  "id": 0,
  "team_id": 0,
  "requestor_id": 0
}

WorkforceTimesheetInput

object

Object for updating a timesheet

statusstringunsubmittedsubmittedpreapprovedapproveddenied

Current status

resource_idinteger (int64)
resource_typestring
start_datestring (date)
end_datestring (date)
manualboolean
Example
{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true
}

WorkforceTimesheetBulkInput

object

Object for bulk updating a timesheets

Object for updating a timesheet

statusstringunsubmittedsubmittedpreapprovedapproveddenied

Current status

resource_idinteger (int64)
resource_typestring
start_datestring (date)
end_datestring (date)
manualboolean
timesheet_idsArray<integer>
Example
{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true,
  "timesheet_ids": [
    0
  ]
}

WorkforceTimesheet

object

Object representing a timesheet

Object for updating a timesheet

statusstringunsubmittedsubmittedpreapprovedapproveddenied

Current status

resource_idinteger (int64)
resource_typestring
start_datestring (date)
end_datestring (date)
manualboolean
idinteger (int64)
user_idinteger (int64)
team_idinteger (int64)
Example
{
  "status": "active",
  "resource_id": 0,
  "resource_type": "string",
  "start_date": "2024-01-15",
  "end_date": "2024-01-15",
  "manual": true,
  "id": 0,
  "user_id": 0,
  "team_id": 0
}

WorkforceTimesheetItemInput

object

Object for updating a timesheet item

shift_idinteger (int64)
timesheet_idinteger (int64)
work_hoursnumber (float)
break_hoursnumber (float)
addressstring
manualboolean
Example
{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true
}

WorkforceTimesheetItem

object

Object representing a timesheet item

Object for updating a timesheet item

shift_idinteger (int64)
timesheet_idinteger (int64)
work_hoursnumber (float)
break_hoursnumber (float)
addressstring
manualboolean
idinteger (int64)
user_idinteger (int64)
team_idinteger (int64)
activeboolean
Example
{
  "shift_id": 0,
  "timesheet_id": 0,
  "work_hours": 0,
  "break_hours": 0,
  "address": "string",
  "manual": true,
  "id": 0,
  "user_id": 0,
  "team_id": 0,
  "active": true
}

WorkforceAttendanceInput

object

Object for updating an attendance

event_idinteger (int64)
latitudenumber (float)
longitudenumber (float)
accuracynumber (float)
statusstringstartpauseresumestop

Current status

addressstring
location_namestring
imageobject
Example
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {}
}

WorkforceAttendance

object

Object representing an attendance

Object for updating an attendance

event_idinteger (int64)
latitudenumber (float)
longitudenumber (float)
accuracynumber (float)
statusstringstartpauseresumestop

Current status

addressstring
location_namestring
imageobject
idinteger (int64)
user_idinteger (int64)
Example
{
  "event_id": 0,
  "latitude": 0,
  "longitude": 0,
  "accuracy": 0,
  "status": "active",
  "address": "string",
  "location_name": "string",
  "image": {},
  "id": 0,
  "user_id": 0
}

Device

object

User device

idinteger (int64)

Unique device identifier

user_idinteger (int64)required
platformstringiosandroidrequired

Device platform type

environmentstringdevelopmentproduction

Device build environment

uuidstringrequired

Device UUID

tokenstring

Device token

Example
{
  "id": 444,
  "user_id": 0,
  "platform": "ios",
  "environment": "development",
  "uuid": "string",
  "token": "xxxx-yyyy-zzzz"
}

Tag

object

Object that represents a Tag.

idinteger (int64)required

Unique tag identifier

namestring

Tag name

taggings_countinteger
Example
{
  "id": 555,
  "name": "priority",
  "taggings_count": 0
}

TaggingInput

object

Object for creating a Tagging.

contextstringmemberstagsroleslocations

Tagging type

namestring

Display name

Example
{
  "context": "members",
  "name": "Example Name"
}

Tagging

object

Object that represents a Tagging.

Object for creating a Tagging.

contextstringmemberstagsroleslocations

Tagging type

namestring

Display name

idinteger (int64)
Example
{
  "context": "members",
  "name": "Example Name",
  "id": 0
}

Sync

object

A representation of a Sync operation

idinteger (int64)required

Unique identifier

team_idinteger (int64)
user_idinteger (int64)
integration_idinteger (int64)
statusstringpendingprocessingfailedcanceledcompleterequired

Current status of the sync

directionstringimportexport

Direction of the sync

item_typestringrequired

Type of items being synced

progress_percentagenumber (float)

Progress percentage (0-100)

total_itemsinteger (int64)

Total number of items to process

success_itemsinteger (int64)

Number of successfully processed items

failed_itemsinteger (int64)

Number of failed items

optionsobject

Options used for the sync operation

messagestring

Error message if sync failed

started_atstring (date-time)

When the sync started

ended_atstring (date-time)

When the sync ended

created_atstring (date-time)

When the sync was created

updated_atstring (date-time)

When the sync was last updated

userobject

User who initiated the sync

User who initiated the sync

idinteger (int64)
namestring
emailstring
Example
{
  "id": 123,
  "team_id": 0,
  "user_id": 0,
  "integration_id": 0,
  "status": "active",
  "direction": "import",
  "item_type": "string",
  "progress_percentage": 0,
  "total_items": 0,
  "success_items": 0,
  "failed_items": 0,
  "options": {},
  "message": "string",
  "started_at": "2024-01-15T09:30:00Z",
  "ended_at": "2024-01-15T09:30:00Z",
  "created_at": "2025-01-01 12:00:00+00:00",
  "updated_at": "2025-01-02 12:00:00+00:00",
  "user": {
    "id": 0,
    "name": "string",
    "email": "string"
  }
}

Error

object

Standard error format

errorbooleanrequired

Indicates the response represents an error

codestringrequired

Stable application error code

messagestringrequired

Client-facing error message

request_idstringrequired

Request correlation identifier

detailsobject

Optional field-level validation errors

Example
{
  "error": true,
  "code": "VALIDATION_ERROR",
  "message": "Validation failed",
  "request_id": "00000000-0000-0000-0000-000000000000",
  "details": {
    "field": [
      "is invalid"
    ]
  }
}

object

object
object
Example
{}