The Tic-Tac Mobile API
Have a look at the documentation, retrieve the API code from us and get started. (Please see under General, Authentication)
Feel free to give us feed back and suggestions.
Feb 11, 2025
Updating projects with PUT. Added fields for activities POST and PUT
Nov 15, 2023
Adding resource Customers
Feb 22, 2023
Adding projectNumber parameter to /project
July 8, 2022
Corrected parameter documentation for timeSumByProject and timeSumByCoworker
April 12, 2022
Adding parameters to /project and /timeSumByProject
December 14, 2020
Adding resource Activities with GET, POST, PUT
December 2, 2020
Adding two methods MyProjectList and MyActivitylist to get projects and activities reportable to for a given coworker. Version 2 of Entries with more options, a new method and different return data structure for XML.
January 28, 2020
Adding two methods the emulate two reports in Tic-Tac, TimeSumByCoworker and TimeSumByProject. They both return JSON or XML alternatively.
April 24, 2018
Use the Playground feature - to try out API calls and inspect the data retrieved. Great for getting to know the API!
December 20, 2017
A new resource, Utilizations, was added. Now you can retrieve data representing your company employee utilization for given period of time.
November 25, 2017
Added a new resource, Project Overviews, rendering aggregated project data over a time period.
November 10, 2017
Introducing new edition of our API.
Our goal has been to improve in three areas:
- Use REST standard naming conventions, nouns, for calls. And HTTP verbs like POST and GET to add and retrieve data
- A safe and proven authentication method with JWT (JSON Web Token)
- Allow both XML and JSON data formats
Authentication
Authenticate your calls with the API code
On demand you will receive an API code from us (apply for an API code by mail to administrator@tictacmobile.com).
The API-code will identify you personally and your company and your access rights.
The code is a long string with encrypted data.
The code must kept safe and confidential.
Send the API-code in the Authorization header of all calls to the API, using Bearer authentication scheme.
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Requests
The API follows REST conventions.
Use GET method to read data and POST method to write or update (where applicable and allowed).
Data can in most cases be send and returned as JSON or XML, check a resource description for supported formats.
Specify the reply format you want in the Accept header:
-H "Accept: application/json"
or
-H "Accept: application/xml"
To specify the format you are using for writing data (POST method only), use the Content-type header:
-H "Content-Type: application/json"
or
-H "Content-Type: application/xml"
Responses
The API returns responses with appropriate HTTP status codes.
Successful responses are served with a 200-series HTTP code, error responses are indicated with a non-200-series HTTP code.
Code | Text | Description |
---|---|---|
200 | OK | The request has succeeded and the response contains payload in selected format. |
201 | Created | The request has succeeded and a new resource has been created, the response body contains it's description. |
204 | No Content | The request has succeeded but is no data to return. |
304 | Not Modified | The request with POST method was not successful, there was no new data to return. |
400 | Bad Request | The request was invalid. The response has an accompanying error message. |
401 | Unauthorized | The request has incorrect authentication credentials. An error message in the response will explain further. |
403 | Forbidden | The client is not permitted access to the resource. |
404 | Not Found | The requested resource can not be found. |
405 | Method Not Allowed | The request method has been disabled and can not be used. |
406 | Not Acceptable | Accept header in the requerst must be either application/xml or application/json |
415 | Unsupported Media Type | The media format of the requested data is not supported by the selected resource endpoint. |
429 | Too Many Requests | The user has sent too many requests in a given amount of time (see "Limitations"). |
503 | Service Unavailable | The server is not ready to handle the request. |
Limitations
The number of calls is limited to 500 per 24 hours.
Additional call will produce an error code and no data.
All calls must be secured with HTTPS.
Errors
Error responses are served with a non-200-series HTTP code.
An error response has an accompanying error message.
For instance, on an error call (tictacmobile.com/api/rest/v1/users/anderslm)
HTTP/1.1 404 Not Found. No user with id anderslm
Hello
Just a simple call to try out the connection to the API. |
https://www.tictacmobile.com/api/rest/v1/hello |
Method GET: Returns a salutation. |
Supported formats |
XML, JSON. Format should be specified in Accept header as application/xml or application/json. |
Request sample
curl
-X "GET" "tictacmobile.com/api/rest/v1/hello/"
-H "Accept: application/json"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Response
{ "HelloFromTicTacAPI": "Hello! from version 2020-12-02 started at Wed Dec 02 13:18:01 CET 2020" }
Users
GET: Returns a list of all users, sorted by name. POST: Creates a user and returns a password. PUT: Updates a user |
||
https://www.tictacmobile.com/api/rest/v1/users/{userid} | ||
GET: Returns a specific user. The "userName" should be used as path parameter (see samples). | ||
Supported formats | ||
XML, JSON. Format should be specified in Accept header as application/xml or application/json. | ||
Supported content-type formats | ||
XML, JSON. Format should be specified in Content-type header as application/xml or application/json. | ||
Query parameters | ||
none |
Request sample, to get a list of all users.
curl
-X "GET" "tictacmobile.com/api/rest/v1/users/"
-H "Accept: application/json"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Response
[
{
"userName": "andersalm",
"longUserName": "andersalm",
"firstName": "Anders",
"lastName": "Alm",
"emailAdress": "info@zetera.se",
"employeeNumber": "1",
"nationalIDNumber": "197203210645",
"userType": "CPAD",
"corpid": "556423-2121 ",
"partTime": 0,
"isActive": true,
"locale": "sv_SE",
"workgroup": "Ledningsgruppen",
"costcenter": "Development",
"department": "Avd 2",
"team": "Team Beta",
"hourcost": 750.0,
"flexsaldo": 200.0,
"flexsaldoDate": "2019-08-01",
"mileCompensation": 0.0,
"startDate": null,
"endDate": null,
"priceListId": null,
"agendaListNumber": 0
},
{
"userName": "annatictacse",
"longUserName": "anna@tictac.se",
"firstName": "Anna",
"lastName": "Andersson",
"emailAdress": "anna@tictac.se",
"employeeNumber": "1298",
"nationalIDNumber": "196401012281",
"userType": "CADM",
"corpid": "556423-2121 ",
"partTime": 0,
"isActive": true,
"locale": "sv_SE",
"workgroup": "Konsulter",
"costcenter": "Development",
"department": "Avd 1",
"team": "Team Beta",
"hourcost": 250.0,
"flexsaldo": 10.0,
"flexsaldoDate": "2019-10-31",
"mileCompensation": 0.0,
"startDate": null,
"endDate": null,
"priceListId": "1378574519816",
"agendaListNumber": 0
}]
Request sample, to get one specific user
curl
-X "GET" "tictacmobile.com/api/rest/v1/users/johnnyboy"
-H "Accept: application/json"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Response
{
"userName": "johnnyboy",
"longUserName": "johnnyboy",
"firstName": "John",
"lastName": "Smith",
"emailAdress": "johnnyboy@twentyonepilots.org",
"employeeNumber": "",
"nationalIDNumber": "197701017777",
"userType": "CUSR",
"corpid": "556423-2121 ",
"partTime": 0,
"isActive": true,
"locale": "sv_SE",
"workgroup": "",
"costcenter": "",
"department": "",
"team": "",
"hourcost": 0.0,
"flexsaldo": 0.0,
"flexsaldoDate": null,
"mileCompensation": 0.0,
"startDate": null,
"endDate": null,
"priceListId": null,
"agendaListNumber": 0
}
Adding a user, POST
curl -v
-X "POST" "tictacmobile.com/api/rest/v1/users"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
-H "Accept: application/json"
-H "Content-Type: application/json"
-d "{\"firstName\":\"John\", \"lastName\":\"Smith\", \"userName\":\"johnnyboy\", \"emailAdress\":\"johnnyboy@twentyonepilots.org\",\"phoneNumber\":\"07007070707\", \"nationalIDNumber\":\"197701017777\"}"
Example with posting XML:
<?xml version="1.0" encoding="UTF-8" ?>
<userEntry>
<firstName>John</firstName>
<lastName>Smith</lastName>
<userName>johnnyboy</userName>
<emailAdress>johnnyboy@twentyonepilots.org</emailAdress>
<phoneNumber>07007070707</phoneNumber>
<nationalIDNumber>197701017777</nationalIDNumber>
</userEntry>
Response
{"userPassword":"johnnyboy"}
Updating a user, PUT
You only need to supply the fields you want to change.
curl -v
-X "PUT" "tictacmobile.com/api/rest/v1/users/johnnyboy"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
-H "Accept: application/json"
-H "Content-Type: application/json"
-d "{\"firstName\":\"John\", \"lastName\":\"Smith\", \"userName\":\"johnnyboy\", \"emailAdress\":\"johnnyboy@twenty.com\",\"partTime\":\"80\", \"team\":\"Glady's gang\"}"
Example with posting XML:
<?xml version="1.0" encoding="UTF-8" ?>
<userEntry>
<firstName>John</firstName>
<lastName>Smith</lastName>
<userName>johnnyboy</userName>
<emailAdress>johnnyboy@twentyonepilots.org</emailAdress>
<phoneNumber>07007070707</phoneNumber>
<nationalIDNumber>197701017777</nationalIDNumber>
</userEntry>
Projects
https://www.tictacmobile.com/api/rest/v1/projects | ||
GET: Returns a list of all projects, sorted by name. POST: Creates a project and, optionally, activities, returns a created project id. PUT: Updates (partially a project. |
||
https://www.tictacmobile.com/api/rest/v1/projects/{projectid} | ||
GET: Returns a specific project. | ||
Supported formats | ||
XML, JSON. Format should be specified in Accept header as application/xml or application/json. | ||
Supported content-type formats | ||
XML, JSON. Format should be specified in Content-type header as application/xml or application/json. | ||
Query parameters (will be ignored in POST request) | ||
number | optional | Positive integer, up to 10000. For max number of retrieved projects most recently changed. |
projectNumber | optional | Return project with given project number |
vatnumber | optional | Return projects belonging to a customer with a given VAT-number or national registration number. Example: vatnumber=SE556322545501 or vatnumber=556322-5455 |
includeBudget | optional | Boolean, to include project budget in response. |
includeMembers | optional | Boolean, to include project members in response. |
As of november 2023 the following fields are added:
hasCustomerEntry, postalcode, city, country, glnNumber, orgNumber, invoiceDelivery.
hasCustomerEntry tells if there is an entry in the customer registry for the given customerNumber.
The customer info will be retrieved in the project object, whether the source is the project or the customer register.
Request sample
curl
-X "GET" "tictacmobile.com/api/rest/v1/projects"
-H "Accept: application/xml"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Get the n projects most recently changed
-X "GET" "tictacmobile.com/api/rest/v1/projects?number=n"
Get the project with given project number
-X "GET" "tictacmobile.com/api/rest/v1/projects?projectNumber=n"
Get the projects including the project budget
-X "GET" "tictacmobile.com/api/rest/v1/projects?includeBudget=true"
Get the projects including the project members
-X "GET" "tictacmobile.com/api/rest/v1/projects?includeMembers=true"
Response
<?xml version="1.0" encoding="UTF-8" ?>
<TicTacProjects>
<TicTacProject>
<name>ABC-analys Hedgehog</name>
<projid>1455109526722</projid>
<description>Analys av kostnader hos Hedgehog för lönsamhetsberäkning enligt ABC-metoden.</description>
<internalDescription>Glöm inte att tidrapportera senast varje fredag för detta projekt. Ring Per om du har någraa frågor.</internalDescription>
<isActive>true</isActive>
<projectLead>PerAdm</projectLead>
<ourAccount>Olles grupp</ourAccount>
<ourCategory>Löpande räkning</ourCategory>
<ourResultArea>Sverige</ourResultArea>
<hourRate>990</hourRate>
<mileRate>35</mileRate>
<ourReference>Anna Andersson</ourReference>
<invoiceCorpname>Hedgehog AB</invoiceCorpname>
<invoiceCustno>54556</invoiceCustno>
<invoiceRefname>Johan Carlsson</invoiceRefname>
<invoiceEmail>info@hedgehog.se</invoiceEmail>
<invoicePhone>08-660 08 70</invoicePhone>
<invoiceAdrrow1>Järngatan 5</invoiceAdrrow1>
<invoiceAdrrow2>234 56</invoiceAdrrow2>
<invoiceAdrrow3>Vässterås</invoiceAdrrow3>
<invoiceAdrrow4></invoiceAdrrow4>
<invoiceAdrrow5></invoiceAdrrow5>
<invoicePaydays>20</invoicePaydays>
<invoiceAltBankAccount></invoiceAltBankAccount>
<invoiceAltPayCondition></invoiceAltPayCondition>
<invoiceCustomerVATno></invoiceCustomerVATno>
<accountNumber></accountNumber>
<startDate>2016-03-01</startDate>
<isOtherCurrActive>true</isOtherCurrActive>
<otherCurrency>SEK</otherCurrency>
<conversionRate>1</conversionRate>
<otherCurrHourRate>990</otherCurrHourRate>
<otherCurrMileRate>35</otherCurrMileRate>
<invoiceLang>en_GB</invoiceLang>
<billing>HOUR_RATE</billing>
<priceMode>PRICE_IN_PROJECT</priceMode>
<priceListId></priceListId>
<vatStatus>1</vatStatus>
<created>2016-02-10 14:05</created>
<changed>2022-09-06 13:18</changed>
</TicTacProject>
<TicTacProject>
<name>Aduro Intranet</name>
<projid>1137768437234</projid>
<description>En ny funtionalitet i interna webben för prissttning av deras tjänster.</description>
<internalDescription>Motpart: Volvo AB, 55665577-6464</internalDescription>
<isActive>true</isActive>
<projectLead>kjelleson</projectLead>
...
<priceListId></priceListId>
<vatStatus>1</vatStatus>
<fixedPrice>1800000</fixedPrice>
<created>2006-01-20 15:47</created>
<changed>2022-08-18 11:27</changed>
<Activities>
<Activity>
<name>Art direction</name>
<actid>1259853648654</actid>
<type>WORKHOURS</type>
<description>Form, layout, skisser</description>
<hourRate>1200</hourRate>
<priceMode>PRICE_IN_PROJECT</priceMode>
<priceListId></priceListId>
<accountNumber></accountNumber>
<isActive>true</isActive>
</Activity>
<Activity>
<name>Implementation</name>
<actid>1137768502203</actid>
<type>WORKHOURS</type>
<description>Design och kodning av systemet</description>
<hourRate>900</hourRate>
<priceMode>PRICE_IN_PROJECT</priceMode>
<priceListId></priceListId>
<accountNumber></accountNumber>
<isActive>true</isActive>
</Activity>
<Activity>
<name>Intervju och analys</name>
<actid>1165686036718</actid>
<type>WORKHOURS</type>
<description>Kartläggning av verksamheten</description>
<hourRate>740</hourRate>
<priceMode>PRICE_IN_PROJECT</priceMode>
<priceListId></priceListId>
<accountNumber></accountNumber>
<isActive>true</isActive>
</Activity>
</Activities>
</TicTacProject>
</TicTacProjects>
Creating a project, POST
curl -v
-X "POST" "tictacmobile.com/api/rest/v1/projects"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
-H "Accept: application/json"
-H "Content-Type: application/json"
-d "{\"name\":\"Twenty Seconds to Mars\", \"customer\":\"SpaceY\", \"description\":\"Mars-focused mission\", \"hourRate\":\"900\",\"activities\":[{\"name\":\"Planning\",\"hourRate\":\"800\"},{\"name\":\"PR\",\"hourRate\":\"750\"}]}"
Example with posting XML:
<?xml version="1.0" encoding="UTF-8" ?>
<project>
<name>Twenty Seconds to Mars</name>
<customer>SpaceY</customer>
<description>Mars-focused mission</description>
<hourRate>900</hourRate>
<activities>
<name>Planning</name>
<hourRate>800</hourRate>
</activities>
<activities>
<name>PR</name>
<hourRate>750</hourRate>
</activities>
</project>
Response
{"projectId":"1551796845913"}
Updating a project, PUT
curl -v
-X "PUT" "tictacmobile.com/api/rest/v1/projects/1224255233"
-d [json below ]
{
"name": "Green API-project",
"description": "Form, layout, skrot, skisser, skratt",
"isActive":true,
"hourRate": 999,
"otherCurrHourRate": 0,
"priceMode": "PRICELIST",
"priceListId": "1480940462799"
}
Response
"Project updated"
Activities
https://www.tictacmobile.com/api/rest/v1/activities | ||
GET, POST, PUT | ||
Supported formats | ||
XML, JSON. Format should be specified in Accept header as application/xml or application/json. | ||
Supported content-type formats | ||
XML, JSON. Format should be specified in Content-type header as application/xml or application/json. |
Request sample
curl
-X "GET" "tictacmobile.com/api/rest/v1/activities?projectId=3265353621"
-H "Accept: application/xml"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Response
Note on priceMode:
PRICE_IN_PROJECT = 0; // Price is entered in the project or activity
PRICELIST = 1; // refers to the Time Price List
PER_USER_IN_PRICELIST = 2; // the coworkers hour rate refers to the Time Price List
{
"activities": [
{
"name": "Administration",
"actid": "1607954983993",
"description": "Form, layout",
"hourRate": 0.0,
"otherCurrHourRate": 0.0,
"accountNumber": "3010",
"isActive": true,
"type": "WORKHOURS",
"priceMode": 0,
"priceListId": ""
},
{
"name": "Development",
"actid": "1607955713079",
"description": "Diverse",
"hourRate": 0.0,
"otherCurrHourRate": 0.0,
"accountNumber": "3010",
"isActive": true,
"type": "WORKHOURS",
"priceMode": 0,
"priceListId": ""
}
Creating an activity, POST
curl -v
-X "POST" "tictacmobile.com/api/rest/v1/activities"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
-H "Accept: application/json"
-H "Content-Type: application/json"
-d [json below ]
{
"projectId" : "1105870432562",
"name": "Berits Gyrra activity",
"description": "Form, layout",
"hourRate": 900.0,
"otherCurrHourRate": 99.0,
"accountNumber": "3010",
"isActive": true,
"type": "OVERTIME",
"priceMode": "PRICELIST",
"priceListId": "1480940462799"
}
Response
{"activityId":"1551796845913"}
Updating an activity, PUT
curl -v
-X "PUT" "tictacmobile.com/api/rest/v1/activities/1551796845913"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
-H "Accept: application/json"
-H "Content-Type: application/json"
-d [json below ]
{
"name": "Berits Invention",
"description": "Form, layout",
"hourRate": 900.0,
"otherCurrHourRate": 99.0,
"accountNumber": "3010",
"isActive": true,
"type": "WORKHOURS",
"priceMode": "PRICEINPROJECT"
}
Response
{"activityId":"1551796845913"}
Customers
https://www.tictacmobile.com/api/rest/v1/customers | ||
GET: Returns a list of all customers, sorted by name. |
||
https://www.tictacmobile.com/api/rest/v1/customers/{customerNumber} | ||
GET: Returns a specific customer. | ||
Supported formats | ||
XML, JSON. Format should be specified in Accept header as application/xml or application/json. |
My projects
Get a list of projects that a coworker is allowed to report to, with project name and project id |
https://www.tictacmobile.com/api/rest/v1/myprojectlist |
Method: GET only |
Supported formats |
XML, JSON. Format should be specified in Accept header as application/xml or application/json. |
Request sample
curl
-X "GET" "tictacmobile.com/api/rest/v1/myprojectlist?userId=LisaAndersson"
-H "Accept: application/json"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Response
[ {
"name": "ABC Hedgehog",
"id": "1547727544253"
},
{
"name": "Aduro Intranet",
"id": "1137768437234"
},
{
"name": "Analys fas 3",
"id": "1597311703693"
} ]
My Activities
Get a list of activities for a project that a coworker is allowed to report to, with activity name and activity id |
https://www.tictacmobile.com/api/rest/v1/myactivitylist |
Method: GET only |
Supported formats |
XML, JSON. Format should be specified in Accept header as application/xml or application/json. |
Request sample
curl
-X "GET" "tictacmobile.com/api/rest/v1/myactivitylist/?userId=LisaAndersson&projectId=17427347843"
-H "Accept: application/json"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Response
[ {
"name": "Implementation",
"id": "1547727544253"
},
{
"name": "Analysis",
"id": "1137768437234"
},
{
"name": "Report writing",
"id": "1597311703693"
} ]
Entries V1
Version 1 of Entries. Kept for backwards compatibility. Note .../v1/.. in uri below | ||
https://www.tictacmobile.com/api/rest/v1/entries | ||
GET: Returns a list of all entries (hours, expenses, mileage, allowances, sales). POST: Creates a time entry and returns entry id. |
||
https://www.tictacmobile.com/api/rest/v1/entries/{projectid} | ||
GET: Returns a list of all entries for project specified by id. | ||
Supported accept formats | ||
XML, JSON. Format should be specified in Accept header as application/xml or application/json. | ||
Supported content-type formats | ||
XML, JSON. Format should be specified in Content-type header as application/xml or application/json. | ||
Query parameters (will be ignored in POST request) | ||
startdate | mandatory | Date in format YYYY-MM-DD, from this date entries will be retrieved. |
enddate | mandatory | Date in format YYYY-MM-DD, to this date entries will be retrieved. |
daysChangedWithin | optional | Positive integer, up to 90. Only retrieve entries created or changed within [daysChangedWithin] days from today. |
timeOnly | optional | Boolean, to return time entries only in response. |
Read entries, GET
curl
-X "GET" "tictacmobile.com/api/rest/v1/entries?startdate=2022-09-03&enddate=2022-09-06"
-H "Accept: application/xml"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Get entries for specific project
-X "GET" "tictacmobile.com/api/rest/v1/entries/1137768437234?startdate=2022-09-03&enddate=2022-09-06"
Get the entries created or changed within x days
-X "GET" "tictacmobile.com/api/rest/v1/entries?startdate=2022-09-03&enddate=2022-09-06&daysChangedWithinStr=60"
Get the time entries only
-X "GET" "tictacmobile.com/api/rest/v1/entries?startdate=2022-09-03&enddate=2022-09-06&timeOnly=true"
Response, JSON
{
"ticTacRows": [
{
"type": "TicTacTime",
"userid": "fiamia",
"rowid": "1604592475583",
"projectname": "ElectroSound/01 - Projektarbete",
"projid": "1567771889595",
"actid": "1567771980580",
"date": "2020-11-03",
"spec": "Mera",
"hours": "1.0",
"username": "Fia Svartenbrant",
"attested": true,
"invoiced": true
},
{
"type": "TicTacTime",
"userid": "fiamia",
"rowid": "1604592252254",
"projectname": "ElectroSound/02 - Analys",
"projid": "1567771889595",
"actid": "1567771990799",
"date": "2020-11-03",
"spec": "rerer",
"hours": "0.5",
"username": "Fia Svartenbrant",
"attested": true,
"invoiced": true
},
{
"type": "TicTacCost",
"userid": "fiamia",
"rowid": "1604491998604",
"projectname": "ElectroSound/01 - Projektarbete",
"projid": "1567771889595",
"actid": "1567771980580",
"date": "2020-11-04",
"spec": "Utlägg [892]454",
"costvatexcl": "44.0",
"costvatincl": "55.0",
"username": "Fia Svartenbrant",
"attested": true,
"invoiced": true
}
}
Response, XML
<?xml version="1.0" encoding="UTF-8" ?>
<TicTacRows>
<TicTacSale>
<date>2022-01-01</date>
<rowid>1489660871091</rowid>
<username>Per Andersson</username>
<userid>PerAdm</userid>
<projectname>Film till webbsidan/Analys</projectname>
<projid>1447077260817</projid>
<actid>1447077927832</actid>
<spec>NordicInk AB fakturanr 202201 2022-01-18</spec>
<amount>1.0</amount>
<attested>false</attested>
<invoiced>false</invoiced>
</TicTacSale>
<TicTacTime>
<rowid>1483534828305</rowid>
<username>Anna Andersson</username>
<userid>annatictacse</userid>
<projectname>ABC-analys Hedgehog/Redovisning</projectname>
<projid>1455109526722</projid>
<actid>1455109932972</actid>
<spec></spec>
<hours>8.0</hours>
<attested>true</attested>
<invoiced>true</invoiced>
</TicTacTime>
<TicTacTime>
<date>2022-01-02</date>
<rowid>1483534736117</rowid>
<username>Per Andersson</username>
<userid>PerAdm</userid>
<projectname>ABC-analys Hedgehog/Tillägg</projectname>
<projid>1455109526722</projid>
<actid>1482332413454</actid>
<spec>Startmöte inför nya årett</spec>
<hours>3.0</hours>
<attested>true</attested>
<invoiced>true</invoiced>
</TicTacTime>
</TicTacRows>
Add an entry, POST
curl -v
-X "POST" "tictacmobile.com/api/rest/v1/entries"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
-H "Accept: application/json"
-H "Content-Type: application/json"
-d "{\"targetUserId\":\"PerAdm\", \"projectName\":\"ABC-analys Hedgehog\", \"activityName\":\"Analys\", \"spec\":\"Skriver en rad\",\"source\":\"abc\", \"date\":\"2022-10-02\", \"hours\":\"2.5\"}"
Example with posting XML:
<?xml version="1.0" encoding="UTF-8" ?>
<timeEntry>
<targetUserId>PerAdm</targetUserId>
<projectName>Mitt nya</projectName>
<activityName></activityName>
<spec>Möte med projektgruppen</spec>
<source></source>
<date>2022-10-02</date>
<hours>2</hours>
</timeEntry>
Response
{"createditemid":"1510677103458"}
Entries V2
Version 2 of Entries. With a few more options. Note .../v2/.. in uri below | ||
https://www.tictacmobile.com/api/rest/v2/entries | ||
GET: Returns a list of all entries (hours, expenses, mileage, allowances, sales). POST: Creates a time entry and returns entry id. DELETE: Deletes a time entry. |
||
https://www.tictacmobile.com/api/rest/v2/entries/{projectid} | ||
GET: Returns a list of all entries for project specified by id. | ||
Supported accept formats | ||
XML, JSON. Format should be specified in Accept header as application/xml or application/json. | ||
Supported content-type formats | ||
XML, JSON. Format should be specified in Content-type header as application/xml or application/json. | ||
Query parameters (will be ignored in POST request) | ||
startdate | mandatory | Date in format YYYY-MM-DD, from this date entries will be retrieved. |
enddate | mandatory | Date in format YYYY-MM-DD, to this date entries will be retrieved. |
projectId | optional | Id of project for getting entries for this project only |
userId | optional | Id of coworker for getting entries for this coworker only |
daysChangedWithin | optional | Positive integer, up to 90. Only retrieve entries created or changed within [daysChangedWithin] days from today. |
timeOnly | optional | Boolean, to return time entries only in response. |
Read entries, GET
curl
-X "GET" "tictacmobile.com/api/rest/v2/entries?startdate=2022-09-03&enddate=2022-09-06"
-H "Accept: application/xml"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Get entries for specific project
-X "GET" "tictacmobile.com/api/rest/v2/entries?projectId=1137768437234?startdate=2022-09-03&enddate=2022-09-06"
Get the entries created or changed within x days
-X "GET" "tictacmobile.com/api/rest/v2/entries?startdate=2022-09-03&enddate=2022-09-06&daysChangedWithinStr=60"
Get the time entries only
-X "GET" "tictacmobile.com/api/rest/v2/entries?startdate=2022-09-03&enddate=2022-09-06&timeOnly=true"
Response, JSON
{
"ticTacRows": [
{
"type": "TicTacTime",
"userid": "fiamia",
"rowid": "1604592475583",
"projectname": "ElectroSound/01 - Projektarbete",
"projid": "1567771889595",
"actid": "1567771980580",
"date": "2020-11-03",
"spec": "Mera",
"hours": "1.0",
"username": "Fia Svartenbrant",
"attested": true,
"invoiced": true
},
{
"type": "TicTacTime",
"userid": "fiamia",
"rowid": "1604592252254",
"projectname": "ElectroSound/02 - Analys",
"projid": "1567771889595",
"actid": "1567771990799",
"date": "2020-11-03",
"spec": "rerer",
"hours": "0.5",
"username": "Fia Svartenbrant",
"attested": true,
"invoiced": true
},
{
"type": "TicTacCost",
"userid": "fiamia",
"rowid": "1604491998604",
"projectname": "ElectroSound/01 - Projektarbete",
"projid": "1567771889595",
"actid": "1567771980580",
"date": "2020-11-04",
"spec": "Utlägg [892]454",
"costvatexcl": "44.0",
"costvatincl": "55.0",
"username": "Fia Svartenbrant",
"attested": true,
"invoiced": true
}
}
Response, XML
Note that this format differs from version 1
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<workItemModel>
<ticTacRows>
<type>TicTacTime</type>
<userid>PerAdm</userid>
<rowid>1605175001865</rowid>
<projectname>Aduro Intranet/Testning</projectname>
<projid>1137768437234</projid>
<actid>1422952089527</actid>
<date>2020-11-10</date>
<spec></spec>
<hours>7.0</hours>
<username>Per Andersson</username>
<attested>true</attested>
<invoiced>true</invoiced>
</ticTacRows>
<ticTacRows>
<type>TicTacTime</type>
<userid>PerAdm</userid>
<rowid>1605175003698</rowid>
<projectname>Aduro Intranet/Testning</projectname>
<projid>1137768437234</projid>
<actid>1422952089527</actid>
<date>2020-11-11</date>
<spec></spec>
<hours>5.5</hours>
<username>Per Andersson</username>
<attested>true</attested>
<invoiced>true</invoiced>
</ticTacRows>
<ticTacRows>
<type>TicTacMile</type>
<userid>PerAdm</userid>
<rowid>1605601473085</rowid>
<projectname>Aduro Intranet/Testning</projectname>
<projid>1137768437234</projid>
<actid>1422952089527</actid>
<date>2020-11-17</date>
<spec>Körde bil</spec>
<distance>333.0</distance>
<username>Per Andersson</username>
<attested>true</attested>
<invoiced>true</invoiced>
</ticTacRows>
<ticTacRows>
<type>TicTacSale</type>
<userid>PerAdm</userid>
<rowid>1561369429588</rowid>
<projectname>Aduro Intranet/Art direction</projectname>
<projid>1137768437234</projid>
<actid>1259853648654</actid>
<date>2020-11-24</date>
<spec>13 Avtal per månad</spec>
<amount>1.0</amount>
<username>Per Andersson</username>
<attested>true</attested>
<invoiced>true</invoiced>
</ticTacRows>
</workItemModel>
Add an entry, POST
You can provide projectName/activityName or projectId/activityId in the call
curl -v
-X "POST" "tictacmobile.com/api/rest/v2/entries"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
-H "Accept: application/json"
-H "Content-Type: application/json"
-d "{\"targetUserId\":\"PerAdm\", \"projectName\":\"ABC-analys Hedgehog\", \"activityName\":\"Analys\", \"spec\":\"Skriver en rad\",\"source\":\"abc\", \"date\":\"2022-10-02\", \"hours\":\"2.5\"}"
Example with posting XML:
<?xml version="1.0" encoding="UTF-8" ?>
<timeEntry>
<targetUserId>PerAdm</targetUserId>
<projectId>1137768437234</projectId>
<activityId>1137768502203</activityId>
<spec>Möte med gruppen</spec>
<source></source>
<date>2020-12-02</date>
<hours>1.5</hours>
</timeEntry>
Response
{"createditemid":"1510677103458"}
Delete an entry, DELETE
curl -v
-X "DELETE" "tictacmobile.com/api/rest/v2/entries/73277373711?userId=fimia"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
-H "Accept: application/json"
-H "Content-Type: application/json"
Response
OK
Timeplan
https://www.tictacmobile.com/api/rest/v1/timeplans | ||
Returns a list of all time plan entries. | ||
https://www.tictacmobile.com/api/rest/v1/timeplans/{forUser} | ||
Returns a list of all time plan entries for user specified by Tic-Tac login name. | ||
Supported methods | ||
GET | ||
Supported accept formats | ||
XML, JSON. Format should be specified in Accept header as application/xml or application/json. | ||
Query parameters | ||
startdate | mandatory | Date in format YYYY-MM-DD, from this date time plan entries will be retrieved. |
enddate | mandatory | Date in format YYYY-MM-DD, to this date time plan entries will be retrieved. |
projectId | optional | To specify project id for data retrieving. |
Additional query parameters, not for /{forUser} path | ||
forWorkgroup | optional | To specify Workgroup. Omitted if invalid |
forCostcenter | optional | To specify Costcenter. Omitted if invalid |
forDepartment | optional | To specify Department. Omitted if invalid |
Read timeplan, GET
curl
-X "GET" "tictacmobile.com/api/rest/v1/timeplans?startdate=2022-09-03&enddate=2022-09-06"
-H "Accept: application/xml"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
-X "GET" "tictacmobile.com/api/rest/v1/timeplans/per@tictac.se?startdate=2022-09-03&enddate=2022-09-06"
Get timeplans for scpecific workgroup
-X "GET" "tictacmobile.com/api/rest/v1/timeplans?startdate=2022-09-03&enddate=2022-09-06&forWorkgroup=Ledningsgruppen"
Response
{"ticTacTimeplans":[
{"userid":"annatictacse","userName":"Andersson, Anna","itemid":"1485865268555","projectName":"Apollo Market/Analys","projid":"1441032326122","actid":"1441032358950","startDate":"2016-12-26","endDate":"2022-01-01","comment":"","duration":"10","partOfDay":"31,25","isPreliminary":false,"created":"2022-01-31 13:21","changed":"2022-01-31 13:21"},
{"userid":"annatictacse","userName":"Andersson, Anna","itemid":"1485865270196","projectName":"Apollo Market/Analys","projid":"1441032326122","actid":"1441032358950","startDate":"2022-01-02","endDate":"2022-01-08","comment":"","duration":"10","partOfDay":"31,25","isPreliminary":false,"created":"2022-01-31 13:21","changed":"2022-01-31 13:21"},
{"userid":"annatictacse","userName":"Andersson, Anna","itemid":"1485865274711","projectName":"Apollo Market/Analys","projid":"1441032326122","actid":"1441032358950","startDate":"2022-01-09","endDate":"2022-01-15","comment":"","duration":"20","partOfDay":"62,5","isPreliminary":false,"created":"
2022-01-31 13:21","changed":"2022-01-31 13:21"},
{"userid":"annatictacse","userName":"Andersson, Anna","itemid":"1485855177883","projectName":"Apollo Market/Analys","projid":"1441032326122","actid":"1441032358950","startDate":"2022-01-30","endDate":"2022-01-30","comment":"","duration":"1","partOfDay":"12,5","isPreliminary":false,"created":"2022-01-31 10:32","changed":"2022-01-31 10:32"},
{"userid":"annatictacse","userName":"Andersson, Anna","itemid":"1485783430240","projectName":"Film till webbsidan/Analys","projid":"1447077260817","actid":"1447077927832","startDate":"2022-01-02","endDate":"2022
-01-08","comment":"","duration":"10","partOfDay":"31,25","isPreliminary":false,"created":"2022-01-30 14:37","changed":"2022-01-30 14:37"},
{"userid":"annatictacse","userName":"Andersson, Anna","itemid":"1485783431990","projectName":"Film till webbsidan/Analys","projid":"1447077260817","actid":"1447077927832","startDate":"2022-01-09","endDate":"2022-01-15","comment":"","duration":"10","partOfDay":"31,25","isPreliminary":false,"created":"2022-01-30 14:37","changed":"2022-01-30 14:37"},
{"userid":"annatictacse","userName":"Andersson, Anna","itemid":"1485783433755","projectName":"Film till webbsidan/Analys","projid":"1447077260817","actid":"1447077927832","startDate":"2022-01-16","endDate":"2022-01-22","comment":"","duration":"10","partOfDay":"31,25","isPreliminary":false,"created":"2022-01-30 1
4:37","changed":"2022-01-30 14:37"}]}
Pricelists
https://www.tictacmobile.com/api/rest/v1/pricelists | ||
Returns the time price list. | ||
Supported methods | ||
GET | ||
Supported accept formats | ||
XML, JSON. Format should be specified in Accept header as application/xml or application/json. | ||
Query parameters | ||
none |
Get the time price list
curl
-X "GET" "tictacmobile.com/api/rest/v1/pricelists"
-H "Accept: application/xml"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Response
[{"priceId":"1444983222610","pricename":"Admin","hourRate":900.0,"startDate":"1999-01-01","description":"","adminName":"Per Andersson"},
{"priceId":"1444983222610","pricename":"Admin","hourRate":1000.0,"startDate":"2016-06-01","description":"Nytt pris från juni 2016","adminName":"Per Andersson"},
{"priceId":"1444983222610","pricename":"Admin","hourRate":1050.0,"startDate":"2016-12-05","description":"Nytt bättre pris","adminName":"Per Andersson"},
{"priceId":"1485438341942","pricename":"Bokslutsarbete","hourRate":495.0,"startDate":"1999-01-01","description":"","adminName":"Per Andersson"},
{"priceId":"1480940484909","pricename":"Konsulent, senior","hourRate":700.0,"startDate":"1999-01-01","description":"","adminName":"Per Andersson"},
{"priceId":"1480940462799","pricename":"Konsulent, standard","hourRate":600.0,"startDate":"1999-01-01","description":"","adminName":"Per Andersson"}]
Project Reports
https://www.tictacmobile.com/api/rest/v1/projectreports | ||
Returns time summed up for all projects and all users. | ||
Supported methods | ||
GET | ||
Supported accept formats | ||
XML. Format should be specified in Accept header as application/xml. | ||
Query parameters | ||
startdate | mandatory | Date in format YYYY-MM-DD, from this date project reports will be retrieved. |
enddate | mandatory | Date in format YYYY-MM-DD, to this date project reports will be retrieved. |
groupBy | optional | 1 - no grouping: 2 - Customer; 3 - Account; 4 - Category; 5 - ResultArea; 6 - Projectlead. |
Request sample
curl
-X "GET" "tictacmobile.com/api/rest/v1/projectreports?startdate=2022-09-01&enddate=2022-09-30"
-H "Accept: application/xml"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Get project reports grouped by customer
-X "GET" "tictacmobile.com/api/rest/v1/projectreports?startdate=2022-09-01&enddate=2022-09-30&groupBy=2"
Response
<?xml version="1.0" encoding="UTF-8" ?>
<TimeSumByProject>
<row>
<group></group>
<project>ABC-analys Hedgehog</project>
<projid>1455109526722</projid>
<time>37.75</time>
<allAttested>true</allAttested>
<allInvoiced>true</allInvoiced>
</row>
<row>
<group></group>
<project>Aduro Intranet</project>
<projid>1137768437234</projid>
<time>43.51</time>
<allAttested>true</allAttested>
<allInvoiced>true</allInvoiced>
</row>
<row>
<group></group>
<project>Apollo Market</project>
<projid>1441032326122</projid>
<time>88.0</time>
<allAttested>false</allAttested>
<allInvoiced>false</allInvoiced>
</row>
<row>
<group></group>
<project>Film till webbsidan</project>
<projid>1447077260817</projid>
<time>21.0</time>
<allAttested>false</allAttested>
<allInvoiced>false</allInvoiced>
</row>
<row>
<group></group>
<project>FRÅNVARO</project>
<projid>1137703186406</projid>
<time>14.0</time>
<allAttested>false</allAttested>
<allInvoiced>false</allInvoiced>
</row>
</TimeSumByProject>
Project Overviews
https://www.tictacmobile.com/api/rest/v1/projectoverviews | ||
Returns project statistics for al project in a given time period. | ||
Supported methods | ||
GET | ||
Supported accept formats | ||
XML and JSON | ||
Query parameters | ||
startdate | mandatory | Date in format YYYY-MM-DD, from this date projectoverviews will be retrieved. |
enddate | mandatory | Date in format YYYY-MM-DD, to this date projectoverviews will be retrieved. |
Request sample
curl
-X "GET" "tictacmobile.com/api/rest/v1/projectoverviews?startdate=2022-09-01&enddate=2022-09-30"
-H "Accept: application/xml" or "Accept: application/json"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Response
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProjectsOverview>
<ticTacProjectOverview>
<category>ABC-analys Hedgehog</category>
<projid>1455109526722</projid>
<projectname>ABC-analys Hedgehog</projectname>
<projectIsActive>true</projectIsActive>
<billing>HOUR_RATE</billing>
<firstItem>2022-01-02</firstItem>
<lastItem>2022-01-25</lastItem>
<durationSum>37.75</durationSum>
<durationAmount>35212.5</durationAmount>
<expenceSum>620.0</expenceSum>
<salesSum>0.0</salesSum>
<uninvoicedFrom></uninvoicedFrom>
<uninvoicedDurationSum>0.0</uninvoicedDurationSum>
<uninvoicedDurationAmount>0.0</uninvoicedDurationAmount>
<uninvoicedExpenceSum>0.0</uninvoicedExpenceSum>
<uninvoicedSalesSum>0.0</uninvoicedSalesSum>
<fixedPrice>0.0</fixedPrice>
<isOtherCurrActive>true</isOtherCurrActive>
<otherCurrency>SEK</otherCurrency>
<conversionRate>1.0</conversionRate>
<invoicedSum>175400.0</invoicedSum>
<durationCorrectedSum>-2.75</durationCorrectedSum>
<costCorrectedSum>0.0</costCorrectedSum>
<selfCostSum>13562.5</selfCostSum>
</ticTacProjectOverview>
....
</ticTacProjectOverview>
</ProjectsOverview>
User Reports
https://www.tictacmobile.com/api/rest/v1/userreports | ||
Returns time summed up for all users. | ||
https://www.tictacmobile.com/api/rest/v1/userreports/{userid} | ||
Returns time summed up for one specific user. | ||
Supported methods | ||
GET | ||
Supported accept formats | ||
application/xml or application/json) | ||
Query parameters | ||
startdate | mandatory | Date in format YYYY-MM-DD, from this date user reports will be retrieved. |
enddate | mandatory | Date in format YYYY-MM-DD, to this date user reports will be retrieved. |
Request sample
curl
-X "GET" "tictacmobile.com/api/rest/v1/userreports?startdate=2022-09-01&enddate=2022-09-30"
-H "Accept: application/xml"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Get user reports for specific user
-X "GET" "tictacmobile.com/api/rest/v1/userreports/PerAdm?startdate=2022-09-01&enddate=2022-09-30"
Response
<?xml version="1.0" encoding="UTF-8" ?>
<TimeSumPerUserAndProject>
<row>
<employee>Anna Andersson</employee>
<project>ABC-analys Hedgehog</project>
<parttime>0</parttime>
<time>24.0</time>
</row>
<row>
<employee>Per Andersson</employee>
<project>ABC-analys Hedgehog</project>
<parttime>100</parttime>
<time>13.75</time>
</row>
<row>
<employee>Per Andersson</employee>
<project>Aduro Intranet</project>
<parttime>100</parttime>
<time>24.51</time>
</row>
<row>
<employee>Eva-Lena Bengtsson</employee>
<project>Aduro Intranet</project>
<parttime>50</parttime>
<time>19.0</time>
</row>
<row>
<employee>Per Andersson</employee>
<project>Apollo Market</project>
<parttime>100</parttime>
<time>42.0</time>
</row>
<row>
<employee>Eva Bergman</employee>
<project>Apollo Market</project>
<parttime>0</parttime>
<time>12.0</time>
</row>
</TimeSumPerUserAndProject>
Normal Times
https://www.tictacmobile.com/api/rest/v1/normaltimes | ||
Returns standard normal time for given period. | ||
https://www.tictacmobile.com/api/rest/v1/normaltimes/{listnumber} | ||
Returns alternate normal time specified by list number [0 .. 9] where 0 is the Standard Normal Time | ||
Supported methods | ||
GET | ||
Supported accept formats | ||
XML. Format should be specified in Accept header as application/xml. | ||
Query parameters | ||
startdate | mandatory | Date in format YYYY-MM-DD, from this date normal time will be retrieved. |
enddate | mandatory | Date in format YYYY-MM-DD, to this date normal time will be retrieved. |
Request sample
curl
-X "GET" "tictacmobile.com/api/rest/v1/normaltimes?startdate=2022-01-01&enddate=2022-01-30"
-H "Accept: application/json"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Get alternative normal times number 2
-X "GET" "tictacmobile.com/api/rest/v1/normaltimes/2?startdate=2022-01-01&enddate=2022-01-30"
Response
{"ticTacNormalTime":[
{"date":"2022-01-02","dayType":"1","time":"8"},
{"date":"2022-01-04","dayType":"1","time":"8"},
{"date":"2022-01-06","dayType":"3","time":"0"},
{"date":"2022-01-10","dayType":"1","time":"8"},
{"date":"2022-01-11","dayType":"1","time":"8"},
---
{"date":"2022-01-27","dayType":"1","time":"8"},
{"date":"2022-01-31","dayType":"1","time":"8"}]}
Invoices
https://www.tictacmobile.com/api/rest/v1/invoices | ||
Returns a list of all invoices for given period. Max number of invoices returned are 1000. | ||
https://www.tictacmobile.com/api/rest/v1/invoices/{projectid} | ||
Returns a list of all invoices for one project specified by an id. Max number of invoices returned are 1000. | ||
Supported methods | ||
GET | ||
Supported accept formats | ||
XML. Format should be specified in Accept header as application/xml. | ||
Query parameters | ||
startdate | mandatory | Date in format YYYY-MM-DD, from this date invoices will be retrieved. |
enddate | mandatory | Date in format YYYY-MM-DD, to this date invoices will be retrieved. |
Request sample
curl
-H "Accept: application/xml"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Get all invoices between two dates
-X "GET" "tictacmobile.com/api/rest/v1/invoices?startdate=2022-09-01&enddate=2022-09-30"
Get invoices for project 1455109526722
-X "GET" "tictacmobile.com/api/rest/v1/invoices/1455109526722?startdate=2022-09-01&enddate=2022-09-30"
Response
<?xml version="1.0" encoding="UTF-8" ?>
<invoices period="2022-09-01-2022-09-30">
<tictacmobile>
<report version="I.2022-08-24" source="report" time="Thu Sep 14 10:38:59 CEST 2022">
<language>sv</language>
<country>SE</country>
<currencySymbol>SEK</currencySymbol>
<head>
<logotype>556423-2121.gif</logotype>
<companyName><![CDATA[Astralux AB]]></companyName>
<companyAdrRow1><![CDATA[Business Center]]></companyAdrRow1>
<companyAdrRow2><![CDATA[Nybrogatan 34]]></companyAdrRow2>
<companyAdrRow3><![CDATA[114 39 Stockholm]]></companyAdrRow3>
<phone>08-535 33 00</phone>
<fax>08-535 33 10</fax>
<email>info@tictacmobile.com</email>
</head>
<invoiceParams>
<invoiceCompany><![CDATA[Aduro Telefoni AB]]></invoiceCompany>
<invoiceAdrRow1><![CDATA[Storsjösvängen 3]]></invoiceAdrRow1>
<invoiceAdrRow2><![CDATA[123 38]]></invoiceAdrRow2>
<invoiceAdrRow3><![CDATA[Malmö]]></invoiceAdrRow3>
<invoiceNumber>639</invoiceNumber>
<customerNumber>1002</customerNumber>
<invoiceDate>2022-09-14</invoiceDate>
<dueDate>2022-10-14</dueDate>
<yourReference><![CDATA[Sven Person]]></yourReference>
<ourReference><![CDATA[Daniel Buxbom]]></ourReference>
<customerVATno>SE8219298289201</customerVATno>
</invoiceParams>
<project account="3211" hourrateVal="500">
<projectname><![CDATA[Aduro Intranet]]></projectname>
<projectid>1137768437234</projectid>
<employee>Per Andersson </employee>
<timeperiod>2022-09-01 - 2022-09-30</timeperiod>
<description><![CDATA[En ny funtionalitet i interna webben för prissättning av nya tjänster.]]></description>
<activity name="Art direction" account="3211">
<specification><![CDATA[Form, layout, skisser]]></specification>
<coworker name="Per Andersson" hourrate="1 200 kr" hourrateVal="1200">
<row>
<type>Time</type>
<isAttested>true</isAttested>
<attestedBy>Per Andersson</attestedBy>
<id>1504276401628</id>
<userid>PerAdm</userid>
<date>2022-09-01 fr</date>
<duration>0,5 tim</duration>
<specification><![CDATA[]]></specification>
</row>
<row>
<type>Time</type>
<isAttested>true</isAttested>
<attestedBy>Per Andersson</attestedBy>
<id>1504612490282</id>
<userid>PerAdm</userid>
<date>2022-09-05 ti</date>
<duration>8,0 tim</duration>
<specification><![CDATA[Test]]></specification>
</row>
<timesumrow>
<time>8,5 tim</time>
<amount>10 200 kr</amount>
</timesumrow>
</coworker>
</activity>
<activity name="Projektledning" account="3211">
<coworker name="Per Andersson" hourrate="1 100 kr" hourrateVal="1100">
<row>
<type>Time</type>
<isAttested>true</isAttested>
<attestedBy>Per Andersson</attestedBy>
<id>1504696480610</id>
<userid>PerAdm</userid>
<date>2022-09-07 to</date>
<duration>2,0 tim</duration>
<specification><![CDATA[]]></specification>
</row>
<row>
<type>Time</type>
<isAttested>true</isAttested>
<attestedBy>Per Andersson</attestedBy>
<id>1505377224156</id>
<userid>PerAdm</userid>
<date>2022-09-13 on</date>
<duration>6,5 tim</duration>
<specification><![CDATA[]]></specification>
</row>
<row>
<type>Time</type>
<isAttested>true</isAttested>
<attestedBy>Per Andersson</attestedBy>
<id>1505377323250</id>
<userid>PerAdm</userid><date>2022-09-14 to</date><duration>5,5 tim</duration><specification><![CDATA[Ny plan]]></specification>
</row>
<timesumrow>
<time>18,0 tim</time>
<amount>19 800 kr</amount>
</timesumrow>
</coworker>
</activity>
<activity name="Strategi" account="3211">
<specification><![CDATA[Upplägg av affärsstrategi]]></specification>
<coworker name="Per Andersson" hourrate="1 100 kr" hourrateVal="1100">
<row>
<type>Time</type>
<isAttested>true</isAttested>
<attestedBy>Per Andersson</attestedBy>
<id>1504272336831</id>
<userid>PerAdm</userid>
<date>2022-09-01 fr</date>
<duration>1,0 tim</duration>
<specification><![CDATA[Viktigt möte]]></specification>
</row>
<timesumrow>
<time>1,0 tim</time>
<amount>1 100 kr</amount>
</timesumrow>
</coworker>
</activity>
<activity name="Annat än tid" account="3211">
<coworker name="Per Andersson" hourrate="0 kr" hourrateVal="0">
<row>
<type>Sale</type>
<isAttested>true</isAttested>
<attestedBy>Per Andersson</attestedBy>
<id>1504529552685</id>
<userid>PerAdm</userid>
<date>2022-09-04 må</date>
<specification><![CDATA[1 Supportärende]]></specification>
<amount>1</amount>
<price val="300">300 kr</price>
<cost val="300">300 kr</cost>
</row>
<row>
<type>Trak</type>
<isAttested>true</isAttested>
<attestedBy>Per Andersson</attestedBy>
<id>1505137368673</id>
<userid>PerAdm</userid>
<date>2022-09-11 må</date>
<specification><![CDATA[TRAKTAMENTE :Sverige (Norm.bel:220kr) Dagar:1.5 2022-09-11 08:00 - 2022-09-12 08:00(avdrag ant frukost:1 lunch/middag:0) Test for new TraktamenteServer]]></specification>
<cost val="297">297 kr</cost>
</row>
<row>
<type>Sale</type>
<isAttested>true</isAttested>
<attestedBy>Per Andersson</attestedBy>
<id>1505377481906</id>
<userid>PerAdm</userid>
<date>2022-09-14 to</date>
<specification><![CDATA[5 Säkerhetsanalys [2 st. á 1 900,00 kr]]]></specification>
<amount>2</amount>
<price val="1900">1 900 kr</price>
<cost val="3800">3 800 kr</cost>
</row>
</coworker>
<totalSum>33 354 kr</totalSum>
</activity>
<activityTotals>
<timesumrow>
<time>27,5 tim</time>
<amount>31 100 kr</amount>
</timesumrow>
<otherCost>33 354 kr</otherCost>
<totalSum>64 454 kr</totalSum>
</activityTotals>
</project>
<totalsInclVAT><timeCost val="31100">31 100 kr</timeCost>
<otherCost val="33354">33 354 kr</otherCost>
<totalSum val="64454">64 454 kr</totalSum>
<vatRate val="25">25%</vatRate>
<vat val="16113">16 113 kr</vat>
<grandTotalSum val="80567">80 567 kr</grandTotalSum>
</totalsInclVAT>
<foot>
<altBankAccount>IBAN: 7328-09423 BIC: nordeaess</altBankAccount>
<orgnumber>555555-5555</orgnumber>
<vatnumber>SE555555555501</vatnumber>
<fskatt>1</fskatt>
<duedays>30</duedays>
<conditions><![CDATA[Please pay to our IBAN account within 30 days]]></conditions>
</foot>
</report>
</tictacmobile>
</invoices>
Utilizations
https://www.tictacmobile.com/api/rest/v1/utilizations | ||
Returns a list of all utilizations. | ||
Supported methods | ||
GET | ||
Supported accept formats | ||
XML, JSON. Format should be specified in Accept header as application/xml or application/json. | ||
Query parameters | ||
startdate | mandatory | Date in format YYYY-MM-DD, from this date utilizations will be retrieved. |
enddate | mandatory | Date in format YYYY-MM-DD, to this date utilizations will be retrieved. |
Request sample
curl
-H "Accept: application/xml"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
Get all utilizations between two dates
-X "GET" "tictacmobile.com/api/rest/v1/utilizations?startdate=2022-09-01&enddate=2022-09-30"
Response
<?xml version="1.0" encoding="UTF-8" ?>
<Utilizations">
<ticTacUtilizations>
<employee>Per Andersson</employee>
<userid>PerAdm</userid>
<partTime>100</partTime>
<normalTime>155.5</normalTime>
<billable>98.4</billable>
<amount>0</amount>
<rate>0</rate>
<cost>54120</cost>
<unbillable>2.0</unbillable>
<utilizationAlpha>98</utilizationAlpha>
<utilizationBeta>67.7</utilizationBeta>
<utilizationGamma>72.1</utilizationGamma>
<vacation>10.0</vacation>
<leave>0.0</leave>
<absence>0.0</absence>
<totalSum>0.0</totalSum>
</ticTacUtilizations>
</Utilizations>
TimeSumByCoworker
https://www.tictacmobile.com/api/rest/v1/timeSumByCoworker | ||
Summing up all projects/activities time during a given period | ||
Supported methods | ||
GET | ||
Supported accept formats | ||
XML, JSON. Format should be specified in Accept header as application/xml or application/json. | ||
Query parameters | ||
startdate | mandatory | Date in format YYYY-MM-DD, from this date utilizations will be retrieved. |
enddate | mandatory | Date in format YYYY-MM-DD, to this date utilizations will be retrieved. |
showActivities | optional | Show activity names, value true or false |
groupBy | optional | groupBy, integer value 0 to 5. 0 = no grouping, 1 = group by workgroup, 2 = costcenter, 3 = department, 4 = team |
groupByAccountNo | optional | group at first level by Accout Number, value true or false. |
timeType | optional | integer value 0 to 1. 0 = all hours, 1 = working hours, 2 = absence, 3 = overtime |
Request sample
curl
-H "Accept: application/xml"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
-X "GET" "https://tictacmobile.com/api/rest/v1/timeSumByCoworker?startdate=2019-03-01&enddate=2019-09-30&groupBy=3&groupByAccountNo=true"
Response
{
"timeSumByCoworker": [
{
"accountNo": "",
"category": "Avd 1",
"userFullName": "Per Andersson",
"projName": "ABC Hedgehog",
"billingType": 1,
"actName": "Project Lead",
"hourRate": 11000.0,
"duration": 9.5,
"value": 104500.0
},
{
"accountNo": "",
"category": "Avd 1",
"userFullName": "Per Andersson",
"projName": "ABC-analys Hedgehog",
"billingType": 1,
"actName": "Analys & Uppföljning",
"hourRate": 0.0,
"duration": 38.5,
"value": 0.0
},...
TimeSumByProject
https://www.tictacmobile.com/api/rest/v1/timeSumByProject | ||
Summing up all users reported time during a given period | ||
Supported methods | ||
GET | ||
Supported accept formats | ||
XML, JSON. Format should be specified in Accept header as application/xml or application/json. | ||
Query parameters | ||
startdate | mandatory | Date in format YYYY-MM-DD, from this date utilizations will be retrieved. |
enddate | mandatory | Date in format YYYY-MM-DD, to this date utilizations will be retrieved. |
projectid | optional | Narrow the result to one or more projects |
showCoworkers | optional | Show coworkers names, value true or false |
showActivities | optional | Show activity names, value true or false |
groupBy | optional | groupBy, integer value 0 to 5. 0 = no grouping, 1 = our account, 2 = category, 3 = result area, 4 = customer, 5 = project lead |
groupByAccountNo | optional | group at first level by Accout Number, value true or false. |
projectsSummedUp | optional | To sum up all hours on activities common across alla projects. value true or false. |
Request sample
curl
-H "Accept: application/xml"
-H "Authorization: Bearer xxxxxxxxxx.yyyyyyyyyyy.zzzzzzzzzzz"
-X "GET" "tictacmobile.com/api/rest/v1/timeSumByProject?startdate=2019-09-01&enddate=2019-09-30&groupBy=3"
Get project reports for three specific projects
-X "GET" "tictacmobile.com/api/rest/v1/timeSumByProject?startdate=2022-09-01&enddate=2022-09-30&projectid=235235217111,235235217251,235235218383"
Response
{
"timeSumByProject": [
{
"category": "",
"userFullName": "",
"projName": "",
"billingType": 1,
"actName": "Analys",
"hourRate": 542.64514,
"duration": 310.0,
"value": 168220.0
},
{
"category": "",
"userFullName": "",
"projName": "",
"billingType": 1,
"actName": "Analys & Uppföljning",
"hourRate": 52.892563,
"dura ...
Contact & Support
Let us hear from you if you have questions, feed back or need a hand to get started using the API.
Give us a call at +46-8-660 08 70