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.