Tommy
v1.0.0Contact: support@mytommy.com
https://api.mytommy.com/v1The 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.
Authentication
basicAuthhttpHTTP Basic Authentication. Works over HTTP and HTTPS
Scheme: basic
api_keyapiKeyProvide your API key via the api_key header.
API Key: api_key in header
Account
Manage accounts and search across users and teams.
Search users
Get all users and teams who's mobile or username match the given search term.
Parameters
termstringrequiredquerySearch term used to filter accounts
Response
Account response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/accounts/search', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/accounts/search')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/accounts/search')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/accounts/search", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get the current account
Get the current user account.
Response
Account response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/me/current_account', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/me/current_account')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me/current_account')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/me/current_account", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update the current account
Update the current user account. \ The current account may be a User, Team, or TeamMember type.
Parameters
current_account_idinteger<int64>requiredqueryThe polymorphic Account ID
current_account_typestringrequiredqueryThe polymorphic Account Type (User, Team, TeamMember)
Response
Account response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/me/current_account', {
method: 'PUT',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.put('https://api.mytommy.com/v1/me/current_account')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me/current_account')
request = Net::HTTP::Put.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/me/current_account", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 the current user object
Get the current user object.
Response
User response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/me', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/me')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/me", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update the current user object
Update the current user object.
Body
UserInput request
A representation of a User
idinteger<int64>Unique user identifier
statusstringCurrent account status
first_namestringGiven name
last_namestringFamily name
slugstringURL-safe identifier
emailstringEmail address
mobilestringMobile phone number in E.164 format
dobstringDate of birth (YYYY-MM-DD)
localestringIETF language tag
icon_urlstringAvatar image URL
photostring<binary>passwordstringResponse
User response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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-01T00:00:00.000Z",
"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-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"photo": "<binary>",
"password": "string"
}),
});
const data = await response.json();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-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"photo": "<binary>",
"password": "string"
}),
});
const data: Record<string, unknown> = 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-01T00:00:00.000Z",
"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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/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-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"photo": "<binary>",
"password": "string"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"photo": "<binary>",
"password": "string"
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/me", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"photo": "<binary>",
"password": "string"
}{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get all accounts belonging to the current user
Get all accounts belonging to the current user.
Response
Account response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/me/accounts', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/me/accounts')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me/accounts')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/me/accounts", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get work-life score chart data for the current user
Get work-life score chart data for the current user.
Response
WLS chart data
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/me/wls', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/me/wls')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me/wls')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/me/wls", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"labels": [
"string"
],
"values": [
0
],
"team_values": {},
"feedback": [
"string"
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get the current account
Get the current user account.
Response
Account response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/me/current_account', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/me/current_account')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me/current_account')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/me/current_account", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update the current account
Update the current user account. \ The current account may be a User, Team, or TeamMember type.
Parameters
current_account_idinteger<int64>requiredqueryThe polymorphic Account ID
current_account_typestringrequiredqueryThe polymorphic Account Type (User, Team, TeamMember)
Response
Account response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/me/current_account', {
method: 'PUT',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.put('https://api.mytommy.com/v1/me/current_account')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me/current_account')
request = Net::HTTP::Put.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/me/current_account", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get user settings
Get user settings objects.
Response
Setting response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/me/settings', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/me/settings')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me/settings')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/me/settings", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get user setting value
Get a user setting value.
Parameters
namestringrequiredpathSetting name
Response
Setting response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/me/settings/{name}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/me/settings/{name}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me/settings/{name}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/me/settings/{name}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update user setting value
Update a user setting value.
Body
SettingData request
dataobjectrequiredSetting data as JSON, boolean, integer or string.
contextstring_formatstringParameters
namestringrequiredpathSetting name
Response
Setting response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me/settings/{name}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"data": {},
"context": "string",
"_format": "string"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"data": {},
"context": "string",
"_format": "string"
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/me/settings/{name}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"data": {},
"context": "string",
"_format": "string"
}{}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete user setting value
Delete a user setting value.
Parameters
namestringrequiredpathSetting name
Response
No content
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/me/settings/{name}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/me/settings/{name}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me/settings/{name}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/me/settings/{name}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create a User on the system
Create a User on the system.
Body
UserInput request
A representation of a User
idinteger<int64>Unique user identifier
statusstringCurrent account status
first_namestringGiven name
last_namestringFamily name
slugstringURL-safe identifier
emailstringEmail address
mobilestringMobile phone number in E.164 format
dobstringDate of birth (YYYY-MM-DD)
localestringIETF language tag
icon_urlstringAvatar image URL
photostring<binary>passwordstringResponse
User response
User response
Unauthorized
Forbidden
Validation error
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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-01T00:00:00.000Z",
"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-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"photo": "<binary>",
"password": "string"
}),
});
const data = await response.json();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-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"photo": "<binary>",
"password": "string"
}),
});
const data: Record<string, unknown> = 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-01T00:00:00.000Z",
"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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/users')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/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-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"photo": "<binary>",
"password": "string"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"photo": "<binary>",
"password": "string"
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/users", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"photo": "<binary>",
"password": "string"
}{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Send a verification SMS
Send an account verification SMS to the user's mobile number.
Parameters
idinteger<int64>requiredpathUser id
Response
Success response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/users/{id}/send_verification_sms', {
method: 'POST',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.post('https://api.mytommy.com/v1/users/{id}/send_verification_sms')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/users/{id}/send_verification_sms')
request = Net::HTTP::Post.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/users/{id}/send_verification_sms", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Send a verification email
Send an account verification email to the user's email address.
Parameters
idinteger<int64>requiredpathUser id
Response
Success response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/users/{id}/send_verification_email', {
method: 'POST',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.post('https://api.mytommy.com/v1/users/{id}/send_verification_email')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/users/{id}/send_verification_email')
request = Net::HTTP::Post.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/users/{id}/send_verification_email", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Reset a user password
Reset a user password for the account associated with the provided email address or mobile number.
Parameters
loginstringrequiredqueryThe user email address or mobile number
Response
Success response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/users/reset_password', {
method: 'POST',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.post('https://api.mytommy.com/v1/users/reset_password')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/users/reset_password')
request = Net::HTTP::Post.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/users/reset_password", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Login
This method handles users who are \ authenticating with an email or phone, and password combination.
Body
UserCredentials request
User login credentials
loginstringrequiredpasswordstringrequiredResponse
User response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = await response.json();import requests
payload = {
"login": "string",
"password": "string"
}
response = requests.post('https://api.mytommy.com/v1/sessions', json=payload)
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/sessions')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"login": "string",
"password": "string"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"login": "string",
"password": "string"
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/sessions", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"login": "string",
"password": "string"
}{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Logout
This method destroys the current user session.
Response
Success response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/sessions', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/sessions')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/sessions')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/sessions", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get the current account QR code image
Get the current account QR code image.
Response
Image response
Unauthorized
Forbidden
Not Found
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/me/qr', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/me/qr')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me/qr')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/me/qr", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a user
Get a user object by slug.
Parameters
idstringrequiredpathUser slug or ID
Response
User response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/users/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/users/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/users/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/users/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Search users
Get all users who's mobile number matches the given search term.
Parameters
termstringrequiredquerySearch term used to filter users
Response
User response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/users/search', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/users/search')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/users/search')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/users/search", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Verify a user account
Verify a user account using the given pin code.
Parameters
pinstringrequiredqueryVerification PIN code
user_idinteger<int64>queryOptional user identifier to scope the verification lookup
emailstringqueryOptional email used for verification lookup
mobilestringqueryOptional mobile number used for verification lookup
Response
User response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/users/verify', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/users/verify')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/users/verify')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/users/verify", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 work-life score chart data for the current user
Get work-life score chart data for the current user.
Response
WLS chart data
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/me/wls', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/me/wls')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/me/wls')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/me/wls", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"labels": [
"string"
],
"values": [
0
],
"team_values": {},
"feedback": [
"string"
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get account
Get account settings.
Response
Workforce response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update account
Update account settings.
Body
WorkforceInput request
Object for updating a Workforce account
namestringDisplay name
week_startstringmondayturesdaywednesdaytimeclock_require_gpsbooleantimeclock_require_photobooleantimeclock_enable_mobilebooleantimeclock_enable_webbooleantimeclock_enable_kioskbooleantimesheets_rounding_methodstringnoneupdownnearesttimesheets_rounding_minutesintegertimesheets_enable_break_roundingbooleanshift_upcoming_notification_minutesintegerMinutes before shift start to send notification
shift_forgot_clockin_minutesintegerMinutes after shift start to send forgot clockin notification
shift_forgot_clockout_minutesintegerMinutes after shift end to send forgot clockout notification
shift_notifications_enabledbooleanEnable/disable shift notifications
event_notifications_enabledbooleanEnable/disable event notifications
dataobjectArbitrary data storage
Response
Workforce response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/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": {}
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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": {}
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/workforce", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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": {}
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get employees as manager
Get employees as manager.
Response
WorkforceEmployee response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/employees', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/manager/employees')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/employees')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/manager/employees", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get an employee as manager
Get an employee as manager by ID.
Parameters
user_idstringrequiredpathResponse
WorkforceEmployee response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/employees/{user_id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/manager/employees/{user_id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/employees/{user_id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/manager/employees/{user_id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update an employee
Update an employee by ID.
Body
WorkforceEmployeeInput request
Object for updating an employee
Object for creating or updating a Team Member
user_idinteger<int64>requiredteam_idinteger<int64>requiredfavoritebooleanmutebooleanphotostring<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_vehiclebooleancompliance_checkstringnotesstringParameters
user_idstringrequiredpathResponse
WorkforceEmployee response
Unauthorized
Forbidden
Validation error
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/employees/{user_id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/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"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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"
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/workforce/manager/employees/{user_id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get availabilities
Get availabilities belonging to the current account.
Response
WorkforceAvailability response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/availabilities', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/availabilities')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/availabilities')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/availabilities", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get availability for date
Get a availability for date.
Parameters
datestring<date>requiredpathAvailability date
Response
WorkforceAvailability response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/availabilities/{date}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/availabilities/{date}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/availabilities/{date}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/availabilities/{date}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update availability for date
Update availability for date.
Body
WorkforceAvailabilityInput request
Object for updating a availability
amintegerpmintegerndintegeram_lockedbooleanpm_lockedbooleannd_lockedbooleandatestring<date>Parameters
datestring<date>requiredpathAvailability date
Response
WorkforceAvailability response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/availabilities/{date}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"am": 0,
"pm": 0,
"nd": 0,
"am_locked": true,
"pm_locked": true,
"nd_locked": true,
"date": "2024-01-15"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"am": 0,
"pm": 0,
"nd": 0,
"am_locked": true,
"pm_locked": true,
"nd_locked": true,
"date": "2024-01-15"
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/workforce/availabilities/{date}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"am": 0,
"pm": 0,
"nd": 0,
"am_locked": true,
"pm_locked": true,
"nd_locked": true,
"date": "2024-01-15"
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create a shift question
Create a shift question.
Body
WorkforceShiftQuestion request
Object representing a shift question
team_idinteger<int64>textstringoffset_minutesinteger<int64>whenstringalwaysstart_shiftend_shiftalwaysbooleanenabledbooleantag_idsArray<integer>Response
WorkforceShiftQuestion response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/shift_questions')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"team_id": 0,
"text": "string",
"offset_minutes": 0,
"when": "always",
"always": true,
"enabled": true,
"tag_ids": [
0
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"team_id": 0,
"text": "string",
"offset_minutes": 0,
"when": "always",
"always": true,
"enabled": true,
"tag_ids": [
0
]
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/workforce/manager/shift_questions", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"team_id": 0,
"text": "string",
"offset_minutes": 0,
"when": "always",
"always": true,
"enabled": true,
"tag_ids": [
0
]
}{
"team_id": 0,
"text": "string",
"offset_minutes": 0,
"when": "always",
"always": true,
"enabled": true,
"tag_ids": [
0
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get shifts
Get shifts belonging to the current account.
Response
WorkforceShift response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/shifts', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/shifts')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/shifts')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/shifts", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"id": 123,
"user_id": 0,
"team_id": 0,
"assignee_id": 0,
"event_id": 0,
"shift_on_same_day": true,
"shift_requested": true
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get active shifts
Get active shifts belonging to the current account.
Response
WorkforceShift response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/shifts/active', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/shifts/active')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/shifts/active')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/shifts/active", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"id": 123,
"user_id": 0,
"team_id": 0,
"assignee_id": 0,
"event_id": 0,
"shift_on_same_day": true,
"shift_requested": true
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a shift
Get a shift by ID.
Parameters
idinteger<int64>requiredpathWorkforceShift id
Response
WorkforceShift response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/shifts/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/shifts/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/shifts/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/shifts/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"id": 123,
"user_id": 0,
"team_id": 0,
"assignee_id": 0,
"event_id": 0,
"shift_on_same_day": true,
"shift_requested": true
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get shift questions
Get shift questions by shift ID.
Parameters
idinteger<int64>requiredpathWorkforceShift id
Response
WorkforceShiftQuestion response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/shifts/{id}/questions', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/shifts/{id}/questions')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/shifts/{id}/questions')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/shifts/{id}/questions", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"team_id": 0,
"text": "string",
"offset_minutes": 0,
"when": "always",
"always": true,
"enabled": true,
"tag_ids": [
0
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create a shift answer
Create a shift answer.
Body
WorkforceShiftAnswer request
Object representing a shift answer
team_idinteger<int64>shift_idinteger<int64>shift_question_idinteger<int64>attendance_idinteger<int64>user_idinteger<int64>textstringParameters
idstringrequiredpathResponse
WorkforceShiftAnswer response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/shifts/{id}/answers')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"team_id": 0,
"shift_id": 0,
"shift_question_id": 0,
"attendance_id": 0,
"user_id": 0,
"text": "string"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"team_id": 0,
"shift_id": 0,
"shift_question_id": 0,
"attendance_id": 0,
"user_id": 0,
"text": "string"
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/workforce/shifts/{id}/answers", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"team_id": 0,
"shift_id": 0,
"shift_question_id": 0,
"attendance_id": 0,
"user_id": 0,
"text": "string"
}{
"team_id": 0,
"shift_id": 0,
"shift_question_id": 0,
"attendance_id": 0,
"user_id": 0,
"text": "string"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get shifts as manager
Get shifts as manager.
Response
WorkforceShift response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shifts', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/manager/shifts')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/shifts')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/manager/shifts", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"id": 123,
"user_id": 0,
"team_id": 0,
"assignee_id": 0,
"event_id": 0,
"shift_on_same_day": true,
"shift_requested": true
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create a shift
Create a shift.
Body
WorkforceShiftInput request
Object for updating a shift
titlestringHuman-friendly title
start_atstring<date-time>end_atstring<date-time>statusstringopenassignedpublishedCurrent status
location_idinteger<int64>location_namestringrolestringdepartmentstringdetailsstringdataobjectResponse
WorkforceShift response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/shifts')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/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": {}
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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": {}
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/workforce/manager/shifts", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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": {}
}{
"id": 123,
"user_id": 0,
"team_id": 0,
"assignee_id": 0,
"event_id": 0,
"shift_on_same_day": true,
"shift_requested": true
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a shift as manager
Get a shift as manager by ID.
Parameters
idinteger<int64>requiredpathWorkforceShift id
Response
WorkforceShift response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shifts/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/manager/shifts/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/shifts/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/manager/shifts/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"id": 123,
"user_id": 0,
"team_id": 0,
"assignee_id": 0,
"event_id": 0,
"shift_on_same_day": true,
"shift_requested": true
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update a shift as manager
Update a shift as a manager by ID.
Body
WorkforceShiftInput request
Object for updating a shift
titlestringHuman-friendly title
start_atstring<date-time>end_atstring<date-time>statusstringopenassignedpublishedCurrent status
location_idinteger<int64>location_namestringrolestringdepartmentstringdetailsstringdataobjectParameters
idinteger<int64>requiredpathWorkforceShift id
Response
WorkforceShift response
Unauthorized
Forbidden
Validation error
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/shifts/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/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": {}
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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": {}
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/workforce/manager/shifts/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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": {}
}{
"id": 123,
"user_id": 0,
"team_id": 0,
"assignee_id": 0,
"event_id": 0,
"shift_on_same_day": true,
"shift_requested": true
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete a shift as manager
Delete a shift as a manager by ID.
Parameters
idinteger<int64>requiredpathWorkforceShift id
Response
WorkforceShift response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shifts/{id}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/workforce/manager/shifts/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/shifts/{id}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/workforce/manager/shifts/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"id": 123,
"user_id": 0,
"team_id": 0,
"assignee_id": 0,
"event_id": 0,
"shift_on_same_day": true,
"shift_requested": true
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create a shift request
Create a shift request.
Response
WorkforceShiftRequest response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/shift_requests', {
method: 'POST',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.post('https://api.mytommy.com/v1/workforce/shift_requests')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/shift_requests')
request = Net::HTTP::Post.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/workforce/shift_requests", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_id": 0,
"shift_id": 0,
"status": "active",
"id": 0,
"team_id": 0,
"requestor_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update a shift request
Update or update a shift request by ID.
Parameters
idinteger<int64>requiredpathWorkforceShiftRequest id
Response
WorkforceShiftRequest response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/shift_requests/{id}', {
method: 'PUT',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.put('https://api.mytommy.com/v1/workforce/shift_requests/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/shift_requests/{id}')
request = Net::HTTP::Put.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/workforce/shift_requests/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_id": 0,
"shift_id": 0,
"status": "active",
"id": 0,
"team_id": 0,
"requestor_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete a shift request
Delete a shift request by ID.
Parameters
idinteger<int64>requiredpathWorkforceShiftRequest id
Response
WorkforceShiftRequest response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/shift_requests/{id}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/workforce/shift_requests/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/shift_requests/{id}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/workforce/shift_requests/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_id": 0,
"shift_id": 0,
"status": "active",
"id": 0,
"team_id": 0,
"requestor_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get shift requests as manager
Get shift request as manager.
Response
WorkforceShiftRequest response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shift_requests', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/manager/shift_requests')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/shift_requests')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/manager/shift_requests", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"user_id": 0,
"shift_id": 0,
"status": "active",
"id": 0,
"team_id": 0,
"requestor_id": 0
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create a shift request as manager
Create a shift request as manager.
Body
WorkforceShiftRequestInput request
Object for updating a shift request
user_idinteger<int64>shift_idinteger<int64>statusstringrequestedshortlistedapprovedrejectedcanceledCurrent status
Response
WorkforceShiftRequest response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/shift_requests')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"user_id": 0,
"shift_id": 0,
"status": "active"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"user_id": 0,
"shift_id": 0,
"status": "active"
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/workforce/manager/shift_requests", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_id": 0,
"shift_id": 0,
"status": "active"
}{
"user_id": 0,
"shift_id": 0,
"status": "active",
"id": 0,
"team_id": 0,
"requestor_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a shift request as manager
Get a shift request as manager by ID.
Parameters
idinteger<int64>requiredpathWorkforceShiftRequest id
Response
WorkforceShiftRequest response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/shift_requests/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/manager/shift_requests/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/shift_requests/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/manager/shift_requests/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_id": 0,
"shift_id": 0,
"status": "active",
"id": 0,
"team_id": 0,
"requestor_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update a shift request as manager
Update a shift request as manager by ID.
Body
WorkforceShiftRequestInput request
Object for updating a shift request
user_idinteger<int64>shift_idinteger<int64>statusstringrequestedshortlistedapprovedrejectedcanceledCurrent status
Parameters
idinteger<int64>requiredpathWorkforceShiftRequest id
Response
WorkforceShiftRequest response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/shift_requests/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"user_id": 0,
"shift_id": 0,
"status": "active"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"user_id": 0,
"shift_id": 0,
"status": "active"
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/workforce/manager/shift_requests/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_id": 0,
"shift_id": 0,
"status": "active"
}{
"user_id": 0,
"shift_id": 0,
"status": "active",
"id": 0,
"team_id": 0,
"requestor_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get timesheets
Get timesheets belonging to the current account.
Response
WorkforceTimesheet response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/timesheets', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/timesheets')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/timesheets')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/timesheets", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a timesheet
Get a timesheet by ID.
Parameters
idinteger<int64>requiredpathWorkforceTimesheet id
Response
WorkforceTimesheet response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/timesheets/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/timesheets/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/timesheets/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/timesheets/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update an timesheet
Update an timesheet by ID.
Body
WorkforceTimesheetInput request
Object for updating a timesheet
statusstringunsubmittedsubmittedpreapprovedapproveddeniedCurrent status
resource_idinteger<int64>resource_typestringstart_datestring<date>end_datestring<date>manualbooleanParameters
idinteger<int64>requiredpathWorkforceTimesheet id
Response
WorkforceTimesheet response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/timesheets/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"status": "active",
"resource_id": 0,
"resource_type": "string",
"start_date": "2024-01-15",
"end_date": "2024-01-15",
"manual": true
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"status": "active",
"resource_id": 0,
"resource_type": "string",
"start_date": "2024-01-15",
"end_date": "2024-01-15",
"manual": true
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/workforce/timesheets/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"status": "active",
"resource_id": 0,
"resource_type": "string",
"start_date": "2024-01-15",
"end_date": "2024-01-15",
"manual": true
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete a timesheet
Delete a timesheet by ID.
Parameters
idinteger<int64>requiredpathWorkforceTimesheetItem id
Response
Null response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/timesheets/{id}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/workforce/timesheets/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/timesheets/{id}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/workforce/timesheets/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get timesheets as manager
Get timesheets as manager.
Response
WorkforceTimesheet response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/timesheets', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/manager/timesheets')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/timesheets')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/manager/timesheets", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create a timesheet as manager
Create a timesheet as manager.
Body
WorkforceTimesheetInput request
Object for updating a timesheet
statusstringunsubmittedsubmittedpreapprovedapproveddeniedCurrent status
resource_idinteger<int64>resource_typestringstart_datestring<date>end_datestring<date>manualbooleanResponse
WorkforceTimesheet response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/timesheets')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"status": "active",
"resource_id": 0,
"resource_type": "string",
"start_date": "2024-01-15",
"end_date": "2024-01-15",
"manual": true
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"status": "active",
"resource_id": 0,
"resource_type": "string",
"start_date": "2024-01-15",
"end_date": "2024-01-15",
"manual": true
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/workforce/manager/timesheets", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"status": "active",
"resource_id": 0,
"resource_type": "string",
"start_date": "2024-01-15",
"end_date": "2024-01-15",
"manual": true
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a timesheet
Get a timesheet as manager by ID.
Parameters
idinteger<int64>requiredpathWorkforceTimesheet id
Response
WorkforceTimesheet response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/timesheets/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/manager/timesheets/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/timesheets/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/manager/timesheets/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update an timesheet
Update an timesheet as manager by ID.
Body
WorkforceTimesheetInput request
Object for updating a timesheet
statusstringunsubmittedsubmittedpreapprovedapproveddeniedCurrent status
resource_idinteger<int64>resource_typestringstart_datestring<date>end_datestring<date>manualbooleanParameters
idinteger<int64>requiredpathWorkforceTimesheet id
Response
WorkforceTimesheet response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/timesheets/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"status": "active",
"resource_id": 0,
"resource_type": "string",
"start_date": "2024-01-15",
"end_date": "2024-01-15",
"manual": true
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"status": "active",
"resource_id": 0,
"resource_type": "string",
"start_date": "2024-01-15",
"end_date": "2024-01-15",
"manual": true
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/workforce/manager/timesheets/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"status": "active",
"resource_id": 0,
"resource_type": "string",
"start_date": "2024-01-15",
"end_date": "2024-01-15",
"manual": true
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Bulk update timesheets as manager
Bulk update timesheets as manager by an array of IDs.
Body
WorkforceTimesheetBulkInput request
Object for bulk updating a timesheets
Object for updating a timesheet
statusstringunsubmittedsubmittedpreapprovedapproveddeniedCurrent status
resource_idinteger<int64>resource_typestringstart_datestring<date>end_datestring<date>manualbooleantimesheet_idsArray<integer>Response
WorkforceTimesheet response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/timesheets/bulk_update')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/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
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"status": "active",
"resource_id": 0,
"resource_type": "string",
"start_date": "2024-01-15",
"end_date": "2024-01-15",
"manual": true,
"timesheet_ids": [
0
]
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/workforce/manager/timesheets/bulk_update", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"status": "active",
"resource_id": 0,
"resource_type": "string",
"start_date": "2024-01-15",
"end_date": "2024-01-15",
"manual": true,
"timesheet_ids": [
0
]
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get timesheet items
Get timesheet items for the current account.
Response
WorkforceTimesheetItem response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/timesheet_items', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/timesheet_items')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/timesheet_items')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/timesheet_items", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create a timesheet item
Create a timesheet item.
Body
WorkforceTimesheetItemInput request
Object for updating a timesheet item
shift_idinteger<int64>timesheet_idinteger<int64>work_hoursnumber<float>break_hoursnumber<float>addressstringmanualbooleanResponse
WorkforceTimesheetItem response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/timesheet_items')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"shift_id": 0,
"timesheet_id": 0,
"work_hours": 0,
"break_hours": 0,
"address": "string",
"manual": true
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"shift_id": 0,
"timesheet_id": 0,
"work_hours": 0,
"break_hours": 0,
"address": "string",
"manual": true
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/workforce/timesheet_items", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"shift_id": 0,
"timesheet_id": 0,
"work_hours": 0,
"break_hours": 0,
"address": "string",
"manual": true
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a timesheet item
Get a timesheet item by ID.
Parameters
idinteger<int64>requiredpathWorkforceTimesheetItem id
Response
WorkforceTimesheetItem response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/timesheet_items/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/timesheet_items/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/timesheet_items/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/timesheet_items/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update a timesheet item
Update a timesheet item by ID.
Body
WorkforceTimesheetItemInput request
Object for updating a timesheet item
shift_idinteger<int64>timesheet_idinteger<int64>work_hoursnumber<float>break_hoursnumber<float>addressstringmanualbooleanParameters
idinteger<int64>requiredpathWorkforceTimesheetItem id
Response
WorkforceTimesheetItem response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/timesheet_items/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"shift_id": 0,
"timesheet_id": 0,
"work_hours": 0,
"break_hours": 0,
"address": "string",
"manual": true
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"shift_id": 0,
"timesheet_id": 0,
"work_hours": 0,
"break_hours": 0,
"address": "string",
"manual": true
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/workforce/timesheet_items/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"shift_id": 0,
"timesheet_id": 0,
"work_hours": 0,
"break_hours": 0,
"address": "string",
"manual": true
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete a timesheet item
Delete a timesheet item by ID.
Parameters
idinteger<int64>requiredpathWorkforceTimesheetItem id
Response
Null response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/timesheet_items/{id}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/workforce/timesheet_items/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/timesheet_items/{id}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/workforce/timesheet_items/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get timesheet items
Get timesheet items belonging to the current account.
Response
WorkforceTimesheetItem response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/timesheet_items', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/manager/timesheet_items')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/timesheet_items')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/manager/timesheet_items", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create a timesheet item
Create a timesheet item.
Body
WorkforceTimesheetItemInput request
Object for updating a timesheet item
shift_idinteger<int64>timesheet_idinteger<int64>work_hoursnumber<float>break_hoursnumber<float>addressstringmanualbooleanResponse
WorkforceTimesheetItem response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/timesheet_items')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"shift_id": 0,
"timesheet_id": 0,
"work_hours": 0,
"break_hours": 0,
"address": "string",
"manual": true
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"shift_id": 0,
"timesheet_id": 0,
"work_hours": 0,
"break_hours": 0,
"address": "string",
"manual": true
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/workforce/manager/timesheet_items", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"shift_id": 0,
"timesheet_id": 0,
"work_hours": 0,
"break_hours": 0,
"address": "string",
"manual": true
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a timesheet item as manager
Get a timesheet item as manager by ID.
Parameters
idinteger<int64>requiredpathWorkforceTimesheetItem id
Response
WorkforceTimesheetItem response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/timesheet_items/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/manager/timesheet_items/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/timesheet_items/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/manager/timesheet_items/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update a timesheet item as manager
Update a timesheet item as manager by ID.
Body
WorkforceTimesheetItemInput request
Object for updating a timesheet item
shift_idinteger<int64>timesheet_idinteger<int64>work_hoursnumber<float>break_hoursnumber<float>addressstringmanualbooleanParameters
idinteger<int64>requiredpathWorkforceTimesheetItem id
Response
WorkforceTimesheetItem response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/timesheet_items/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"shift_id": 0,
"timesheet_id": 0,
"work_hours": 0,
"break_hours": 0,
"address": "string",
"manual": true
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"shift_id": 0,
"timesheet_id": 0,
"work_hours": 0,
"break_hours": 0,
"address": "string",
"manual": true
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/workforce/manager/timesheet_items/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"shift_id": 0,
"timesheet_id": 0,
"work_hours": 0,
"break_hours": 0,
"address": "string",
"manual": true
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get attendances
Get attendances for the current account.
Response
WorkforceAttendance response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/attendances', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/attendances')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/attendances')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/attendances", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {},
"id": 0,
"user_id": 0
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create an attendance
Create an attendance.
Body
WorkforceAttendanceInput request
Object for updating an attendance
event_idinteger<int64>latitudenumber<float>longitudenumber<float>accuracynumber<float>statusstringstartpauseresumestopCurrent status
addressstringlocation_namestringimageobjectResponse
WorkforceAttendance response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/attendances')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {}
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {}
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/workforce/attendances", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {}
}{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {},
"id": 0,
"user_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get active attendances
Get active attendance for the current account.
Response
WorkforceAttendance response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/attendances/active', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/attendances/active')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/attendances/active')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/attendances/active", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {},
"id": 0,
"user_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get an attendance
Get an attendance by ID.
Parameters
idinteger<int64>requiredpathWorkforceAttendance id
Response
WorkforceAttendance response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/attendances/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/attendances/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/attendances/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/attendances/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {},
"id": 0,
"user_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update an attendance
Update an attendance by ID.
Body
WorkforceAttendanceInput request
Object for updating an attendance
event_idinteger<int64>latitudenumber<float>longitudenumber<float>accuracynumber<float>statusstringstartpauseresumestopCurrent status
addressstringlocation_namestringimageobjectParameters
idinteger<int64>requiredpathWorkforceAttendance id
Response
WorkforceAttendance response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/attendances/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {}
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {}
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/workforce/attendances/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {}
}{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {},
"id": 0,
"user_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get attendances
Get attendances belonging to the current account.
Response
WorkforceAttendance response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/attendances', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/manager/attendances')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/attendances')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/manager/attendances", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {},
"id": 0,
"user_id": 0
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create an attendance
Create an attendance.
Body
WorkforceAttendanceInput request
Object for updating an attendance
event_idinteger<int64>latitudenumber<float>longitudenumber<float>accuracynumber<float>statusstringstartpauseresumestopCurrent status
addressstringlocation_namestringimageobjectResponse
WorkforceAttendance response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/attendances')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {}
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {}
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/workforce/manager/attendances", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {}
}{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {},
"id": 0,
"user_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get active attendances as manager
Get active attendances as manager.
Response
WorkforceAttendance response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/attendances/active', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/manager/attendances/active')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/attendances/active')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/manager/attendances/active", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {},
"id": 0,
"user_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get an attendance as manager
Get an attendance as manager by ID.
Parameters
idinteger<int64>requiredpathWorkforceAttendance id
Response
WorkforceAttendance response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/workforce/manager/attendances/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/workforce/manager/attendances/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/attendances/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/workforce/manager/attendances/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {},
"id": 0,
"user_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update an attendance as manager
Update an attendance as manager by ID.
Body
WorkforceAttendanceInput request
Object for updating an attendance
event_idinteger<int64>latitudenumber<float>longitudenumber<float>accuracynumber<float>statusstringstartpauseresumestopCurrent status
addressstringlocation_namestringimageobjectParameters
idinteger<int64>requiredpathWorkforceAttendance id
Response
WorkforceAttendance response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/workforce/manager/attendances/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {}
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {}
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/workforce/manager/attendances/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {}
}{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {},
"id": 0,
"user_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 all contacts belonging to the current account.
Response
Contact response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/contacts', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/contacts')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/contacts')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/contacts", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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"
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}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.
Body
ContactRequest request
A representation of a User
idinteger<int64>Unique user identifier
statusstringCurrent account status
first_namestringGiven name
last_namestringFamily name
slugstringURL-safe identifier
emailstringEmail address
mobilestringMobile phone number in E.164 format
dobstringDate of birth (YYYY-MM-DD)
localestringIETF language tag
icon_urlstringAvatar image URL
team_idsArray<integer>viastringResponse
Contact response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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-01T00:00:00.000Z",
"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-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"team_ids": [
0
],
"via": "string"
}),
});
const data = await response.json();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-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"team_ids": [
0
],
"via": "string"
}),
});
const data: Record<string, unknown> = 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-01T00:00:00.000Z",
"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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/contacts')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/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-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"team_ids": [
0
],
"via": "string"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"team_ids": [
0
],
"via": "string"
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/contacts", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"team_ids": [
0
],
"via": "string"
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a contact
Get a contact object by friend user ID.
Parameters
friend_idinteger<int64>requiredpathUser friend_id
Response
Contact response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/contacts/{friend_id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/contacts/{friend_id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/contacts/{friend_id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/contacts/{friend_id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update a contact
Update a single contact object.
Body
Contact request
A representation of a Contact
friend_idinteger<int64>requiredFriend user ID
favoritebooleanmutebooleanpersonalbooleanrolesArray<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>typestringfirst_namestringlast_namestringicon_urlstringemailstringmobilestringstatusstringmemberbooleanTrue when the friend has signed up to Tommy
last_online_atstring<date-time>Parameters
friend_idinteger<int64>requiredpathUser friend_id
Response
Contact response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/contacts/{friend_id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/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"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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"
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/contacts/{friend_id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Import bulk contacts
Import bulk contacts from a mobile phone or other device. Imported contacts must provide first_name and mobile or email parameters.
Body
Users request
Response
Contact response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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-01T00:00:00.000Z",
"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-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}
]),
});
const data = await response.json();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-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}
]),
});
const data: Record<string, unknown> = 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-01T00:00:00.000Z",
"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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/contacts/import')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/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-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}
]'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`[
{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}
]`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/contacts/import", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}
][
{
"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"
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Send contact request
Send a contact request to join the given user or team.
Body
TeamID request
team_idinteger<int64>Parameters
friend_idinteger<int64>requiredpathUser friend_id
Response
Contact response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/contacts/{friend_id}/add')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"team_id": 0
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"team_id": 0
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/contacts/{friend_id}/add", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"team_id": 0
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Invite contact
Invite the given user to become a contact of the current user or team.
Parameters
friend_idinteger<int64>requiredpathUser friend_id
Response
Contact response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/contacts/{friend_id}/invite', {
method: 'POST',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.post('https://api.mytommy.com/v1/contacts/{friend_id}/invite')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/contacts/{friend_id}/invite')
request = Net::HTTP::Post.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/contacts/{friend_id}/invite", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Accept contact request
Accept an incoming contact request from the given user.
Body
TeamIDs request
team_idsArray<integer>Parameters
friend_idinteger<int64>requiredpathUser friend_id
Response
Contact response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/contacts/{friend_id}/accept')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"team_ids": [
0
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"team_ids": [
0
]
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/contacts/{friend_id}/accept", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"team_ids": [
0
]
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Reject contact request
Reject an incoming contact request from the given user.
Parameters
friend_idinteger<int64>requiredpathUser friend_id
Response
Contact response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/contacts/{friend_id}/decline', {
method: 'POST',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.post('https://api.mytommy.com/v1/contacts/{friend_id}/decline')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/contacts/{friend_id}/decline')
request = Net::HTTP::Post.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/contacts/{friend_id}/decline", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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.
Create a team
Create a team.
Response
Team response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/teams', {
method: 'POST',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.post('https://api.mytommy.com/v1/teams')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/teams')
request = Net::HTTP::Post.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/teams", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get the current team object
Get the current team object.
Response
Team response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/team', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/team')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/team')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/team", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update the current team object
Update the current team object.
Body
TeamInput request
A representation of a Team
idinteger<int64>requiredUnique team identifier
user_idinteger<int64>requiredOwner user ID
namestringrequiredTeam display name
photostring<binary>icon_urlstringTeam icon URL
emailstringphonestringstatusstringCurrent status
slugstringfeaturesobjectFeature flags enabled for the team
Response
Team response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/team')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/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
}
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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
}
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/team", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}
}{
"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
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 objects.
Response
Setting response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/team/settings', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/team/settings')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/team/settings')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/team/settings", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update team features
Bulk update team feature flags. Unknown keys are ignored.
Body
featuresobjectFeature flags enabled for the team
Response
Updated team features
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/team/features')
request = Net::HTTP::Patch.new(uri)
request['Content-Type'] = 'application/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
}
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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
}
}`)
req, _ := http.NewRequest("PATCH", "https://api.mytommy.com/v1/team/features", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}
}{
"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
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get team setting value
Get a team setting value.
Parameters
namestringrequiredpathSetting name
Response
Setting response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/team/settings/{name}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/team/settings/{name}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/team/settings/{name}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/team/settings/{name}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update team setting value
Update a team setting value.
Body
SettingData request
dataobjectrequiredSetting data as JSON, boolean, integer or string.
contextstring_formatstringParameters
namestringrequiredpathSetting name
Response
Setting response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/team/settings/{name}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"data": {},
"context": "string",
"_format": "string"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"data": {},
"context": "string",
"_format": "string"
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/team/settings/{name}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"data": {},
"context": "string",
"_format": "string"
}{}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete team setting value
Delete a team setting value.
Parameters
namestringrequiredpathSetting name
Response
No content
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/team/settings/{name}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/team/settings/{name}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/team/settings/{name}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/team/settings/{name}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Apply demo data
Apply industry-specific demo data to the current team.
Body
Demo data application parameters
seed_typestringworkforceaged_carehospitalitynursingpartnerretailconstructionload_testingThe type of demo data to apply
optionsobjectOptional parameters to customize the demo data generation
Response
Demo data sync started successfully
Invalid seed type
Unauthorized
Internal error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/team/demo_data/apply')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/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
}
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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
}
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/team/demo_data/apply", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}
}{
"success": true,
"message": "string",
"sync_id": 0,
"team_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Reset demo data
Remove all generated demo data from the current team.
Response
Demo data reset successfully
Unauthorized
Internal error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/team/demo_data/reset', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/team/demo_data/reset')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/team/demo_data/reset')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/team/demo_data/reset", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"success": true,
"message": "string",
"team_id": 0
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get all members belonging to the current team
Get all members belonging to the current team.
Response
TeamMember response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/team/members', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/team/members')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/team/members')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/team/members", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a team member
Get a single team member object by it's corresponding user ID.
Parameters
user_idinteger<int64>requiredpathUser user_id
Response
TeamMember response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/team/members/{user_id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/team/members/{user_id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/team/members/{user_id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/team/members/{user_id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update a team member
Update a single team member object.
Body
TeamMember request
Object that represents a Team Member
Object for creating or updating a Team Member
user_idinteger<int64>requiredteam_idinteger<int64>requiredfavoritebooleanmutebooleanphotostring<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_namestringlast_namestringemailstringmobilestringmanagerbooleanmemberbooleanTrue when the team member has signed up to Tommy
statusstringicon_urlstringaddon_linksArray<any>Array of profile links accessible by the current User on the Team Member profile
Parameters
user_idinteger<int64>requiredpathUser user_id
Response
TeamMember response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/team/members/{user_id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/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"
}
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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"
}
]
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/team/members/{user_id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}
]
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Invite team member
Invite a member to the current team.
Body
TeamMember request
Object that represents a Team Member
Object for creating or updating a Team Member
user_idinteger<int64>requiredteam_idinteger<int64>requiredfavoritebooleanmutebooleanphotostring<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_namestringlast_namestringemailstringmobilestringmanagerbooleanmemberbooleanTrue when the team member has signed up to Tommy
statusstringicon_urlstringaddon_linksArray<any>Array of profile links accessible by the current User on the Team Member profile
Response
TeamMember response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/team/members/invite')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/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"
}
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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"
}
]
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/team/members/invite", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}
]
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a teams
Get a teams object by slug.
Parameters
idstringrequiredpathTeam slug
Response
Team response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/teams/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/teams/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/teams/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/teams/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 all developers on the system
Get all developers on the system.
Response
Developer response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/developers', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/developers')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/developers')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/developers", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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-02T12:00:00.000Z",
"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"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a developer
Get a developer object by user ID.
Parameters
idinteger<int64>requiredpathDeveloper id
Response
Developer response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/developers/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/developers/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/developers/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/developers/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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-02T12:00:00.000Z",
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get developer addons
Get all addons for a specific developer.
Parameters
idinteger<int64>requiredpathDeveloper id
Response
Addon response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/developers/{id}/addons', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/developers/{id}/addons')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/developers/{id}/addons')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/developers/{id}/addons", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get developer actions
Get all actions for a specific developer.
Parameters
idinteger<int64>requiredpathDeveloper id
Response
Action response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/developers/{id}/actions', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/developers/{id}/actions')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/developers/{id}/actions')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/developers/{id}/actions", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 developer addons
Get all addons for a specific developer.
Parameters
idinteger<int64>requiredpathDeveloper id
Response
Addon response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/developers/{id}/addons', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/developers/{id}/addons')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/developers/{id}/addons')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/developers/{id}/addons", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get all addons
Get all addons available for install by the current team or user.
Response
Addon response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/addons')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/addons", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get recommended addons
Get all recommended addons available for install by the current team or user.
Response
Addon response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide your API key via the api_key header.
curl -X GET 'https://api.mytommy.com/v1/addons/recommended'const response = await fetch('https://api.mytommy.com/v1/addons/recommended', {
method: 'GET',
});
const data = await response.json();const response = await fetch('https://api.mytommy.com/v1/addons/recommended', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/addons/recommended')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/recommended')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/addons/recommended", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get popular addons
Get all addons in order of popularity.
Response
Addon response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide your API key via the api_key header.
curl -X GET 'https://api.mytommy.com/v1/addons/popular'const response = await fetch('https://api.mytommy.com/v1/addons/popular', {
method: 'GET',
});
const data = await response.json();const response = await fetch('https://api.mytommy.com/v1/addons/popular', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/addons/popular')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/popular')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/addons/popular", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get installed addons
Get all addons installed for the current team or user.
Response
Addon response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/installed', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/addons/installed')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/installed')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/addons/installed", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get an addon
Get an addon by it's package name.
Parameters
packagestringrequiredpathAddon package
Response
Addon response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/{package}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/addons/{package}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{package}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/addons/{package}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Report addon as inappropriate
Report addon as inappropriate.
Parameters
packagestringrequiredpathAddon package
Response
Success response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/{package}/report', {
method: 'POST',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.post('https://api.mytommy.com/v1/addons/{package}/report')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{package}/report')
request = Net::HTTP::Post.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/addons/{package}/report", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get addon actions
Get all actions for an addon.
Parameters
packagestringrequiredpathAddon package
Response
Action response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/{package}/actions', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/addons/{package}/actions')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{package}/actions')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/addons/{package}/actions", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get installed addon
Get an installed addon.
Parameters
addon_packagestringrequiredpathAddon package
Response
Addon response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/addons/{addon_package}/install')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{addon_package}/install')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/addons/{addon_package}/install", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Install addon
Install an addon.
Body
Addon request
idinteger<int64>requiredUnique identifier
user_idinteger<int64>requireddeveloper_idinteger<int64>packagestringrequiredtitlestringHuman-friendly title
authorstringenvironmentstringversionstringdescriptionstringHuman-friendly description
homepagestringicon_urlstringfile_base_urlstringinstalledbooleanupdated_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>Parameters
addon_packagestringrequiredpathAddon package
Response
Addon response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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-02T12:00:00.000Z",
"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-02T12:00:00.000Z",
"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();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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}),
});
const data: Record<string, unknown> = 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-02T12:00:00.000Z",
"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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{addon_package}/install')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/addons/{addon_package}/install", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update installed addon
Update an installed addon.
Parameters
addon_packagestringrequiredpathAddon package
Response
Addon response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install', {
method: 'PUT',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.put('https://api.mytommy.com/v1/addons/{addon_package}/install')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{addon_package}/install')
request = Net::HTTP::Put.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/addons/{addon_package}/install", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete installed addon
Delete an installed addon.
Parameters
addon_packagestringrequiredpathAddon package
Response
Addon response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/addons/{addon_package}/install')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{addon_package}/install')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/addons/{addon_package}/install", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get addon permissions
Get all addon permission objects.
Parameters
addon_packagestringrequiredpathAddon package
Response
Permission response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install/permissions', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/addons/{addon_package}/install/permissions')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{addon_package}/install/permissions')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/addons/{addon_package}/install/permissions", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_id": 0,
"team_id": 0,
"name": "Example Name",
"title": "Example Title",
"hint": "string",
"resource_type": "string",
"resource_kind": "string",
"operations": [
"string"
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get addon permission
Get an addon permission object.
Parameters
addon_packagestringrequiredpathAddon package
namestringrequiredpathPermission name
Response
Permission response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install/permissions/{name}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/addons/{addon_package}/install/permissions/{name}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{addon_package}/install/permissions/{name}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/addons/{addon_package}/install/permissions/{name}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_id": 0,
"team_id": 0,
"name": "Example Name",
"title": "Example Title",
"hint": "string",
"resource_type": "string",
"resource_kind": "string",
"operations": [
"string"
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update addon permission
Update an addon permission object.
Body
Permission request
user_idinteger<int64>team_idinteger<int64>namestringDisplay name
titlestringHuman-friendly title
hintstringresource_typestringresource_kindstringoperationsArray<string>Array of permissable operations
Parameters
addon_packagestringrequiredpathAddon package
namestringrequiredpathPermission name
Response
Permission response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{addon_package}/install/permissions/{name}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/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"
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"user_id": 0,
"team_id": 0,
"name": "Example Name",
"title": "Example Title",
"hint": "string",
"resource_type": "string",
"resource_kind": "string",
"operations": [
"string"
]
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/addons/{addon_package}/install/permissions/{name}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_id": 0,
"team_id": 0,
"name": "Example Name",
"title": "Example Title",
"hint": "string",
"resource_type": "string",
"resource_kind": "string",
"operations": [
"string"
]
}{
"user_id": 0,
"team_id": 0,
"name": "Example Name",
"title": "Example Title",
"hint": "string",
"resource_type": "string",
"resource_kind": "string",
"operations": [
"string"
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get all addon settings
Get all addon settings objects.
Parameters
addon_packagestringrequiredpathAddon package
Response
Setting response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install/settings', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/addons/{addon_package}/install/settings')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{addon_package}/install/settings')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/addons/{addon_package}/install/settings", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_id": 0,
"team_id": 0,
"addon_install_id": 0,
"resource_id": 0,
"resource_type": "string",
"context": "string",
"format": "string",
"data": {}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get addon setting
Get an addon setting object.
Parameters
addon_packagestringrequiredpathAddon package
namestringrequiredpathSetting name
Response
Setting response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_id": 0,
"team_id": 0,
"addon_install_id": 0,
"resource_id": 0,
"resource_type": "string",
"context": "string",
"format": "string",
"data": {}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update addon settings
Update an addon settings object.
Body
Setting request
user_idinteger<int64>team_idinteger<int64>addon_install_idinteger<int64>resource_idinteger<int64>resource_typestringcontextstringformatstringdataobjectrequiredSetting data as JSON.
Parameters
addon_packagestringrequiredpathAddon package
namestringrequiredpathSetting name
Response
Setting response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"user_id": 0,
"team_id": 0,
"addon_install_id": 0,
"resource_id": 0,
"resource_type": "string",
"context": "string",
"format": "string",
"data": {}
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"user_id": 0,
"team_id": 0,
"addon_install_id": 0,
"resource_id": 0,
"resource_type": "string",
"context": "string",
"format": "string",
"data": {}
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_id": 0,
"team_id": 0,
"addon_install_id": 0,
"resource_id": 0,
"resource_type": "string",
"context": "string",
"format": "string",
"data": {}
}{
"user_id": 0,
"team_id": 0,
"addon_install_id": 0,
"resource_id": 0,
"resource_type": "string",
"context": "string",
"format": "string",
"data": {}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete addon setting
Delete an addon setting object.
Parameters
addon_packagestringrequiredpathAddon package
namestringrequiredpathSetting name
Response
Null response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/addons/{addon_package}/install/settings/{name}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Search addons
Get all addons matching the given search term.
Parameters
termstringrequiredquerySearch term used to filter addons
Response
Addon response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/search', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/addons/search')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/search')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/addons/search", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 developer actions
Get all actions for a specific developer.
Parameters
idinteger<int64>requiredpathDeveloper id
Response
Action response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/developers/{id}/actions', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/developers/{id}/actions')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/developers/{id}/actions')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/developers/{id}/actions", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get all actions
Get all available actions.
Response
Action response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/actions', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/actions')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/actions", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get popular actions
Get all actions in order of popularity.
Response
Action response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide your API key via the api_key header.
curl -X GET 'https://api.mytommy.com/v1/actions/popular'const response = await fetch('https://api.mytommy.com/v1/actions/popular', {
method: 'GET',
});
const data = await response.json();const response = await fetch('https://api.mytommy.com/v1/actions/popular', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/actions/popular')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/popular')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/actions/popular", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get installed actions
Get all installed actions for the current team or user.
Response
Action response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/actions/installed', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/actions/installed')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/installed')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/actions/installed", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get recent actions
Get recently used actions for the current team or user.
Response
Action response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/actions/recent', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/actions/recent')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/recent')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/actions/recent", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get action
Get a specific action by ID.
Parameters
idstringrequiredpathAction id
Response
Action response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/actions/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/actions/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/actions/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get action variables
Get variables for a specific action.
Parameters
idstringrequiredpathAction id
Response
object response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/actions/{id}/variables', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/actions/{id}/variables')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/{id}/variables')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/actions/{id}/variables", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}List action installs
Get all action installs for the current team or user.
Response
ActionInstall response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/actions/installs', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/actions/installs')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/installs')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/actions/installs", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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-02T12:00:00.000Z",
"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": {}
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Install action
Install an action for the current team or user.
Body
Action request
idinteger<int64>Unique identifier
user_idinteger<int64>developer_idinteger<int64>action_version_idinteger<int64>authorstringtriggeranyactivityanydependenciesobjectnamestringDisplay name
summarystringdescriptionstringHuman-friendly description
icon_urlstringinstalledbooleankindstringuniquebooleanResponse
Action response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/installs')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/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
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/actions/installs", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get installed action
Get an action install by ID.
Parameters
idstringrequiredpathActionInstall id
Response
ActionInstall response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/actions/installs/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/actions/installs/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/installs/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/actions/installs/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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-02T12:00:00.000Z",
"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": {}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update action install
Update an action install.
Body
ActionInstall request
idinteger<int64>Unique identifier
action_idinteger<int64>addon_install_idinteger<int64>titlestringHuman-friendly title
summarystringdescriptionstringHuman-friendly description
scheduleobjectinstalledbooleandeleted_atstring<date-time>updated_atstring<date-time>Last update timestamp (ISO8601)
tag_idsArray<integer>tags_listArray<string>triggeranyactivityanysettingsobjectParameters
idstringrequiredpathActionInstall id
Response
ActionInstall response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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-02T12:00:00.000Z",
"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-02T12:00:00.000Z",
"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();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-02T12:00:00.000Z",
"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: Record<string, unknown> = 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-02T12:00:00.000Z",
"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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/installs/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/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-02T12:00:00.000Z",
"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 = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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-02T12:00:00.000Z",
"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": {}
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/actions/installs/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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-02T12:00:00.000Z",
"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": {}
}{
"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-02T12:00:00.000Z",
"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": {}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete installed action
Delete an action install.
Parameters
idstringrequiredpathActionInstall id
Response
ActionInstall response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/actions/installs/{id}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/actions/installs/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/installs/{id}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/actions/installs/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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-02T12:00:00.000Z",
"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": {}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Run an action
Run an installed action.
Body
TriggerData request
trigger_dataobjectTrigger data object
Parameters
idstringrequiredpathActionInstall id
Response
Action response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/installs/{id}/run')
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"trigger_data": {}
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"trigger_data": {}
}`)
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/actions/installs/{id}/run", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"trigger_data": {}
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Run an action later
Schedule an installed action to run later.
Parameters
idstringrequiredpathActionInstall id
Response
Action response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/actions/installs/{id}/run_later', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/actions/installs/{id}/run_later')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/installs/{id}/run_later')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/actions/installs/{id}/run_later", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get action event history
Get history for an installed action.
Parameters
idstringrequiredpathActionInstall id
Response
AuditLog response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/actions/installs/{id}/history', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/actions/installs/{id}/history')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/installs/{id}/history')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/actions/installs/{id}/history", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"user_id": 0,
"team_id": 0,
"name": "Example Name",
"message": "string"
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get addon actions
Get all actions for an addon.
Parameters
packagestringrequiredpathAddon package
Response
Action response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/addons/{package}/actions', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/addons/{package}/actions')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/addons/{package}/actions')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/addons/{package}/actions", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Search actions
Search actions by term.
Parameters
termstringrequiredquerySearch term used to filter actions
Response
Action response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/actions/search', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/actions/search')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/actions/search')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/actions/search", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 chat rooms
Get all chat rooms.
Response
Chat response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/chats', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/chats')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/chats", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create chat room
Create a chat room with multiple users.
Body
ChatInput request
titlestringThe chat room title.
groupbooleanfavoritebooleanmutebooleanuser_idsArray<integer>Response
Chat response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"title": "Example Title",
"group": true,
"favorite": true,
"mute": true,
"user_ids": [
0
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"title": "Example Title",
"group": true,
"favorite": true,
"mute": true,
"user_ids": [
0
]
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/chats", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"title": "Example Title",
"group": true,
"favorite": true,
"mute": true,
"user_ids": [
0
]
}{
"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
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get or create chat room
Get or create a chat room with multiple given users.
Body
ChatInitiateInput request
Array of user IDs to initiate the chat with.
user_idsArray<integer>requiredResponse
Chat response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = await response.json();import requests
payload = {
"user_ids": [
0
]
}
response = requests.post('https://api.mytommy.com/v1/chats/initiate', json=payload)
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats/initiate')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"user_ids": [
0
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"user_ids": [
0
]
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/chats/initiate", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_ids": [
0
]
}{
"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
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get chat
Get a single chat object by it's ID.
Parameters
idinteger<int64>requiredpathChat id
Response
Chat response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/chats/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/chats/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/chats/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update chat
Update a chat object.
Body
ChatInput request
titlestringThe chat room title.
groupbooleanfavoritebooleanmutebooleanuser_idsArray<integer>Parameters
idinteger<int64>requiredpathChat id
Response
Chat response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"title": "Example Title",
"group": true,
"favorite": true,
"mute": true,
"user_ids": [
0
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"title": "Example Title",
"group": true,
"favorite": true,
"mute": true,
"user_ids": [
0
]
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/chats/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"title": "Example Title",
"group": true,
"favorite": true,
"mute": true,
"user_ids": [
0
]
}{
"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
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete chat
Delete a chat object.
Body
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.
titlestringThe chat room title.
groupbooleanfavoritebooleanmutebooleanunread_messages_countinteger<int64>usersArray<any>Parameters
idinteger<int64>requiredpathChat id
Response
Chat response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats/{id}')
request = Net::HTTP::Delete.new(uri)
request['Content-Type'] = 'application/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
}
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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
}
]
}`)
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/chats/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}
]
}{
"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
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get chat messages
Get all messages belonging to the given chat.
Parameters
chat_idinteger<int64>requiredpathChat chat_id
Response
Message response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/messages', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/chats/{chat_id}/messages')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats/{chat_id}/messages')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/chats/{chat_id}/messages", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create create message
Create a chat and send it to the chat participants.
Body
MessageInput request
chat_idinteger<int64>sender_idinteger<int64>requiredbodystringrequiredkindstringsend_atstring<date-time>Time in the future to send the message
attachmentsArray<string>Parameters
chat_idinteger<int64>requiredpathChat chat_id
Response
Message response
Unauthorized
Forbidden
Rate limit error
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats/{chat_id}/messages')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"chat_id": 0,
"sender_id": 0,
"body": "string",
"kind": "string",
"send_at": "2024-01-15T09:30:00Z",
"attachments": [
"<binary>"
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"chat_id": 0,
"sender_id": 0,
"body": "string",
"kind": "string",
"send_at": "2024-01-15T09:30:00Z",
"attachments": [
"<binary>"
]
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/chats/{chat_id}/messages", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"chat_id": 0,
"sender_id": 0,
"body": "string",
"kind": "string",
"send_at": "2024-01-15T09:30:00Z",
"attachments": [
"<binary>"
]
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get chat message
Get a chat message belonging to the given chat.
Parameters
chat_idinteger<int64>requiredpathChat chat_id
idinteger<int64>requiredpathMessage id
Response
Message response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete chat message
Delete a chat message belonging to the given chat.
Parameters
chat_idinteger<int64>requiredpathChat chat_id
idinteger<int64>requiredpathMessage id
Response
Message response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/chats/{chat_id}/messages/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get chat users
Get all users participating in the given chat.
Parameters
chat_idinteger<int64>requiredpathChat chat_id
Response
ChatUser response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/users', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/chats/{chat_id}/users')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats/{chat_id}/users')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/chats/{chat_id}/users", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"id": 123,
"chat_id": 0,
"user_id": 0,
"first_name": "string",
"last_name": "string",
"icon_url": "string",
"deleted": true
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create chat user
Create and add a user to the chat.
Body
UserID request
User ID parameter
user_idinteger<int64>Parameters
chat_idinteger<int64>requiredpathChat chat_id
Response
ChatUser response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats/{chat_id}/users')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"user_id": 0
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"user_id": 0
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/chats/{chat_id}/users", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"user_id": 0
}{
"id": 123,
"chat_id": 0,
"user_id": 0,
"first_name": "string",
"last_name": "string",
"icon_url": "string",
"deleted": true
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete chat user
Delete a chat user.
Parameters
chat_idinteger<int64>requiredpathChat chat_id
user_idinteger<int64>requiredpathUser user_id
Response
ChatUser response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/users/{user_id}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/chats/{chat_id}/users/{user_id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats/{chat_id}/users/{user_id}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/chats/{chat_id}/users/{user_id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"id": 123,
"chat_id": 0,
"user_id": 0,
"first_name": "string",
"last_name": "string",
"icon_url": "string",
"deleted": true
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create reaction
Create a reaction to a message in the chat.
Body
ReactionInput request
message_idinteger<int64>requiredThe message ID to react to
valuestringrequiredThe reaction emoji value
Parameters
chat_idinteger<int64>requiredpathChat chat_id
Response
MessageFlag response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats/{chat_id}/reactions')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"message_id": 0,
"value": "string"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"message_id": 0,
"value": "string"
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/chats/{chat_id}/reactions", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"message_id": 0,
"value": "string"
}{
"id": 123,
"user_id": 0,
"message_id": 0,
"chat_id": 0,
"kind": "string",
"value": "string",
"created_at": "2025-01-01T12:00:00.000Z",
"updated_at": "2025-01-02T12:00:00.000Z"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete reaction
Delete a reaction from a message.
Parameters
chat_idinteger<int64>requiredpathChat chat_id
idinteger<int64>requiredpathMessageFlag id
Response
MessageFlag response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/chats/{chat_id}/reactions/{id}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/chats/{chat_id}/reactions/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/chats/{chat_id}/reactions/{id}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/chats/{chat_id}/reactions/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"id": 123,
"user_id": 0,
"message_id": 0,
"chat_id": 0,
"kind": "string",
"value": "string",
"created_at": "2025-01-01T12:00:00.000Z",
"updated_at": "2025-01-02T12:00:00.000Z"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create and send a chat message to the receiver
Create and send a chat message to the receiver.
Body
MessageInput request
chat_idinteger<int64>sender_idinteger<int64>requiredbodystringrequiredkindstringsend_atstring<date-time>Time in the future to send the message
attachmentsArray<string>Response
Message response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/messages')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"chat_id": 0,
"sender_id": 0,
"body": "string",
"kind": "string",
"send_at": "2024-01-15T09:30:00Z",
"attachments": [
"<binary>"
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"chat_id": 0,
"sender_id": 0,
"body": "string",
"kind": "string",
"send_at": "2024-01-15T09:30:00Z",
"attachments": [
"<binary>"
]
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/messages", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"chat_id": 0,
"sender_id": 0,
"body": "string",
"kind": "string",
"send_at": "2024-01-15T09:30:00Z",
"attachments": [
"<binary>"
]
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get recent chat messages
Get recent chat messages for the current account scope.
Response
Message response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/messages/recent', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/messages/recent')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/messages/recent')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/messages/recent", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get favorite chat messages
Get favorite chat messages for the current account scope.
Response
Message response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/messages/favorite', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/messages/favorite')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/messages/favorite')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/messages/favorite", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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.
Update message
Update a message object.
Body
MessageInput request
chat_idinteger<int64>sender_idinteger<int64>requiredbodystringrequiredkindstringsend_atstring<date-time>Time in the future to send the message
attachmentsArray<string>Parameters
idinteger<int64>requiredpathMessage id
Response
Message response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/messages/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"chat_id": 0,
"sender_id": 0,
"body": "string",
"kind": "string",
"send_at": "2024-01-15T09:30:00Z",
"attachments": [
"<binary>"
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"chat_id": 0,
"sender_id": 0,
"body": "string",
"kind": "string",
"send_at": "2024-01-15T09:30:00Z",
"attachments": [
"<binary>"
]
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/messages/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"chat_id": 0,
"sender_id": 0,
"body": "string",
"kind": "string",
"send_at": "2024-01-15T09:30:00Z",
"attachments": [
"<binary>"
]
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete message
Delete a message object.
Body
Message request
A representation of a Message
idinteger<int64>Unique message identifier
chat_idinteger<int64>Associated chat ID
sender_idinteger<int64>bodystringMessage contents
kindstringchat_titlestringsender_first_namestringsender_last_namestringsender_icon_urlstringsent_atstring<date-time>attachmentsArray<any>Parameters
idinteger<int64>requiredpathMessage id
Response
Message response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/messages/{id}')
request = Net::HTTP::Delete.new(uri)
request['Content-Type'] = 'application/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"
}
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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"
}
]
}`)
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/messages/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}
]
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 all fragments.
Response
Fragment response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/fragments', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/fragments')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/fragments')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/fragments", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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"
}
]
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create an fragment
Create an fragment
Body
FragmentInput request
Object for creating or updating an Fragment.
kindstringnamestringDisplay name
datastringtimestring<date-time>parent_idinteger<int64>attachmentsArray<string>Response
Fragment response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/fragments')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"kind": "string",
"name": "Example Name",
"data": "string",
"time": "2024-01-15T09:30:00Z",
"parent_id": 0,
"attachments": [
"<binary>"
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"kind": "string",
"name": "Example Name",
"data": "string",
"time": "2024-01-15T09:30:00Z",
"parent_id": 0,
"attachments": [
"<binary>"
]
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/fragments", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"kind": "string",
"name": "Example Name",
"data": "string",
"time": "2024-01-15T09:30:00Z",
"parent_id": 0,
"attachments": [
"<binary>"
]
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get an fragment
Get an fragment object.
Parameters
idinteger<int64>requiredpathFragment id
Response
Fragment response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/fragments/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/fragments/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/fragments/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/fragments/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update an fragment
Update an fragment object.
Body
FragmentInput request
Object for creating or updating an Fragment.
kindstringnamestringDisplay name
datastringtimestring<date-time>parent_idinteger<int64>attachmentsArray<string>Parameters
idinteger<int64>requiredpathFragment id
Response
Fragment response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/fragments/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"kind": "string",
"name": "Example Name",
"data": "string",
"time": "2024-01-15T09:30:00Z",
"parent_id": 0,
"attachments": [
"<binary>"
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"kind": "string",
"name": "Example Name",
"data": "string",
"time": "2024-01-15T09:30:00Z",
"parent_id": 0,
"attachments": [
"<binary>"
]
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/fragments/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"kind": "string",
"name": "Example Name",
"data": "string",
"time": "2024-01-15T09:30:00Z",
"parent_id": 0,
"attachments": [
"<binary>"
]
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete an fragment
Delete an fragment object.
Parameters
idinteger<int64>requiredpathFragment id
Response
Fragment response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/fragments/{id}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/fragments/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/fragments/{id}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/fragments/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}
]
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 all invitations associated with the current account
Get all invitations associated with the current account.
Response
Invitation response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/invitations', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/invitations')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/invitations')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/invitations", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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"
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create invitation
Create an invitation link for a member or non-menmer to connect with the current user or team.
Body
InvitationInput request
Object for creating an Invitation.
friend_idinteger<int64>invitee_idinteger<int64>invitee_typestringmessagestringResponse
Invitation response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/invitations')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"friend_id": 0,
"invitee_id": 0,
"invitee_type": "string",
"message": "string"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"friend_id": 0,
"invitee_id": 0,
"invitee_type": "string",
"message": "string"
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/invitations", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"friend_id": 0,
"invitee_id": 0,
"invitee_type": "string",
"message": "string"
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get invitations
Get an invitations object by token.
Parameters
tokeninteger<int64>requiredpathInvitation token
Response
Invitation response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/invitations/{token}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/invitations/{token}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/invitations/{token}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/invitations/{token}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Accept an invitation
Accept an invitation belonging to the given token.
Parameters
tokenstringrequiredpathInvitation token
Response
Invitation response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/invitations/{token}/accept', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/invitations/{token}/accept')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/invitations/{token}/accept')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/invitations/{token}/accept", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Reject an invitation
Reject an invitation belonging to the given token.
Parameters
tokenstringrequiredpathInvitation token
Response
Invitation response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/invitations/{token}/decline', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/invitations/{token}/decline')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/invitations/{token}/decline')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/invitations/{token}/decline", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 all events.
Response
Event response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/events', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/events')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/events')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/events", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create an event
Create an event
Body
EventInput request
Object for creating or updating an Event.
kindstringtitlestringHuman-friendly title
detailsstringlocation_namestringcolorstringstart_atstring<date-time>end_atstring<date-time>Response
Event response
Unauthorized
Forbidden
Validation error
Internal error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/events')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/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"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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"
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/events", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get an event
Get an event object.
Parameters
idinteger<int64>requiredpathEvent id
Response
Event response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/events/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/events/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/events/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/events/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update an event
Update an event object.
Body
EventInput request
Object for creating or updating an Event.
kindstringtitlestringHuman-friendly title
detailsstringlocation_namestringcolorstringstart_atstring<date-time>end_atstring<date-time>Parameters
idinteger<int64>requiredpathEvent id
Response
Event response
Unauthorized
Forbidden
Validation error
Internal error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/events/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/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"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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"
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/events/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete an event
Delete an event object.
Parameters
idinteger<int64>requiredpathEvent id
Response
Event response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/events/{id}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/events/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/events/{id}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/events/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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.
Login
This method handles users who are \ authenticating with an email or phone, and password combination.
Body
UserCredentials request
User login credentials
loginstringrequiredpasswordstringrequiredResponse
User response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = await response.json();import requests
payload = {
"login": "string",
"password": "string"
}
response = requests.post('https://api.mytommy.com/v1/sessions', json=payload)
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/sessions')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"login": "string",
"password": "string"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"login": "string",
"password": "string"
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/sessions", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"login": "string",
"password": "string"
}{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Logout
This method destroys the current user session.
Response
Success response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/sessions', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/sessions')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/sessions')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/sessions", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 owned by the current account.
Response
Wallet response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/wallet', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/wallet')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/wallet')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/wallet", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"id": 123,
"user_id": 0,
"balance": 129900,
"credit_limit": 0,
"enable_notifications": true,
"show_balance": true
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update a wallet
Update a wallet.
Body
WalletInput request
Object for updating a Wallet
enable_notificationsbooleanshow_balancebooleanResponse
Wallet response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/wallet')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"enable_notifications": true,
"show_balance": true
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"enable_notifications": true,
"show_balance": true
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/wallet", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"enable_notifications": true,
"show_balance": true
}{
"id": 123,
"user_id": 0,
"balance": 129900,
"credit_limit": 0,
"enable_notifications": true,
"show_balance": true
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 connected to the current account.
Response
WalletCard response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/wallet/cards', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/wallet/cards')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/wallet/cards')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/wallet/cards", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"id": 123,
"wallet_id": 0,
"wallet_account_id": 0,
"name": "Example Name",
"icon_url": "string",
"balance": 0,
"credit_limit": 0,
"active": true
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 connected to the current account.
Response
WalletAccount response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/wallet/accounts', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/wallet/accounts')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/wallet/accounts')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/wallet/accounts", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a wallet account
Get a wallet account by ID.
Parameters
idinteger<int64>requiredpathWalletAccount id
Response
WalletAccount response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/wallet/accounts/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/wallet/accounts/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/wallet/accounts/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/wallet/accounts/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 belonging to the current account.
Response
WalletTransaction response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/wallet/transactions', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/wallet/transactions')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/wallet/transactions')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/wallet/transactions", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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"
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create a wallet transaction
Create a wallet transaction.
Body
WalletTransactionInput request
Object for creating or updating a Wallet Transaction
wallet_card_idinteger<int64>requiredwallet_account_idinteger<int64>requiredaddon_idinteger<int64>addon_install_idinteger<int64>payee_namestringamountnumber<double>requiredResponse
WalletTransaction response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/wallet/transactions')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"wallet_card_id": 0,
"wallet_account_id": 0,
"addon_id": 0,
"addon_install_id": 0,
"payee_name": "string",
"amount": 0
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"wallet_card_id": 0,
"wallet_account_id": 0,
"addon_id": 0,
"addon_install_id": 0,
"payee_name": "string",
"amount": 0
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/wallet/transactions", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"wallet_card_id": 0,
"wallet_account_id": 0,
"addon_id": 0,
"addon_install_id": 0,
"payee_name": "string",
"amount": 0
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get a wallet transaction
Get a wallet transaction by ID.
Parameters
idinteger<int64>requiredpathWalletTransaction id
Response
WalletTransaction response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/wallet/transactions/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/wallet/transactions/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/wallet/transactions/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/wallet/transactions/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Refund a wallet transaction
Refund a wallet transaction by ID.
Parameters
idinteger<int64>requiredpathWalletTransaction id
Response
WalletTransaction response
Unauthorized
Forbidden
Validation error
Internal error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/wallet/transactions/{id}/refund', {
method: 'POST',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.post('https://api.mytommy.com/v1/wallet/transactions/{id}/refund')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/wallet/transactions/{id}/refund')
request = Net::HTTP::Post.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/wallet/transactions/{id}/refund", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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 vendor orders
Get all vendor orders.
Parameters
vendor_team_idstringrequiredpathTeam team_id
Response
VendorOrder response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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": {}
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Create an vendor order
Create an vendor order
Body
VendorOrderInput request
Object for creating or updating an VendorOrder.
assignee_idinteger<int64>assignee_team_idinteger<int64>namestringDisplay name
statusstringCurrent status
canceledbooleandataobjectevent_attributesobjectObject for creating or updating an Event.
coupon_idsArray<integer>Array coupon IDs.
order_items_attributesArray<object>Parameters
vendor_team_idstringrequiredpathTeam team_id
Response
VendorOrder response
Unauthorized
Forbidden
Validation error
Internal error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/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
}
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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
}
]
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}
]
}{
"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": {}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get an vendor order
Get an vendor order object.
Parameters
vendor_team_idstringrequiredpathTeam team_id
idinteger<int64>requiredpathVendorOrder id
Response
VendorOrder response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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": {}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Update an vendor order
Update an vendor order object.
Body
VendorOrderInput request
Object for creating or updating an VendorOrder.
assignee_idinteger<int64>assignee_team_idinteger<int64>namestringDisplay name
statusstringCurrent status
canceledbooleandataobjectevent_attributesobjectObject for creating or updating an Event.
coupon_idsArray<integer>Array coupon IDs.
order_items_attributesArray<object>Parameters
vendor_team_idstringrequiredpathTeam team_id
idinteger<int64>requiredpathVendorOrder id
Response
VendorOrder response
Unauthorized
Forbidden
Validation error
Internal error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}')
request = Net::HTTP::Put.new(uri)
request['Content-Type'] = 'application/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
}
]
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"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
}
]
}`)
req, _ := http.NewRequest("PUT", "https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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
}
]
}{
"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": {}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Cancel an vendor order
Cancel an vendor order object.
Parameters
vendor_team_idstringrequiredpathTeam team_id
idinteger<int64>requiredpathVendorOrder id
Response
VendorOrder response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/vendors/{vendor_team_id}/orders/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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": {}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"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.
Register a device
Register a mobile device for push notifications.
Body
Device request
User device
idinteger<int64>Unique device identifier
user_idinteger<int64>requiredplatformstringiosandroidrequiredDevice platform type
environmentstringdevelopmentproductionDevice build environment
uuidstringrequiredDevice UUID
tokenstringDevice token
Response
Device response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();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: Record<string, unknown> = 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()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/devices')
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = '{
"id": 444,
"user_id": 0,
"platform": "ios",
"environment": "development",
"uuid": "string",
"token": "xxxx-yyyy-zzzz"
}'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"id": 444,
"user_id": 0,
"platform": "ios",
"environment": "development",
"uuid": "string",
"token": "xxxx-yyyy-zzzz"
}`)
req, _ := http.NewRequest("POST", "https://api.mytommy.com/v1/devices", body)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"id": 444,
"user_id": 0,
"platform": "ios",
"environment": "development",
"uuid": "string",
"token": "xxxx-yyyy-zzzz"
}{
"id": 444,
"user_id": 0,
"platform": "ios",
"environment": "development",
"uuid": "string",
"token": "xxxx-yyyy-zzzz"
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Delete a device
Delete a mobile device.
Parameters
idinteger<int64>requiredpathDevice ID
Response
Success response
Unauthorized
Forbidden
Internal error
Unexpected error
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/devices/{id}', {
method: 'DELETE',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.delete('https://api.mytommy.com/v1/devices/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/devices/{id}')
request = Net::HTTP::Delete.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://api.mytommy.com/v1/devices/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Tag
Tagging resources for organization.
Syncs
Synchronization endpoints and statuses.
List syncs
Get a paginated list of sync operations for the current team.
Parameters
pageinteger<int32>queryPage number for pagination
perinteger<int32>queryNumber of items per page
Response
Syncs retrieved successfully
Unauthorized
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/syncs', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/syncs')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/syncs')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/syncs", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}[
{
"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-01T12:00:00.000Z",
"updated_at": "2025-01-02T12:00:00.000Z",
"user": {
"id": 0,
"name": "string",
"email": "string"
}
}
]{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Get sync details
Get detailed information about a specific sync operation.
Parameters
idinteger<int64>requiredpathID of the sync to retrieve
Response
Sync details retrieved successfully
Unauthorized
Not Found
Authorization
api_keyapiKey in headerProvide 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();const response = await fetch('https://api.mytommy.com/v1/syncs/{id}', {
method: 'GET',
});
const data: Record<string, unknown> = await response.json();import requests
response = requests.get('https://api.mytommy.com/v1/syncs/{id}')
data = response.json()require 'net/http'
require 'json'
uri = URI('https://api.mytommy.com/v1/syncs/{id}')
request = Net::HTTP::Get.new(uri)
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
data = JSON.parse(response.body)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.mytommy.com/v1/syncs/{id}", nil)
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}{
"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-01T12:00:00.000Z",
"updated_at": "2025-01-02T12:00:00.000Z",
"user": {
"id": 0,
"name": "string",
"email": "string"
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}Models
Account
objectA representation of a Account
idinteger<int64>Unique account identifier
typestringuser_idinteger<int64>team_idinteger<int64>namestringAccount display name
contact_namestringkindstringicon_urlstringmobilestringnotification_countinteger<int64>{
"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
}Attachment
objectObject that represents an Attachment.
signed_idstringcontent_typestringfilenamestringurlstring{
"signed_id": "string",
"content_type": "string",
"filename": "string",
"url": "string"
}User
objectA representation of a User
idinteger<int64>Unique user identifier
statusstringCurrent account status
first_namestringGiven name
last_namestringFamily name
slugstringURL-safe identifier
emailstringEmail address
mobilestringMobile phone number in E.164 format
dobstringDate of birth (YYYY-MM-DD)
localestringIETF language tag
icon_urlstringAvatar image URL
{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png"
}UserInput
objectA representation of a User
idinteger<int64>Unique user identifier
statusstringCurrent account status
first_namestringGiven name
last_namestringFamily name
slugstringURL-safe identifier
emailstringEmail address
mobilestringMobile phone number in E.164 format
dobstringDate of birth (YYYY-MM-DD)
localestringIETF language tag
icon_urlstringAvatar image URL
photostring<binary>passwordstring{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"photo": "<binary>",
"password": "string"
}Team
objectA representation of a Team
idinteger<int64>requiredUnique team identifier
user_idinteger<int64>requiredOwner user ID
namestringrequiredTeam display name
photostring<binary>icon_urlstringTeam icon URL
emailstringphonestringstatusstringCurrent status
slugstringfeaturesobjectFeature flags enabled for the team
{
"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
objectFeature flags enabled for the team
compliancebooleantimesheetsbooleantimeclockbooleanavailabilitybooleanordersbooleanclientsbooleantrainingbooleanleavebooleandocumentsbooleanschedulingbooleanndisbooleanexperimentalbooleanmileageboolean{
"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
objectA representation of a Team
idinteger<int64>requiredUnique team identifier
user_idinteger<int64>requiredOwner user ID
namestringrequiredTeam display name
photostring<binary>icon_urlstringTeam icon URL
emailstringphonestringstatusstringCurrent status
slugstringfeaturesobjectFeature flags enabled for the team
{
"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
}
}TeamMemberInput
objectObject for creating or updating a Team Member
user_idinteger<int64>requiredteam_idinteger<int64>requiredfavoritebooleanmutebooleanphotostring<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
{
"user_id": 0,
"team_id": 0,
"favorite": true,
"mute": true,
"photo": "<binary>",
"roles": [
"string"
],
"locations": [
"string"
],
"tags": [
"string"
]
}TeamMember
objectObject that represents a Team Member
Object for creating or updating a Team Member
user_idinteger<int64>requiredteam_idinteger<int64>requiredfavoritebooleanmutebooleanphotostring<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_namestringlast_namestringemailstringmobilestringmanagerbooleanmemberbooleanTrue when the team member has signed up to Tommy
statusstringicon_urlstringaddon_linksArray<any>Array of profile links accessible by the current User on the Team Member profile
{
"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
objectObject representing a Tommy developer
namestringDisplay name
detailsstring{
"name": "Example Name",
"details": "string"
}Developer
objectObject representing a Tommy developer
namestringDisplay name
detailsstringicon_urlstringaddonsArray<any>actionsArray<any>solutionsArray<any>{
"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-02T12:00:00.000Z",
"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
objectidinteger<int64>Unique identifier
user_idinteger<int64>developer_idinteger<int64>namestringDisplay name
summarystringdescriptionstringHuman-friendly description
{
"id": 123,
"user_id": 0,
"developer_id": 0,
"name": "Example Name",
"summary": "string",
"description": "Short description"
}Chat
objectA 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.
titlestringThe chat room title.
groupbooleanfavoritebooleanmutebooleanunread_messages_countinteger<int64>usersArray<any>{
"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
objecttitlestringThe chat room title.
groupbooleanfavoritebooleanmutebooleanuser_idsArray<integer>{
"title": "Example Title",
"group": true,
"favorite": true,
"mute": true,
"user_ids": [
0
]
}ChatInitiateInput
objectArray of user IDs to initiate the chat with.
user_idsArray<integer>required{
"user_ids": [
0
]
}ChatUser
objectidinteger<int64>Unique identifier
chat_idinteger<int64>requireduser_idinteger<int64>requiredfirst_namestringlast_namestringicon_urlstringdeletedboolean{
"id": 123,
"chat_id": 0,
"user_id": 0,
"first_name": "string",
"last_name": "string",
"icon_url": "string",
"deleted": true
}MessageFlag
objectidinteger<int64>Unique identifier
user_idinteger<int64>message_idinteger<int64>chat_idinteger<int64>kindstringThe type of flag (read, reaction, etc.)
valuestringThe reaction emoji value
created_atstring<date-time>Creation timestamp (ISO8601)
updated_atstring<date-time>Last update timestamp (ISO8601)
{
"id": 123,
"user_id": 0,
"message_id": 0,
"chat_id": 0,
"kind": "string",
"value": "string",
"created_at": "2025-01-01T12:00:00.000Z",
"updated_at": "2025-01-02T12:00:00.000Z"
}ReactionInput
objectmessage_idinteger<int64>requiredThe message ID to react to
valuestringrequiredThe reaction emoji value
{
"message_id": 0,
"value": "string"
}MessageInput
objectchat_idinteger<int64>sender_idinteger<int64>requiredbodystringrequiredkindstringsend_atstring<date-time>Time in the future to send the message
attachmentsArray<string>{
"chat_id": 0,
"sender_id": 0,
"body": "string",
"kind": "string",
"send_at": "2024-01-15T09:30:00Z",
"attachments": [
"<binary>"
]
}Message
objectA representation of a Message
idinteger<int64>Unique message identifier
chat_idinteger<int64>Associated chat ID
sender_idinteger<int64>bodystringMessage contents
kindstringchat_titlestringsender_first_namestringsender_last_namestringsender_icon_urlstringsent_atstring<date-time>attachmentsArray<any>{
"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
objectidstringUnique identifier
titlestringHuman-friendly title
typestringpathstringindexbooleanicon_urlstring{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}AddonLink
objecttitlestringHuman-friendly title
packagestringurlstringicon_urlstring{
"title": "Example Title",
"package": "string",
"url": "string",
"icon_url": "string"
}Addon
objectidinteger<int64>requiredUnique identifier
user_idinteger<int64>requireddeveloper_idinteger<int64>packagestringrequiredtitlestringHuman-friendly title
authorstringenvironmentstringversionstringdescriptionstringHuman-friendly description
homepagestringicon_urlstringfile_base_urlstringinstalledbooleanupdated_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>{
"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-02T12:00:00.000Z",
"roles": [
"string"
],
"permissions": [
{}
],
"input_devices": [
{}
],
"locales": [
"string"
],
"views": [
{
"id": 123,
"title": "Example Title",
"type": "string",
"path": "string",
"index": true,
"icon_url": "string"
}
]
}AuditLog
objectuser_idinteger<int64>team_idinteger<int64>namestringDisplay name
messagestring{
"user_id": 0,
"team_id": 0,
"name": "Example Name",
"message": "string"
}Activity
objectidinteger<int64>Unique identifier
action_version_idinteger<int64>namestringDisplay name
descriptionstringHuman-friendly description
{
"id": 123,
"action_version_id": 0,
"name": "Example Name",
"description": "Short description"
}Trigger
objectidinteger<int64>Unique identifier
action_version_idinteger<int64>namestringDisplay name
descriptionstringHuman-friendly description
{
"id": 123,
"action_version_id": 0,
"name": "Example Name",
"description": "Short description"
}Action
objectidinteger<int64>Unique identifier
user_idinteger<int64>developer_idinteger<int64>action_version_idinteger<int64>authorstringtriggeranyactivityanydependenciesobjectnamestringDisplay name
summarystringdescriptionstringHuman-friendly description
icon_urlstringinstalledbooleankindstringuniqueboolean{
"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
objectidinteger<int64>Unique identifier
action_idinteger<int64>addon_install_idinteger<int64>titlestringHuman-friendly title
summarystringdescriptionstringHuman-friendly description
scheduleobjectinstalledbooleandeleted_atstring<date-time>updated_atstring<date-time>Last update timestamp (ISO8601)
tag_idsArray<integer>tags_listArray<string>triggeranyactivityanysettingsobject{
"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-02T12:00:00.000Z",
"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": {}
}Setting
objectuser_idinteger<int64>team_idinteger<int64>addon_install_idinteger<int64>resource_idinteger<int64>resource_typestringcontextstringformatstringdataobjectrequiredSetting data as JSON.
{
"user_id": 0,
"team_id": 0,
"addon_install_id": 0,
"resource_id": 0,
"resource_type": "string",
"context": "string",
"format": "string",
"data": {}
}SettingData
objectdataobjectrequiredSetting data as JSON, boolean, integer or string.
contextstring_formatstring{
"data": {},
"context": "string",
"_format": "string"
}FragmentInput
objectObject for creating or updating an Fragment.
kindstringnamestringDisplay name
datastringtimestring<date-time>parent_idinteger<int64>attachmentsArray<string>{
"kind": "string",
"name": "Example Name",
"data": "string",
"time": "2024-01-15T09:30:00Z",
"parent_id": 0,
"attachments": [
"<binary>"
]
}Fragment
objectObject that represents an Fragment.
idinteger<int64>Unique identifier
user_idinteger<int64>requiredteam_idinteger<int64>addons_install_idinteger<int64>kindstringnamestringDisplay name
dataobjectstart_atstring<date-time>end_atstring<date-time>parent_idinteger<int64>resource_idinteger<int64>resource_typestringattachmentsArray<any>{
"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
objectA representation of a Contact
friend_idinteger<int64>requiredFriend user ID
favoritebooleanmutebooleanpersonalbooleanrolesArray<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
{
"friend_id": 0,
"favorite": true,
"mute": true,
"personal": true,
"roles": [
"string"
],
"locations": [
"string"
],
"tags": [
"string"
]
}Contact
objectA representation of a Contact
friend_idinteger<int64>requiredFriend user ID
favoritebooleanmutebooleanpersonalbooleanrolesArray<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>typestringfirst_namestringlast_namestringicon_urlstringemailstringmobilestringstatusstringmemberbooleanTrue when the friend has signed up to Tommy
last_online_atstring<date-time>{
"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
objectA representation of a User
idinteger<int64>Unique user identifier
statusstringCurrent account status
first_namestringGiven name
last_namestringFamily name
slugstringURL-safe identifier
emailstringEmail address
mobilestringMobile phone number in E.164 format
dobstringDate of birth (YYYY-MM-DD)
localestringIETF language tag
icon_urlstringAvatar image URL
team_idsArray<integer>viastring{
"id": 12345,
"status": "active",
"first_name": "Alex",
"last_name": "Johnson",
"slug": "alex-johnson",
"email": "alex@example.com",
"mobile": "+15551234567",
"dob": "1990-01-01T00:00:00.000Z",
"locale": "en-US",
"icon_url": "https://cdn.example.com/avatars/12345.png",
"team_ids": [
0
],
"via": "string"
}InvitationInput
objectObject for creating an Invitation.
friend_idinteger<int64>invitee_idinteger<int64>invitee_typestringmessagestring{
"friend_id": 0,
"invitee_id": 0,
"invitee_type": "string",
"message": "string"
}Invitation
objectInvitation for a user to join Tommy
Object for creating an Invitation.
friend_idinteger<int64>invitee_idinteger<int64>invitee_typestringmessagestringuser_idinteger<int64>team_idinteger<int64>inviteranyA representation of a Account
inviteeanyA representation of a Account
contactobject & anytokenstringstatusstringlinkstringtimes_sentinteger<int64>sent_atstring<date-time>accepted_atstring<date-time>{
"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
objectObject for creating or updating an Event.
kindstringtitlestringHuman-friendly title
detailsstringlocation_namestringcolorstringstart_atstring<date-time>end_atstring<date-time>{
"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
objectObject that represents an Event.
Object for creating or updating an Event.
kindstringtitlestringHuman-friendly title
detailsstringlocation_namestringcolorstringstart_atstring<date-time>end_atstring<date-time>idinteger<int64>user_idinteger<int64>team_idinteger<int64>addons_install_idinteger<int64>{
"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
objectUser login credentials
loginstringrequiredpasswordstringrequired{
"login": "string",
"password": "string"
}Permission
objectuser_idinteger<int64>team_idinteger<int64>namestringDisplay name
titlestringHuman-friendly title
hintstringresource_typestringresource_kindstringoperationsArray<string>Array of permissable operations
{
"user_id": 0,
"team_id": 0,
"name": "Example Name",
"title": "Example Title",
"hint": "string",
"resource_type": "string",
"resource_kind": "string",
"operations": [
"string"
]
}GeolocationInput
objectObject for creating or updating an Geolocation.
latitudenumber<float>longitudenumber<float>accuracynumber<float>timestampstring<date-time>kindstringtitlestringHuman-friendly title
detailsstring{
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"timestamp": "2024-01-15T09:30:00Z",
"kind": "string",
"title": "Example Title",
"details": "string"
}Geolocation
objectObject that represents an Geolocation.
Object for creating or updating an Geolocation.
latitudenumber<float>longitudenumber<float>accuracynumber<float>timestampstring<date-time>kindstringtitlestringHuman-friendly title
detailsstringidinteger<int64>user_idinteger<int64>team_idinteger<int64>addons_install_idinteger<int64>{
"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
objectObject for updating a Wallet
enable_notificationsbooleanshow_balanceboolean{
"enable_notifications": true,
"show_balance": true
}Wallet
objectObject 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_notificationsbooleanshow_balanceboolean{
"id": 123,
"user_id": 0,
"balance": 129900,
"credit_limit": 0,
"enable_notifications": true,
"show_balance": true
}WalletCard
objectObject representing a Wallet Card
idinteger<int64>Unique identifier
wallet_idinteger<int64>wallet_account_idinteger<int64>namestringDisplay name
icon_urlstringbalancenumber<double>credit_limitnumber<double>activeboolean{
"id": 123,
"wallet_id": 0,
"wallet_account_id": 0,
"name": "Example Name",
"icon_url": "string",
"balance": 0,
"credit_limit": 0,
"active": true
}WalletAccount
objectObject representing a Wallet Account
idinteger<int64>Unique identifier
team_idinteger<int64>namestringDisplay name
card_namestringphonestringvendor_referencestringicon_urlstringdescriptionstringHuman-friendly description
enable_chatbooleanenable_integrationsbooleanactiveboolean{
"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
objectObject for creating or updating a Wallet Transaction
wallet_card_idinteger<int64>requiredwallet_account_idinteger<int64>requiredaddon_idinteger<int64>addon_install_idinteger<int64>payee_namestringamountnumber<double>required{
"wallet_card_id": 0,
"wallet_account_id": 0,
"addon_id": 0,
"addon_install_id": 0,
"payee_name": "string",
"amount": 0
}WalletTransaction
objectObject representing a Wallet Transaction
wallet_card_idinteger<int64>wallet_account_idinteger<int64>addon_idinteger<int64>addon_install_idinteger<int64>payee_namestringicon_urlstringinvoice_urlstringstatusstringpendingpaidrefundedfailedTransaction status
amountnumber<double>vendor_referencestring{
"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
objectObject for creating or updating an VendorOrderItem.
orderable_idinteger<int64>orderable_typestringquantityinteger<int64>{
"orderable_id": 0,
"orderable_type": "string",
"quantity": 0
}VendorOrderInput
objectObject for creating or updating an VendorOrder.
assignee_idinteger<int64>assignee_team_idinteger<int64>namestringDisplay name
statusstringCurrent status
canceledbooleandataobjectevent_attributesobjectObject for creating or updating an Event.
coupon_idsArray<integer>Array coupon IDs.
order_items_attributesArray<object>{
"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
objectObject that represents an VendorOrder.
idinteger<int64>Unique identifier
user_idinteger<int64>requiredteam_idinteger<int64>assignee_idinteger<int64>event_idinteger<int64>wallet_transaction_idinteger<int64>workforce_shift_idinteger<int64>coupon_idsArray<integer>Array coupon IDs.
namestringDisplay name
statusstringCurrent status
canceledbooleandataobject{
"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
objectObject for updating a Workforce account
namestringDisplay name
week_startstringmondayturesdaywednesdaytimeclock_require_gpsbooleantimeclock_require_photobooleantimeclock_enable_mobilebooleantimeclock_enable_webbooleantimeclock_enable_kioskbooleantimesheets_rounding_methodstringnoneupdownnearesttimesheets_rounding_minutesintegertimesheets_enable_break_roundingbooleanshift_upcoming_notification_minutesintegerMinutes before shift start to send notification
shift_forgot_clockin_minutesintegerMinutes after shift start to send forgot clockin notification
shift_forgot_clockout_minutesintegerMinutes after shift end to send forgot clockout notification
shift_notifications_enabledbooleanEnable/disable shift notifications
event_notifications_enabledbooleanEnable/disable event notifications
dataobjectArbitrary data storage
{
"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
objectObject representing a Workforce account
Object for updating a Workforce account
namestringDisplay name
week_startstringmondayturesdaywednesdaytimeclock_require_gpsbooleantimeclock_require_photobooleantimeclock_enable_mobilebooleantimeclock_enable_webbooleantimeclock_enable_kioskbooleantimesheets_rounding_methodstringnoneupdownnearesttimesheets_rounding_minutesintegertimesheets_enable_break_roundingbooleanshift_upcoming_notification_minutesintegerMinutes before shift start to send notification
shift_forgot_clockin_minutesintegerMinutes after shift start to send forgot clockin notification
shift_forgot_clockout_minutesintegerMinutes after shift end to send forgot clockout notification
shift_notifications_enabledbooleanEnable/disable shift notifications
event_notifications_enabledbooleanEnable/disable event notifications
dataobjectArbitrary data storage
idinteger<int64>{
"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
objectObject for updating an employee
Object for creating or updating a Team Member
user_idinteger<int64>requiredteam_idinteger<int64>requiredfavoritebooleanmutebooleanphotostring<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_vehiclebooleancompliance_checkstringnotesstring{
"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
objectObject representing an employee
Object that represents a Team Member
Object for creating or updating a Team Member
user_idinteger<int64>requiredteam_idinteger<int64>requiredfavoritebooleanmutebooleanphotostring<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_namestringlast_namestringemailstringmobilestringmanagerbooleanmemberbooleanTrue when the team member has signed up to Tommy
statusstringicon_urlstringaddon_linksArray<any>Array of profile links accessible by the current User on the Team Member profile
{
"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
objectObject for updating a availability
amintegerpmintegerndintegeram_lockedbooleanpm_lockedbooleannd_lockedbooleandatestring<date>{
"am": 0,
"pm": 0,
"nd": 0,
"am_locked": true,
"pm_locked": true,
"nd_locked": true,
"date": "2024-01-15"
}WorkforceAvailability
objectObject representing a availability
Object for updating a availability
amintegerpmintegerndintegeram_lockedbooleanpm_lockedbooleannd_lockedbooleandatestring<date>idinteger<int64>user_idinteger<int64>team_idinteger<int64>employee_idinteger<int64>{
"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
objectObject representing a shift question
team_idinteger<int64>textstringoffset_minutesinteger<int64>whenstringalwaysstart_shiftend_shiftalwaysbooleanenabledbooleantag_idsArray<integer>{
"team_id": 0,
"text": "string",
"offset_minutes": 0,
"when": "always",
"always": true,
"enabled": true,
"tag_ids": [
0
]
}WorkforceShiftAnswer
objectObject representing a shift answer
team_idinteger<int64>shift_idinteger<int64>shift_question_idinteger<int64>attendance_idinteger<int64>user_idinteger<int64>textstring{
"team_id": 0,
"shift_id": 0,
"shift_question_id": 0,
"attendance_id": 0,
"user_id": 0,
"text": "string"
}WorkforceShiftInput
objectObject for updating a shift
titlestringHuman-friendly title
start_atstring<date-time>end_atstring<date-time>statusstringopenassignedpublishedCurrent status
location_idinteger<int64>location_namestringrolestringdepartmentstringdetailsstringdataobject{
"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
objectObject representing a shift
idinteger<int64>Unique identifier
user_idinteger<int64>team_idinteger<int64>assignee_idinteger<int64>event_idinteger<int64>shift_on_same_daybooleanshift_requestedboolean{
"id": 123,
"user_id": 0,
"team_id": 0,
"assignee_id": 0,
"event_id": 0,
"shift_on_same_day": true,
"shift_requested": true
}WorkforceShiftRequestInput
objectObject for updating a shift request
user_idinteger<int64>shift_idinteger<int64>statusstringrequestedshortlistedapprovedrejectedcanceledCurrent status
{
"user_id": 0,
"shift_id": 0,
"status": "active"
}WorkforceShiftRequest
objectObject representing a shift request
Object for updating a shift request
user_idinteger<int64>shift_idinteger<int64>statusstringrequestedshortlistedapprovedrejectedcanceledCurrent status
idinteger<int64>team_idinteger<int64>requestor_idinteger<int64>{
"user_id": 0,
"shift_id": 0,
"status": "active",
"id": 0,
"team_id": 0,
"requestor_id": 0
}WorkforceTimesheetInput
objectObject for updating a timesheet
statusstringunsubmittedsubmittedpreapprovedapproveddeniedCurrent status
resource_idinteger<int64>resource_typestringstart_datestring<date>end_datestring<date>manualboolean{
"status": "active",
"resource_id": 0,
"resource_type": "string",
"start_date": "2024-01-15",
"end_date": "2024-01-15",
"manual": true
}WorkforceTimesheetBulkInput
objectObject for bulk updating a timesheets
Object for updating a timesheet
statusstringunsubmittedsubmittedpreapprovedapproveddeniedCurrent status
resource_idinteger<int64>resource_typestringstart_datestring<date>end_datestring<date>manualbooleantimesheet_idsArray<integer>{
"status": "active",
"resource_id": 0,
"resource_type": "string",
"start_date": "2024-01-15",
"end_date": "2024-01-15",
"manual": true,
"timesheet_ids": [
0
]
}WorkforceTimesheet
objectObject representing a timesheet
Object for updating a timesheet
statusstringunsubmittedsubmittedpreapprovedapproveddeniedCurrent status
resource_idinteger<int64>resource_typestringstart_datestring<date>end_datestring<date>manualbooleanidinteger<int64>user_idinteger<int64>team_idinteger<int64>{
"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
objectObject for updating a timesheet item
shift_idinteger<int64>timesheet_idinteger<int64>work_hoursnumber<float>break_hoursnumber<float>addressstringmanualboolean{
"shift_id": 0,
"timesheet_id": 0,
"work_hours": 0,
"break_hours": 0,
"address": "string",
"manual": true
}WorkforceTimesheetItem
objectObject representing a timesheet item
Object for updating a timesheet item
shift_idinteger<int64>timesheet_idinteger<int64>work_hoursnumber<float>break_hoursnumber<float>addressstringmanualbooleanidinteger<int64>user_idinteger<int64>team_idinteger<int64>activeboolean{
"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
objectObject for updating an attendance
event_idinteger<int64>latitudenumber<float>longitudenumber<float>accuracynumber<float>statusstringstartpauseresumestopCurrent status
addressstringlocation_namestringimageobject{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {}
}WorkforceAttendance
objectObject representing an attendance
Object for updating an attendance
event_idinteger<int64>latitudenumber<float>longitudenumber<float>accuracynumber<float>statusstringstartpauseresumestopCurrent status
addressstringlocation_namestringimageobjectidinteger<int64>user_idinteger<int64>{
"event_id": 0,
"latitude": 0,
"longitude": 0,
"accuracy": 0,
"status": "active",
"address": "string",
"location_name": "string",
"image": {},
"id": 0,
"user_id": 0
}Device
objectUser device
idinteger<int64>Unique device identifier
user_idinteger<int64>requiredplatformstringiosandroidrequiredDevice platform type
environmentstringdevelopmentproductionDevice build environment
uuidstringrequiredDevice UUID
tokenstringDevice token
{
"id": 444,
"user_id": 0,
"platform": "ios",
"environment": "development",
"uuid": "string",
"token": "xxxx-yyyy-zzzz"
}Tag
objectObject that represents a Tag.
idinteger<int64>requiredUnique tag identifier
namestringTag name
taggings_countinteger{
"id": 555,
"name": "priority",
"taggings_count": 0
}TaggingInput
objectObject for creating a Tagging.
contextstringmemberstagsroleslocationsTagging type
namestringDisplay name
{
"context": "members",
"name": "Example Name"
}Tagging
objectObject that represents a Tagging.
Object for creating a Tagging.
contextstringmemberstagsroleslocationsTagging type
namestringDisplay name
idinteger<int64>{
"context": "members",
"name": "Example Name",
"id": 0
}Sync
objectA representation of a Sync operation
idinteger<int64>requiredUnique identifier
team_idinteger<int64>user_idinteger<int64>integration_idinteger<int64>statusstringpendingprocessingfailedcanceledcompleterequiredCurrent status of the sync
directionstringimportexportDirection of the sync
item_typestringrequiredType 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
optionsobjectOptions used for the sync operation
messagestringError 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
userobjectUser who initiated the sync
{
"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-01T12:00:00.000Z",
"updated_at": "2025-01-02T12:00:00.000Z",
"user": {
"id": 0,
"name": "string",
"email": "string"
}
}Error
objectStandard error format
errorbooleanrequiredIndicates the response represents an error
codestringrequiredStable application error code
messagestringrequiredClient-facing error message
request_idstringrequiredRequest correlation identifier
detailsobjectOptional field-level validation errors
{
"error": true,
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"request_id": "00000000-0000-0000-0000-000000000000",
"details": {
"field": [
"is invalid"
]
}
}