Discussions

Ask a Question

FTE hours?

Hi! This question concerns both V1 and V2 of the API. In V1 and V2 we can get "weekly_working_hours". But the FTE hours (meaning the second number you see in the Employee UI, eg "40 / 40") seems to be missing in both API versions. I REALLY really need that number to be included, so we can calculate the rate. Bonus question: Will V2 allow us to retrive/update en employee's children? Bonus question 2: Will V2 allow us to update balances? Meaning vacation adjustments Cheers / Fredrik

Attendance API error PT10H

Hello. Sometimes when we are integrating to personio this error occurs. ``` Blocking attendance 4512e5df-0776-488f-8ee6-fd1fccdb676f of employee:20694569 company:83992. Attendance work duration of 622 minutes exceeded max allowed duration PT10H ``` what is the cause of this error and how can this be handled? <br /> Looking forward to hearing from you soon.

Updated field not received from employees api

Hello all, I have some sync jobs that run with a certain frequency and I fetch employee information using the GET /companies/employees endpoint. I use a dynamic field provided to me by my customer to fetch emails of employees. A few days ago, customer informed me that they changed the email address of one of their employees, when I checked the logs of my sync jobs from these past few days, I saw that the dynamic field is still set to the old email address. When I search for this employee with email query param set to either the new or the old email address, I am able to get this employee from the endpoint. So this left me a bit confused about how the email fields work. Does the customer need to do something else to reflect the email change on the dynamic field as well? In case it makes a difference, the reason the email address was changed was because it contained a special character 'ß' and it caused some problems, so they changed it to 'ss'. Thank you in advance.

Receiving the representation user through time offs API

Hi! I wanted to ask again if there are any updates regarding adding the substitution/ representative user to the time-offs-endpoint. I found several tickets, the first of which was created 3 years ago, regarding the need of the parameter: [Get absence substitution](https://developer.personio.de/discuss/637dd937fe9ab903bfc14ee8) [Retrieving Substitutes via API Endpoints](https://developer.personio.de/discuss/65cf640e14fef9006070071f) [Missing Parameters => Representation from /time-offs & Mail from /employees](https://developer.personio.de/discuss/6448c84021e2700015dd2ee3) [Representation User](https://developer.personio.de/discuss/64c8ac53148f1e004caac337) [Get absence substitution](https://developer.personio.de/discuss/637dd937fe9ab903bfc14ee8) [Replacement User - Time Offs API](https://developer.personio.de/discuss/605060298874cf0048169550) Are there any plans to implement the parameter in near future? Thanks in advance! Best Regards Nirujan

API Endpoint Not Found for Attendance Update

Dear Personio Support Team, I hope this message finds you well. I am currently integrating an internal system with the Personio API to manage employee attendance records. However, I am encountering an issue when attempting to update an existing attendance record using the API. Specifically, I am receiving a "Not Found" error when I make a request to update the attendance. When I use the exact same attendance ID to search using your testing tool on the documentation it works without issue. Is this a known error or is there anything more you can tell me using the personio_trace_id? # Issue Details **Error Message:** ```json { "personio_trace_id": "17c5ce36-e36f-4b0e-84f0-4be38e1d7c72", "timestamp": "2024-07-19T17:42:30Z", "errors": [ { "title": "Not Found", "detail": "The endpoint with /v1/company/attendances/392086375 was not found.", "type": "https://developer.personio.de/v2.0/page/public-api-error-codes#apinot_found", "_meta": { "path": "/v1/company/attendances/392086375" } } ] } ``` # Code snippet ``` url = f"https://api.personio.de/v1/company/attendances/{attendance_id}" payload = { "date": str(date.today()), "end_time": end_time.strftime('%H:%M'), "break": 30, "skip_approval": True } headers = { "accept": "application/json", "content-type": "application/json", "authorization": f'Bearer {personio_auth}' } response = requests.put(url, json=payload, headers=headers) response_data = response.json() ``` <br /> Thanks so much for your help here. Best wishes, Cathal

POST Attendances

why does this transfer not work? (Employee ID and token have been replaced) <br /> [Net.ServicePointManager]\::SecurityProtocol = [Net.SecurityProtocolType]'Tls11,Tls12' $headers=@{} $headers.Add("accept", "application/json") $headers.Add("content-type", "application/json") $headers.Add("authorization", "$Token") $response = Invoke-WebRequest -Uri '<https://api.personio.de/v1/company/attendances'> -Method POST -Headers $headers -ContentType 'application/json' -Body '{"attendances":[{"employee":XXXXXXX,"date":"2024-01-18","start_time":"06:37","end_time":"16:47","break":45,"comment":"Test5 Übertragung von TA Zeitblick"},{"employee":XXXXXXX,"date":"2024-01-19","start_time":"06:35","end_time":"15:37","break":30,"comment":"Test6 Übertragung von TA Zeitblick"}]}' Server response Invoke-WebRequest : Der Remoteserver hat einen Fehler zurückgegeben: (400) Ungültige Anforderung. In D:\\Scripte\\TA_Zeitblick_Archiv\\Hilfe\\Personio\\Anwesenheiten_nach_Personio_uebertragen_JSON.PS1:55 Zeichen:13 - $response = Invoke-WebRequest -Uri '<https://api.personio.de/v1/compan> ... - CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException - FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand {"success":true,"data":{"token":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","expires_in":86400,"scope":"employees:read employees:write attendances:read attendances:write absences:read absences:write documents :read documents:write reports.custom:read reports.custom:write"}} Thanks Bert
ANSWERED

List Absence Periods not working?

for some reason the List Absence Period request is not returning any results. List Time-Offs is working as intended with the same input data (only start & end date provided). Am I missing something? There definitely are absences in this period, as they are listed by the time-offs query. { "success": true, "metadata": { "total_elements": 0, "current_page": 1, "total_pages": 0 }, "data": \[], "offset": 0, "limit": 200 }
ANSWERED

half_day_start and half_day_end are integers?

When i create a Time-Off, the values half_day_start and half_day_end are returned as integers. (at least in my case i set them to false, and the returned as 0). In the documentation it says, the are type boolean. Is this a bug or a mistake in the Documentation?
ANSWERED

individual API - for social media campaign

Hello We want to start a social media campaign with a new agency. We need to start a connection so that the leads from the social media campaign can go directly into Personio. Unfortunately, there is not yet a standardized API between the agency and personio in the Marketplace. We would follow the path below - are we on the right track? Go to: Settings in Personio --> Integrations --> API --> Create individual integration. Webhooks - Reading - Edit Is this the right setting? We only want a kind of "one-way street" - i.e. that the leads come from the agency to us in Personio. We don't want to give the agency access to the system, applications or employee data. Our questions: - Is this the right way to go? - What exactly is behind "webhooks"? Unfortunately, the Personio article didn't help us. - Is it common for the agency to need the company ID in addition to the token of the individual API? Thank you and best regards Andrea
ANSWERED

Strange behavior with Employee Endpoint without offset & limit set

We are currently experiencing problems with the employee endpoint "List Employees". By default, we do not set an offset and limit and address the endpoint directly via "<https://api.personio.de/v1/company/employees">. This worked quite well until recently. Today we noticed that the updated data in Personio is not being passed via this endpoint. The data records are still in the state before the update. If you set a value for Limit and Offset, the updated data records appear. Is this an intended behavior? If so, is there another way to get more than 200 employees with one single query, since we have more than 200 employees?