Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.0.3",
"info": {
"title": "Nedap Ons API",
"version": "0.0.0"
},
"servers": [
{
"url": "https://api-development.ons.io"
}
],
"paths": {
"/v0/administration/account_entries/{id}": {
"get": {
"tags": [
"payroll.AccountEntry"
],
"summary": "Return the Account Entry corresponding to the given id",
"operationId": "payroll.AccountEntryAPI.byId",
"parameters": [
{
"name": "id",
"in": "path",
"description": "used for selecting AccountEntry",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "X-Cupido-User-Name",
"in": "header",
"schema": {
"type": "string"
}
},
{
"name": "X-Cupido-Active-Identity",
"in": "header",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/payroll.AccountEntry"
}
}
}
},
"400": {
"description": "The ID is required"
},
"404": {
"description": "The account entry cannot be found"
}
},
"x-cupido-common-method": true,
"x-replacement-for": [
"/t/payroll/account_entries/{id}"
]
}
},
"/v0/administration/account_entries/by_employee_and_type_in_period/{employee_id}": {
"get": {
"tags": [
"payroll.AccountEntry"
],
"summary": "Retrieve all AccountEntry for an Employee for a specific AccountType in a period",
"description": "Retrieve all {@link AccountEntry} for an {@link Employee} for a specific {@link AccountType} in a period",
"operationId": "payroll.AccountEntryAPI.byEmployeeAndAccountTypeInPeriod",
"parameters": [
{
"name": "employee_id",
"in": "path",
"description": "the specific employee",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "account_type_id",
"in": "query",
"description": "the account type",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "valid_from",
"in": "query",
"description": "the start of the period",
"required": true,
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "valid_to",
"in": "query",
"description": "the end of the period",
"required": true,
"schema": {
"type": "string",
"format": "date"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/payroll.list.AccountEntryList"
}
}
}
}
},
"x-replacement-for": [
"/t/payroll/account_entries/by_employee_and_type_in_period/{employee_id}"
]
}
},
"/v0/administration/account_entries/by_employee_and_type_till_date/{employee_id}": {
"get": {
"tags": [
"payroll.AccountEntry"
],
"summary": "Retrieve the account entries up until the specified date for a specific employee and specified type",
"operationId": "payroll.AccountEntryAPI.byEmployeeIdAndAccountTypeIdTillDate",
"parameters": [
{
"name": "employee_id",
"in": "path",
"description": "of the requested employee",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "account_type_id",
"in": "query",
"description": "the specified accountType",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "date",
"in": "query",
"description": "until accountentries are requested",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/payroll.list.AccountEntryList"
}
}
}
}
},
"x-replacement-for": [
"/t/payroll/account_entries/by_employee_and_type_till_date/{employee_id}"
]
}
},
"/v0/administration/account_entries/by_employee_and_type/{employee_id}": {
"get": {
"tags": [
"payroll.AccountEntry"
],
"summary": "Retrieve all AccountEntry for an Employee and a specific AccountType",
"description": "Retrieve all {@link AccountEntry} for an {@link Employee} and a specific {@link AccountType}",
"operationId": "payroll.AccountEntryAPI.byEmployeeAndAccountType",
"parameters": [
{
"name": "employee_id",
"in": "path",
"description": "the requested employee",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "account_type_id",
"in": "query",
"description": "the specific accountType",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/payroll.list.AccountEntryList"
}
}
}
}
},
"x-replacement-for": [
"/t/payroll/account_entries/by_employee_and_type/{employee_id}"
]
}
},
"/v0/administration/account_entries/by_employee_in_period/{employee_id}": {
"get": {
"tags": [
"payroll.AccountEntry"
],
"summary": "Retrieve all the AccountEntry for an Employee in a specified period",
"description": "Retrieve all the {@link AccountEntry} for an {@link Employee} in a specified period",
"operationId": "payroll.AccountEntryAPI.byEmployeeInPeriod",
"parameters": [
{
"name": "employee_id",
"in": "path",
"description": "of the request employee",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "valid_from",
"in": "query",
"description": "the start of the period",
"required": true,
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "valid_to",
"in": "query",
"description": "the end of the period",
"required": true,
"schema": {
"type": "string",
"format": "date"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/payroll.list.AccountEntryList"
}
}
}
}
},
"x-replacement-for": [
"/t/payroll/account_entries/by_employee_in_period/{employee_id}"
]
}
},
"/v0/administration/account_entries/by_employee_till_date/{employee_id}": {
"get": {
"tags": [
"payroll.AccountEntry"
],
"summary": "Retrieve the account entries up until the specified date for a specific employee",
"operationId": "payroll.AccountEntryAPI.byEmployeeIdTillDate",
"parameters": [
{
"name": "employee_id",
"in": "path",
"description": "of the requested employee",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "date",
"in": "query",
"description": "until accountentries are requested",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/payroll.list.AccountEntryList"
}
}
}
}
},
"x-replacement-for": [
"/t/payroll/account_entries/by_employee_till_date/{employee_id}"
]
}
},
"/v0/administration/account_entries/by_employee/{employee_id}": {
"get": {
"tags": [
"payroll.AccountEntry"
],
"summary": "Retrieve all AccountEntry for an Employee",
"description": "Retrieve all {@link AccountEntry} for an {@link Employee}",
"operationId": "payroll.AccountEntryAPI.byEmployee",
"parameters": [
{
"name": "employee_id",
"in": "path",
"description": "the requested employee",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/payroll.list.AccountEntryList"
}
}
}
}
},
"x-replacement-for": [
"/t/payroll/account_entries/by_employee/{employee_id}"
]
}
},
"/v0/administration/account_type_expire_statistics/by_employee_at_date/{employee_id}": {
"get": {
"tags": [
"payroll.AccountTypeExpireStatistic"
],
"summary": "Retrieve all the AccountTypeExpireStatistic for an Employee calculated at the given date",
"description": "Retrieve all the {@link AccountTypeExpireStatistic} for an {@link Employee} calculated at the given date",
"operationId": "payroll.AccountTypeExpireStatisticAPI.byEmployeeAtDate",
"parameters": [
{
"name": "employee_id",
"in": "path",
"description": "of the requested employee",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "date",
"in": "query",
"description": "the date for which AccountTypeExpireStatistics are requested",
"required": true,
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "subtype",
"in": "query",
"description": "the subtype of the account types for which AccountTypeExpireStatistics should be returned. Valid inputs are 0 (none), 1 (PLB) and 2 (LFB).",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/payroll.list.AccountTypeExpireStatisticList"
}
}
}
}
},
"x-replacement-for": [
"/t/payroll/account_type_expire_statistics/by_employee_at_date/{employee_id}"
]
}
},
"/v0/administration/account_types": {
"get": {
"tags": [
"payroll.AccountType"
],
"summary": "Returns every AccountType available from the AccountTypeAPI",
"operationId": "payroll.AccountTypeAPI.all",
"parameters": [
{
"name": "X-Cupido-User-Name",
"in": "header",
"schema": {
"type": "string"
}
},
{
"name": "X-Cupido-Active-Identity",
"in": "header",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/payroll.list.AccountTypeList"
}
}
}
}
},
"x-cupido-common-method": true,
"x-replacement-for": [
"/t/payroll/account_types"
]
}
},
"/v0/administration/account_types/{id}": {
"get": {
"tags": [
"payroll.AccountType"
],
"summary": "Return the AccountType corresponding to the given id",
"operationId": "payroll.AccountTypeAPI.byId",
"parameters": [
{
"name": "id",
"in": "path",
"description": "used for selecting AccountType",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "X-Cupido-User-Name",
"in": "header",
"schema": {
"type": "string"
}
},
{
"name": "X-Cupido-Active-Identity",
"in": "header",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/payroll.AccountType"
}
}
}
},
"400": {
"description": "ID is required"
},
"404": {
"description": "The account type could not be found"
}
},
"x-cupido-common-method": true,
"x-replacement-for": [
"/t/payroll/account_types/{id}"
]
}
},
"/v0/administration/addresses/{id}": {
"get": {
"tags": [
"Address"
],
"summary": "Find address by id",
"operationId": "AddressAPI.byId",
"parameters": [
{
"name": "id",
"in": "path",
"description": "the id of an address",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Address"
}
}
}
},
"404": {
"description": "Address not found"
}
},
"x-cupido-common-method": true,
"x-replacement-for": [
"/t/addresses/{id}"
]
}
},
"/v0/administration/admin/background_image": {
"get": {
"tags": [
"admin.BackgroundImage"
],
"summary": "Retrieves the BackgroundImage",
"operationId": "admin.BackgroundImageAPI.get",
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/admin.BackgroundImage"
}
}
}
}
},
"x-replacement-for": [
"/t/admin/background_image"
]
}
},
"/v0/administration/admin/licenses": {
"get": {
"tags": [
"admin.License"
],
"summary": "Returns every License available from the LicenseAPI",
"operationId": "admin.LicenseAPI.all",
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/admin.list.LicenseList"
}
}
}
}
},
"x-cupido-common-method": true,
"x-replacement-for": [
"/t/admin/licenses"
]
}
},
"/v0/administration/admin/logo_image": {
"get": {
"tags": [
"admin.LogoImage"
],
"summary": "Retrieves the LogoImage",
"operationId": "admin.LogoImageAPI.get",
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/admin.LogoImage"
}
}
}
}
},
"x-replacement-for": [
"/t/admin/logo_image"
]
}
},
"/v0/administration/admin/logo_image/download": {
"get": {
"tags": [
"admin.LogoImage"
],
"summary": "Download logo image.",
"operationId": "admin.LogoImageAPI.download",
"parameters": [
{
"name": "Accept",
"in": "header",
"schema": {
"type": "string",
"default": "image/jpeg"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"image/jpeg": {
"schema": {
"type": "string",
"format": "binary"
}
}
}
}
},
"x-replacement-for": [
"/t/admin/logo_image/download"
]
}
},
"/v0/administration/admin/timesheetconfig": {
"get": {
"tags": [
"admin.TimesheetConfig"
],
"summary": "Retrieves the TimesheetConfig",
"operationId": "admin.TimesheetConfigAPI.get",
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/admin.TimesheetConfig"
}
}
}
}
},
"x-replacement-for": [
"/t/timesheet_config"
]
},
"put": {
"tags": [
"admin.TimesheetConfig"
],
"summary": "Updates the given TimesheetConfig",
"operationId": "admin.TimesheetConfigAPI.update",
"requestBody": {
"description": "TimesheetConfig to update",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/admin.TimesheetConfig"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/admin.TimesheetConfig"
}
}
}
}
},
"x-cupido-common-method": true,
"x-replacement-for": [
"/t/timesheet_config"
]
}
},
"/v0/administration/admin/version": {
"get": {
"tags": [
"admin.Version"
],
"summary": "Retrieves the Version",
"operationId": "admin.VersionAPI.get",
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/admin.Version"
}
}
}
}
},
"x-replacement-for": [
"/t/admin/version"
]
}
},
"/v0/administration/agbcodes": {
"get": {
"tags": [
"Agbcode"
],
"summary": "Returns every Agbcode available from the AgbcodeAPI",
"operationId": "AgbcodeAPI.all",
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/list.AgbcodeList"
}
}
}
}
},
"x-cupido-common-method": true,
"x-replacement-for": [
"/t/agbcodes"
]
}
},
"/v0/administration/agbcodes/{id}": {
"get": {
"tags": [
"Agbcode"
],
"summary": "Return the Agbcode corresponding to the given id",
"operationId": "AgbcodeAPI.byId",
"parameters": [
{
"name": "id",
"in": "path",
"description": "used for selecting Agbcode",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Agbcode"
}
}
}
}
},
"x-cupido-common-method": true,
"x-replacement-for": [
"/t/agbcodes/{id}"
]
}
},
"/v0/administration/agbcodes/by_client_id/{id}/sorted": {
"get": {
"tags": [
"Agbcode"
],
"summary": "Return a list of sorted agbcodes, using the tree depth of the location of given person",
"description": "if the agbcode of the location fails, return agbcode from the parent unit",
"operationId": "AgbcodeAPI.sortedByClientId",
"parameters": [
{
"name": "id",
"in": "path",
"description": "of the client's object from who we want the associated agbcode",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "active_only",
"in": "query",
"description": "Determines if only the active or all agb codes of the active locations of given person are returned.",
"required": false,
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/list.AgbcodeList"
}
}
}
},
"400": {
"description": "Client ID is required"
}
},
"x-replacement-for": [
"/t/agbcodes/by_client_id/{id}/sorted"
]
}
},
"/v0/administration/arrangement/intent_preferences/add_intent_to_time_slot/{intent_uuid}": {
"post": {
"tags": [
"arrangement.IntentPreference"
],
"summary": "Adds an extra or first Intent to the TimeSlot.",
"operationId": "arrangement.IntentPreferenceAPI.addIntentToTimeSlot",
"parameters": [
{
"name": "intent_uuid",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "time_slot_uuid",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "No time slot UUID specified"
},
"403": {
"description": "Intent can't be set to time slots, because it is created by the OA-CONVERTER"
},
"404": {
"description": "Intent or time slot not found"
}
},
"x-replacement-for": [
"/t/arrangement/intent_preferences/add_intent_to_time_slot/{intent_uuid}"
]
}
},
"/v0/administration/arrangement/intent_preferences/for_client_in_period/{client_uuid}": {
"get": {
"tags": [
"arrangement.IntentPreference"
],
"summary": "Gets a list of IntentPreferences for the client in a period.",
"description": "Only Intents that are within the period or partially overlap with it, will be included in the result\nIntentPreferenceList.",
"operationId": "arrangement.IntentPreferenceAPI.forClientInPeriod",
"parameters": [
{
"name": "client_uuid",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "period_begin",
"in": "query",
"required": true,
"schema": {
"type": "string",
"format": "date"
}
},
{
"name": "period_end",
"in": "query",
"required": true,
"schema": {
"type": "string",
"format": "date"
}
}
],
"responses": {
"200": {
"description": "No response was specified",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/arrangement.list.IntentPreferenceList"
}
}
}
},
"400": {
"description": "Invalid period"
},
"404": {
"description": "Client was not found"
}
},
"x-replacement-for": [
"/t/arrangement/intent_preferences/for_client_in_period/{client_uuid}"
]
}
},
"/v0/administration/arrangement/intent_preferences/remove_intent_from_time_slot/{intent_uuid}": {
"delete": {
"tags": [
"arrangement.IntentPreference"
],
"summary": "Removes an Intent from the TimeSlot.",
"operationId": "arrangement.IntentPreferenceAPI.removeIntentFromTimeSlot",
"parameters": [
{
"name": "intent_uuid",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "time_slot_uuid",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "No time slot UUID specified"
},
"403": {
"description": "Intent can't be set to time slots, because it is created by the OA-CONVERTER"
},
"404": {
"description": "Intent or time slot not found"
}
},
"x-replacement-for": [
"/t/arrangement/intent_preferences/remove_intent_from_time_slot/{intent_uuid}"
]
}
},
"/v0/administration/arrangement/intent_preferences/set_intent_to_time_slots/{intent_uuid}": {
"post": {
"tags": [
"arrangement.IntentPreference"
],
"summary": "Ties an Intent to a list of TimeSlots, replacing all previous connections.",
"operationId": "arrangement.IntentPreferenceAPI.setIntentToTimeSlots",
"parameters": [
{
"name": "intent_uuid",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/arrangement.UuidList"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "No time slot UUID's specified, or Intent not found"
},
"403": {
"description": "Intent can't be set to time slots, because it is created by the OA-CONVERTER"
},
"404": {
"description": "Intent cannot be found"
}
},
"x-replacement-for": [
"/t/arrangement/intent_preferences/set_intent_to_time_slots/{intent_uuid}"
]
}
},
"/v0/administration/arrangement/intent_preferences/set_time_slot_to_intents/{time_slot_uuid}": {
"post": {
"tags": [
"arrangement.IntentPreference"
],
"summary": "Connects a TimeSlot to a list of Intents, replacing all, if any, previous connections.",
"operationId": "arrangement.IntentPreferenceAPI.setTimeSlotToIntents",
"parameters": [
{
"name": "time_slot_uuid",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/arrangement.UuidList"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "No time slot UUID specified"
},
"403": {
"description": "Intent can't be set to time slots, because it is created by the OA-CONVERTER"
},
"404": {
"description": "Time slot not found"
}
},
"x-replacement-for": [
"/t/arrangement/intent_preferences/set_time_slot_to_intents/{time_slot_uuid}"
]
}
},
"/v0/administration/arrangement/intents": {
"post": {
"tags": [
"arrangement.Intent"
],
"summary": "Create Intent",
"description": "Deprecated due to potential overlap validation issues. Use createOrUpdateTimeline instead.",
"operationId": "arrangement.IntentAPI.create",
"requestBody": {
"description": "Intent to create",
"content": {
"application/json": {
"schema": {
"$ref": "#/com
# --- truncated at 32 KB (2909 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nedap/refs/heads/main/openapi/nedap-ons-openapi-original.json