Kombo Custom Endpoints API

Custom integration-specific endpoints.

Operations 18

POST /ats/custom/avionte/synced-jobs Add a job to be synced #
DELETE /ats/custom/avionte/synced-jobs/{job_remote_id} Remove a job from sync #
GET /custom/datev/system-information Get DATEV system information #
POST /custom/datev/passthrough Write raw DATEV ASCII file #
GET /custom/datev/check-eau-permission Verify service is enabled #
GET /custom/datev/eau-requests/{eau_id} Query the status of the eAU request #
GET /custom/datev/check-document-permission Verify service is enabled #
GET /custom/datev/available-documents Retrieve available documents #
POST /custom/datev/download-document Download Payroll Document #
POST /custom/datev/employees/{employee_id}/download-document Download Payroll Document #
POST /custom/datev/employees/{employee_id}/eau-requests Create eAU Request #
PUT /custom/datev/employees/{employee_id}/prepare-payroll Prepare DATEV Payroll #
PUT /custom/datev/employees/{employee_id}/compensations Set DATEV compensations #
GET /custom/datev/check-write-permission Verify service is enabled #
GET /custom/datev/data-pushes Get DATEV data pushes #
POST /custom/datev/push-data/general Push general data to DATEV #
POST /custom/datev/push-data/payroll Push payroll data to DATEV #
POST /custom/silae/employees/{employee_id}/payroll-supplements Write Payroll Supplement #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/kombo-custom-endpoints-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

kombo-custom-endpoints-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Kombo Custom Endpoints API
  version: 1.0.0
  description: Custom integration-specific endpoints.
servers:
- url: https://api.kombo.dev/v1
  description: Kombo EU API
- url: https://api.us.kombo.dev/v1
  description: Kombo US API
security:
- ApiKey: []
tags:
- name: Custom Endpoints
  description: Custom integration-specific endpoints.
paths:
  /ats/custom/avionte/synced-jobs:
    post:
      operationId: PostAtsCustomAvionteSyncedJobs
      summary: Add a job to be synced
      description: Adds a job to the synced jobs list. The next sync will pick it up and sync it including all applications and candidates.
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: avionte:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      requestBody:
        description: POST /ats/custom/avionte/synced-jobs Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostAtsCustomAvionteSyncedJobsRequestBody'
            examples:
              example1:
                value:
                  job_remote_id: '12345'
      responses:
        '200':
          description: POST /ats/custom/avionte/synced-jobs Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostAtsCustomAvionteSyncedJobsPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /ats/custom/avionte/synced-jobs/{job_remote_id}:
    delete:
      operationId: DeleteAtsCustomAvionteSyncedJobsJobRemoteId
      summary: Remove a job from sync
      description: Removes a job from the synced jobs list. Does not delete already synced data.
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: avionte:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: job_remote_id
        in: path
        required: true
        description: DELETE /ats/custom/avionte/synced-jobs/:job_remote_id Parameter
        schema:
          $ref: '#/components/schemas/DeleteAtsCustomAvionteSyncedJobsJobRemoteIdParameterJobRemoteId'
        examples:
          example1:
            value: '12345'
      requestBody:
        description: DELETE /ats/custom/avionte/synced-jobs/:job_remote_id Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteAtsCustomAvionteSyncedJobsJobRemoteIdRequestBody'
            examples:
              example1:
                value: {}
      responses:
        '200':
          description: DELETE /ats/custom/avionte/synced-jobs/:job_remote_id Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteAtsCustomAvionteSyncedJobsJobRemoteIdPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/system-information:
    get:
      operationId: GetCustomDatevSystemInformation
      summary: Get DATEV system information
      description: This endpoint returns BeraterNr (consultant_number), MandantenNr (client_number) and the payroll system (LODAS or Lohn und Gehalt). Useful to generate a DATEV ASCII file for the passthrough endpoint.
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      responses:
        '200':
          description: GET /custom/datev/system-information Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCustomDatevSystemInformationPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data:
                      consultant_number: 1234567
                      client_number: 99999
                      target_system: LODAS
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/passthrough:
    post:
      operationId: PostCustomDatevPassthrough
      summary: Write raw DATEV ASCII file
      description: This action allows to send an arbitrary ASCII file directly to DATEV LODAS or Lohn und Gehalt. Kombo adds validation for the file format but not on the content. This action allows you to implement any use case that you might have with DATEV payroll ASCII imports.
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      requestBody:
        description: POST /custom/datev/passthrough Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCustomDatevPassthroughRequestBody'
      responses:
        '200':
          description: POST /custom/datev/passthrough Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCustomDatevPassthroughPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data: {}
                    warnings:
                    - message: This is an example warning!
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/check-eau-permission:
    get:
      operationId: GetCustomDatevCheckEauPermission
      summary: Verify service is enabled
      description: This endpoint validates that this DATEV integration is ready to use the eAU feature.
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      responses:
        '200':
          description: GET /custom/datev/check-eau-permission Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCustomDatevCheckEauPermissionPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/eau-requests/{eau_id}:
    get:
      operationId: GetCustomDatevEauRequestsEauId
      summary: Query the status of the eAU request
      description: This endpoint queries the status of the eAU request for the given DATEV integration.
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: eau_id
        in: path
        required: true
        description: GET /custom/datev/eau-requests/:eau_id Parameter
        schema:
          $ref: '#/components/schemas/GetCustomDatevEauRequestsEauIdParameterEauId'
      responses:
        '200':
          description: GET /custom/datev/eau-requests/:eau_id Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCustomDatevEauRequestsEauIdPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/check-document-permission:
    get:
      operationId: GetCustomDatevCheckDocumentPermission
      summary: Verify service is enabled
      description: This endpoint returns the available document types for this DATEV integration.
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      responses:
        '200':
          description: GET /custom/datev/check-document-permission Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCustomDatevCheckDocumentPermissionPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/available-documents:
    get:
      operationId: GetCustomDatevAvailableDocuments
      summary: Retrieve available documents
      description: Use this endpoint to get all available documents for a specific period.
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: period
        in: query
        required: true
        description: Provide the period in the format YYYY-MM-DD for which to check for available documents.
        schema:
          $ref: '#/components/schemas/GetCustomDatevAvailableDocumentsParameterPeriod'
      responses:
        '200':
          description: GET /custom/datev/available-documents Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCustomDatevAvailableDocumentsPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data:
                      results:
                      - document_type: LOBN
                        available_for_employees:
                        - id: 8Xi6iZrwusZqJmDGXs49GBmJ
                          remote_id: '123456'
                        is_company_document: false
                      - document_type: LOJO
                        available_for_employees: []
                        is_company_document: true
                    warnings:
                    - message: This is an example warning!
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/download-document:
    post:
      operationId: PostCustomDatevDownloadDocument
      summary: Download Payroll Document
      description: "Download a document from DATEV\n\n<Note>\n  This endpoint requires the permission **Manage documents** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"accounting_month\": \"2001-12-01\",\n  \"document_type\": \"LOJE\",\n  \"employee_id\": null\n}\n```"
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      requestBody:
        description: POST /custom/datev/download-document Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCustomDatevDownloadDocumentRequestBody'
            examples:
              example1:
                value:
                  accounting_month: '2001-12-01'
                  document_type: LOJE
                  employee_id: null
              example2:
                value:
                  accounting_month: '2001-12-01'
                  document_type: LSTB
                  employee_id: remote:200
      responses:
        '200':
          description: POST /custom/datev/download-document Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCustomDatevDownloadDocumentPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/employees/{employee_id}/download-document:
    post:
      operationId: PostCustomDatevEmployeesEmployeeIdDownloadDocument
      summary: Download Payroll Document
      description: "Download a document from DATEV\n\n<Note>\n  This endpoint requires the permission **Manage documents** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"accounting_month\": \"2001-12-01\",\n  \"document_type\": \"LOJE\"\n}\n```"
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: employee_id
        in: path
        required: true
        description: POST /custom/datev/employees/:employee_id/download-document Parameter
        schema:
          $ref: '#/components/schemas/PostCustomDatevEmployeesEmployeeIdDownloadDocumentParameterEmployeeId'
        examples:
          example1:
            value: null
          example2:
            value: remote:200
      requestBody:
        description: POST /custom/datev/employees/:employee_id/download-document Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCustomDatevEmployeesEmployeeIdDownloadDocumentRequestBody'
            examples:
              example1:
                value:
                  accounting_month: '2001-12-01'
                  document_type: LOJE
              example2:
                value:
                  accounting_month: '2001-12-01'
                  document_type: LSTB
      responses:
        '200':
          description: POST /custom/datev/employees/:employee_id/download-document Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCustomDatevEmployeesEmployeeIdDownloadDocumentPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/employees/{employee_id}/eau-requests:
    post:
      operationId: PostCustomDatevEmployeesEmployeeIdEauRequests
      summary: Create eAU Request
      description: "Create a request for an electronic certificate of incapacity for work (eAU).\n\n<Note>\n  This endpoint requires the permission **Manage eAU** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"start_work_incapacity\": \"2022-01-01\"\n}\n```"
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: employee_id
        in: path
        required: true
        description: ID of the employee that should be updated. You can use their Kombo `id` or their ID in the remote system by prefixing it with `remote:` (e.g., `remote:12312`)
        schema:
          $ref: '#/components/schemas/PostCustomDatevEmployeesEmployeeIdEauRequestsParameterEmployeeId'
        examples:
          example1:
            value: remote:12312
      requestBody:
        description: POST /custom/datev/employees/:employee_id/eau-requests Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCustomDatevEmployeesEmployeeIdEauRequestsRequestBody'
            examples:
              example1:
                value:
                  start_work_incapacity: '2022-01-01'
      responses:
        '200':
          description: POST /custom/datev/employees/:employee_id/eau-requests Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCustomDatevEmployeesEmployeeIdEauRequestsPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/employees/{employee_id}/prepare-payroll:
    put:
      operationId: PutCustomDatevEmployeesEmployeeIdPreparePayroll
      summary: Prepare DATEV Payroll
      description: "What DATEV requires to prepare payroll is very specific and currently, as DATEV is not providing \"read\", this is not part of the unified model.\n\n<Note>\n  This endpoint requires the permission **Manage payroll** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"employee_id\": \"EvLV61zdahkN4ftPJbmPCkdv\",\n  \"payroll_run\": {\n    \"date\": \"2022-05-01\"\n  },\n  \"fixed_payments\": [\n    {\n      \"amount\": 560,\n      \"lohnart\": 100\n    }\n  ],\n  \"hourly_payments\": [\n    {\n      \"hours\": 14,\n      \"lohnart\": 200\n    },\n    {\n      \"hours\": 16,\n      \"lohnart\": 232\n    }\n  ],\n  \"custom_lodas\": [\n    {\n      \"amount\": 8,\n      \"lohnart\": 300,\n      \"bearbeitungsschluessel\": 4\n    }\n  ]\n}\n```"
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: employee_id
        in: path
        required: true
        description: ID of the employee that should be updated. You can use their Kombo `id` or their ID in the remote system by prefixing it with `remote:` (e.g., `remote:12312`)
        schema:
          $ref: '#/components/schemas/PutCustomDatevEmployeesEmployeeIdPreparePayrollParameterEmployeeId'
        examples:
          example1:
            value: EvLV61zdahkN4ftPJbmPCkdv
      requestBody:
        description: PUT /custom/datev/employees/:employee_id/prepare-payroll Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutCustomDatevEmployeesEmployeeIdPreparePayrollRequestBody'
            examples:
              example1:
                value:
                  payroll_run:
                    date: '2022-05-01'
                  fixed_payments:
                  - amount: 560
                    lohnart: 100
                  hourly_payments:
                  - hours: 14
                    lohnart: 200
                  - hours: 16
                    lohnart: 232
                  custom_lodas:
                  - amount: 8
                    lohnart: 300
                    bearbeitungsschluessel: 4
      responses:
        '200':
          description: PUT /custom/datev/employees/:employee_id/prepare-payroll Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PutCustomDatevEmployeesEmployeeIdPreparePayrollPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/employees/{employee_id}/compensations:
    put:
      operationId: PutCustomDatevEmployeesEmployeeIdCompensations
      summary: Set DATEV compensations
      description: "Sets the compensations for an employee on the specified effective date.\n\n Other compensations will end at the effective date. That means, if you would like to add a compensation, you also have to include the compensations that you would like to keep.\n\n<Note>\n  This endpoint requires the permission **Manage payroll** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"employee_id\": \"3bdhemmSP1TPQDGWtRveRot9\",\n  \"effective_date\": \"2022-12-01\",\n  \"compensations\": [\n    {\n      \"amount\": 4500,\n      \"currency\": \"EUR\",\n      \"period\": \"MONTH\",\n      \"lohnart\": 200\n    },\n    {\n      \"amount\": 30,\n      \"currency\": \"EUR\",\n      \"period\": \"HOUR\"\n    }\n  ]\n}\n```"
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: employee_id
        in: path
        required: true
        description: ID of the employee that should be updated. You can use their Kombo `id` or their ID in the remote system by prefixing it with `remote:` (e.g., `remote:12312`)
        schema:
          $ref: '#/components/schemas/PutCustomDatevEmployeesEmployeeIdCompensationsParameterEmployeeId'
        examples:
          example1:
            value: 3bdhemmSP1TPQDGWtRveRot9
      requestBody:
        description: PUT /custom/datev/employees/:employee_id/compensations Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutCustomDatevEmployeesEmployeeIdCompensationsRequestBody'
            examples:
              example1:
                value:
                  effective_date: '2022-12-01'
                  compensations:
                  - amount: 4500
                    currency: EUR
                    period: MONTH
                    lohnart: 200
                  - amount: 30
                    currency: EUR
                    period: HOUR
      responses:
        '200':
          description: PUT /custom/datev/employees/:employee_id/compensations Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PutCustomDatevEmployeesEmployeeIdCompensationsPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/check-write-permission:
    get:
      operationId: GetCustomDatevCheckWritePermission
      summary: Verify service is enabled
      description: This endpoint returns whether you can write to this DATEV integration.
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      responses:
        '200':
          description: GET /custom/datev/check-write-permission Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCustomDatevCheckWritePermissionPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/data-pushes:
    get:
      operationId: GetCustomDatevDataPushes
      summary: Get DATEV data pushes
      description: Returns all "DATEV Data Pushes" of the last 2 months. You can use this endpoint to give your users transparency about submitted "ASCII-Files" and their status. Each data push can contain multiple files that were submitted.
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      responses:
        '200':
          description: GET /custom/datev/data-pushes Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCustomDatevDataPushesPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/push-data/general:
    post:
      operationId: PostCustomDatevPushDataGeneral
      summary: Push general data to DATEV
      description: Uploads the currently relevant general data (employees, compensations, and time offs) to DATEV. This will create so called ASCII files that the accountant has to import in DATEV. You can call this endpoint to implement an on-demand sync to DATEV, for example if you want to offer your users a button to do that in your application.
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      requestBody:
        description: POST /custom/datev/push-data/general Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCustomDatevPushDataGeneralRequestBody'
      responses:
        '200':
          description: POST /custom/datev/push-data/general Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCustomDatevPushDataGeneralPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data:
                      files:
                      - name: EXTF_Stammdaten.csv
                        content: EXTF;700;21;Stammdaten;...
                    warnings:
                    - message: This is an example warning!
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/datev/push-data/payroll:
    post:
      operationId: PostCustomDatevPushDataPayroll
      summary: Push payroll data to DATEV
      description: Uploads the currently relevant payroll data (supplements) to DATEV. This will create so called ASCII files that the accountant has to import in DATEV. After finishing the payroll preparation or after correcting payroll, you can call this.
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: datev:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      requestBody:
        description: POST /custom/datev/push-data/payroll Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCustomDatevPushDataPayrollRequestBody'
      responses:
        '200':
          description: POST /custom/datev/push-data/payroll Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCustomDatevPushDataPayrollPositiveResponse'
              examples:
                example1:
                  value:
                    status: success
                    data:
                      files:
                      - name: EXTF_Bewegungsdaten.csv
                        content: EXTF;700;21;Bewegungsdaten;...
                    warnings:
                    - message: This is an example warning!
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
  /custom/silae/employees/{employee_id}/payroll-supplements:
    post:
      operationId: PostCustomSilaeEmployeesEmployeeIdPayrollSupplements
      summary: Write Payroll Supplement
      description: "Write a payroll supplement to Silae using the supplement code.\n\n<Note>\n  This endpoint requires the permission **Manage payroll** to be enabled in [your scope config](/scopes).\n</Note>\n\n### Example Request Body\n\n```json\n{\n  \"employee_id\": \"EvLV61zdahkN4ftPJbmPCkdv\",\n  \"supplement_code\": \"200\",\n  \"effective_date\": \"2024-01-14\",\n  \"element_amount\": 6\n}\n```"
      tags:
      - Custom Endpoints
      parameters:
      - in: header
        name: X-Integration-Id
        schema:
          type: string
        description: ID of the integration you want to interact with.
        example: silae:HWUTwvyx2wLoSUHphiWVrp28
        required: true
      - name: employee_id
        in: path
        required: true
        description: ID of the employee that should be updated. You can use their Kombo `id` or their ID in the remote system by prefixing it with `remote:` (e.g., `remote:12312`)
        schema:
          $ref: '#/components/schemas/PostCustomSilaeEmployeesEmployeeIdPayrollSupplementsParameterEmployeeId'
        examples:
          example1:
            value: EvLV61zdahkN4ftPJbmPCkdv
      requestBody:
        description: POST /custom/silae/employees/:employee_id/payroll-supplements Request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostCustomSilaeEmployeesEmployeeIdPayrollSupplementsRequestBody'
            examples:
              example1:
                value:
                  supplement_code: '200'
                  effective_date: '2024-01-14'
                  element_amount: 6
      responses:
        '200':
          description: POST /custom/silae/employees/:employee_id/payroll-supplements Positive response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostCustomSilaeEmployeesEmployeeIdPayrollSupplementsPositiveResponse'
        default:
          $ref: '#/components/responses/ErrorResponseGeneral'
components:
  schemas:
    GetCustomDatevDataPushesPositiveResponse:
      type: object
      properties:
        status:
          type: string
          const: success
        data:
          type: object
          properties:
            data_pushes:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  type:
                    type: string
                    enum:
                    - GENERAL
                    - PAYROLL
                    description: Type of the executed data push.
                  created_at:
                    description: Date when the push-data endpoint was called.
                    type: string
                    format: date-time
                    externalDocs:
                      url: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
                  upload_jobs:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        file_name:
                          type: string
                        state:
                          type: string
                          enum:
                          - FAILED
                          - UPLOADED
                          - IMPORTED
                          - CORRUPTED
                          - DELETED
                          - AUTO_DELETED
                          description: If we were not able to send the file to DATEV, we will set the state "FAILED". The other values are synced from DATEV for the respective import jobs.
                        file:
                          type: string
                          description: Actual content of the file.
                      required:
                      - id
                      - file_name
                      - state
                      - file
                    description: List of all the submitted files. This can include multiple files if data was edited for multiple months.
                required:
                - id
                - type
                - created_at
                - upload_jobs
          required:
          - data_pushes
      required:
      - status
      - data
    GetCustomDatevSystemInformationPositiveResponse:
      type: object
      properties:
        status:
          type: string
          const: success
        data:
          type: object
          properties:
            consultant_number:
              type: number
              format: double
              minimum: 1000
              maximum: 9999999
              description: The consultant number used for this DATEV integration (BeraterNr).
            client_number:
              type: number
              format: double
              minimum: 1
              maximum: 99999
              description: The client number used for this DATEV integration (MandantenNr).
            target_sys

# --- truncated at 32 KB (75 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kombo/refs/heads/main/openapi/kombo-custom-endpoints-api-openapi.yml