OpenAPI Specification
openapi: 3.0.3
info:
title: hakuna Time Tracking Absences API
description: 'The hakuna REST API provides programmatic access to the hakuna time-tracking and personnel-management platform: the running timer, time entries, absences, projects, tasks, clients, users, and account-wide company settings. Personal endpoints act in the context of the authenticated user; management endpoints require an admin token and the organization endpoint requires an organization-level token. All requests and responses are JSON. Generated by the API Evangelist enrichment pipeline from the published API documentation; not an official hakuna machine-readable specification.'
version: v1
x-apievangelist-generated: '2026-07-19'
x-apievangelist-method: generated
x-apievangelist-source: https://app.hakuna.ch/api_docs
contact:
name: hakuna Support
url: https://www.hakuna.ch/kontakt
termsOfService: https://www.hakuna.ch/rechtliches/agb
servers:
- url: https://app.hakuna.ch/api/v1
description: Production
security:
- AuthToken: []
tags:
- name: Absences
description: Absence records and absence categories
paths:
/absences:
get:
operationId: listAbsences
summary: List absences
description: List absences for the authenticated user, filtered by year.
tags:
- Absences
parameters:
- name: year
in: query
required: false
schema:
type: integer
example: 2026
description: The calendar year to list absences for.
responses:
'200':
description: A list of absences
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Absence'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
/absence_types:
get:
operationId: listAbsenceTypes
summary: List absence types
description: List the absence categories configured for the account.
tags:
- Absences
responses:
'200':
description: A list of absence types
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AbsenceType'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
components:
schemas:
Error:
type: object
description: JSON error object with a descriptive message.
properties:
message:
type: string
description: Human-readable description of the error.
Absence:
type: object
description: An absence record for a user.
properties:
id:
type: string
start_date:
type: string
format: date
end_date:
type: string
format: date
days:
type: number
absence_type:
$ref: '#/components/schemas/AbsenceType'
user:
$ref: '#/components/schemas/User'
AbsenceType:
type: object
description: A category of absence configured for the account.
properties:
id:
type: string
name:
type: string
User:
type: object
description: A user of the account.
properties:
id:
type: string
name:
type: string
email:
type: string
format: email
role:
type: string
responses:
Unauthorized:
description: The auth token is missing or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
RateLimited:
description: Too many requests. Limited to 100 requests per minute per customer.
headers:
X-RateLimit-Limit:
schema:
type: integer
description: Maximum requests allowed in the window.
X-RateLimit-Remaining:
schema:
type: integer
description: Requests remaining in the current window.
X-RateLimit-Reset:
schema:
type: integer
description: Seconds until the window resets.
Retry-After:
schema:
type: integer
description: Seconds to wait before retrying.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
AuthToken:
type: apiKey
in: header
name: X-Auth-Token
description: Personal API token managed under "My Settings". Organization endpoints require a separate organization-level token; management endpoints require an admin token.