Entities and Endpoints

Abstract Crosstable

Generic crosstable entries (abstract_crosstable) used to link arbitrary record pairs across tables. Read-only: Post, Put, Save and Delete are all disabled. Server-driven paging defaults to 120 items per page.

APIDescription
GET api/AbstractCrosstable

Retrieves all crosstable entries, optionally filtered via OData query options.

GET api/AbstractCrosstable(id)

Retrieves the crosstable entry with the specified key.

POST api/AbstractCrosstable

Disabled. Crosstable entries are managed internally and cannot be created through this endpoint.

Application Version

Application version metadata (per platform) used to drive forced/optional update prompts in the client apps. Superseded the equivalent obsolete actions on .

APIDescription
POST api/ApplicationVersion/GetApplicationVersionInfo

Retrieves the application_version row matching the given version and platform.

POST api/ApplicationVersion/GetLatestApplicationVersion

Retrieves the latest application_version row for the given platform.

POST api/ApplicationVersion/AddUpdateApplicationVersion

Adds a new application_version row, or edits an existing one, depending on the method field.

Article

Articles (=products, parts, materials). Used for Sales and Services

APIDescription
GET api/Article

Retrieves all articles, optionally filtered via OData query options.

GET api/Article(id)

Retrieves the article with the specified key.

Article Category

Article categories, used to classify articles (e.g. for filtering and reporting). Read-only through this API.

APIDescription
GET api/ArticleCategory

Retrieves all article categories, optionally filtered via OData query options.

GET api/ArticleCategory(id)

Retrieves the article category with the specified key.

Article Discount

Discount rules (price/quantity breaks) linked to an article, discount family, and price label. Read-only through this API.

APIDescription
GET api/ArticleDiscount

Retrieves all article discounts, optionally filtered via OData query options.

GET api/ArticleDiscount(id)

Retrieves the article discount with the specified key.

Article Group

Article groups, used to organize articles into a classification hierarchy (see also , which caches the resolved hierarchy per article). Read-only through this API.

APIDescription
GET api/ArticleGroup

Retrieves all article groups, optionally filtered via OData query options.

GET api/ArticleGroup(id)

Retrieves the article group with the specified key.

Article Group Cache

Denormalized, per-sales-organization cache of an article's group hierarchy (up to 6 levels), status, and order-channel flag. Read-only through this API.

APIDescription
GET api/ArticleGroupCache

Retrieves all article group cache entries, optionally filtered via OData query options.

GET api/ArticleGroupCache(id)

Retrieves the article group cache entry with the specified key.

Article No Warranty Reason

Reasons an article can be excluded from warranty coverage, scoped per sales organization. Read-only through this API.

APIDescription
GET api/ArticleNoWarrantyReason

Retrieves all article no-warranty reasons, optionally filtered via OData query options.

GET api/ArticleNoWarrantyReason(id)

Retrieves the article no-warranty reason with the specified key.

Article Price Label

Price labels (e.g. list price, retail price) used to tag article prices per sales organization and currency. Read-only through this API.

APIDescription
GET api/ArticlePriceLabel

Retrieves all article price labels, optionally filtered via OData query options.

GET api/ArticlePriceLabel(id)

Retrieves the article price label with the specified key.

Article Price List

Prices of an article per price label (see ). Read-only through this API. Uses a larger default page size (120) than most endpoints.

APIDescription
GET api/ArticlePriceList

Retrieves all article prices, optionally filtered via OData query options.

GET api/ArticlePriceList(id)

Retrieves the article price with the specified key.

Article Status

Article statuses (e.g. active, discontinued), with a default flag and display color. Read-only through this API.

APIDescription
GET api/ArticleStatus

Retrieves all article statuses, optionally filtered via OData query options.

GET api/ArticleStatus(id)

Retrieves the article status with the specified key.

Article Status List

Scheduled article status changes: the status an article will have between a start and end date (e.g. a planned "discontinued" window), plus a start-of-delivery date. Read-only through this API. Uses a larger default page size (120) than most endpoints.

APIDescription
GET api/ArticleStatusList

Retrieves all article status schedule entries, optionally filtered via OData query options.

GET api/ArticleStatusList(id)

Retrieves the article status schedule entry with the specified key.

Article Stock Location

Per-location stock quantities for an article, used when working with multiple stock locations instead of the article's central stock (article.physical_stock). See also (stock value) and (serial-tracked stock).

APIDescription
GET api/ArticleStockLocation

Retrieves all article stock locations, optionally filtered via OData query options.

GET api/ArticleStockLocation(id)

Retrieves the article stock location with the specified key.

Article Stock Location List

Stock value of an article at a given stock location (see for the stock quantity). Read-only through this API — note that, unlike , Put is also disabled here.

APIDescription
GET api/ArticleStockLocationList

Retrieves all article stock location values, optionally filtered via OData query options.

GET api/ArticleStockLocationList(id)

Retrieves the article stock location value with the specified key.

Article Stock Location Serial

Serial-tracked stock units of an article at a given stock location (see for non-serial stock quantities).

APIDescription
GET api/ArticleStockLocationSerial

Retrieves all article stock location serial entries, optionally filtered via OData query options.

GET api/ArticleStockLocationSerial(id)

Retrieves the article stock location serial entry with the specified key.

PUT api/ArticleStockLocationSerial(id)

Updates the article stock location serial entry with the specified key.

Article Translate

Per-language translations (name, short description) of an article. Read-only through this API.

APIDescription
GET api/ArticleTranslate

Retrieves all article translations, optionally filtered via OData query options.

Cars, if you wish to track car travel (see ). Post and Delete are disabled — cars are created/removed elsewhere; only Put and Save are live here.

APIDescription
POST api/Car/Save

Creates or updates a car.

GET api/Car

Retrieves all cars, optionally filtered via OData query options.

GET api/Car(id)

Retrieves the car with the specified key.

PUT api/Car(id)

Updates the car with the specified key.

Car Travel

[OBSOLETE]: Use "CarTravelV2Controller" instead. Car travel records (invoiceable driving time/distance, see "HourTypeController" for how these feed invoiceable timesheets). Put and Delete are disabled — use Save to update. See "CarTravelV2Controller" for a fully writable version of this endpoint that also adds a SaveMultiple batch endpoint.

APIDescription
POST api/CarTravel/Save

[OBSOLETE]: Creates or updates a car travel record.

GET api/CarTravel

[OBSOLETE]: Retrieves all car travel records, optionally filtered via OData query options.

GET api/CarTravel(id)

[OBSOLETE]: Retrieves the car travel record with the specified key.

POST api/CarTravel

[OBSOLETE]: Creates a new car travel record.

Car Travel V2

Car travel records, exposed through a separate CarTravelV2 OData feed from over the same underlying table. Unlike the V1 endpoint, Put and Delete are not disabled here — this version is fully writable, and also adds for batch saves.

APIDescription
POST api/CarTravelV2/SaveMultiple

Creates or updates multiple car travel records in a single batch request. This API is used by the Synchronization module to send multiple records in one request instead of sending each record individually, which: 1. Reduces the number of HTTP requests. 2. Improves performance and efficiency. The batch processing logic (deserialize, validation, transaction handling, saving, and logging) is handled by BatchSaveHelper. Each record will return its own ResponseResult indicating success or failure.

POST api/CarTravelV2/Save

Creates or updates a car travel record.

GET api/CarTravelV2

Retrieves all car travel records, optionally filtered via OData query options.

GET api/CarTravelV2(id)

Retrieves the car travel record with the specified key.

POST api/CarTravelV2

Creates a new car travel record.

PUT api/CarTravelV2(id)

Updates the car travel record with the specified key.

DELETE api/CarTravelV2(id)

Deletes the car travel record with the specified key.

Communication

Automated email communication rules (trigger, recipients, subject/body template, optional PDF attachment), filterable by job type or contract type. Read-only through this API.

APIDescription
GET api/Communication

Retrieves all communication rules, optionally filtered via OData query options.

GET api/Communication(id)

Retrieves the communication rule with the specified key.

Company

[OBSOLETE]: Use "CompanyV2Controller" instead. Companies (customers/accounts). Change tracking (for sync) also considers the linked company_invoice and db_address tables, so an address-only change is enough to mark a company as modified. See also "CompanyV2Controller", which exposes the same "company" entity through a separate CompanyV2 OData feed whose change tracking does not include db_address, and which does not expose .

APIDescription
GET api/Company/GetBySalesTerritory

[OBSOLETE]: Retrieves the companies belonging to the sales territory given via an OData sales_territory_id eq <guid> filter.

GET api/Company/GetDataRelatedToCompany

[OBSOLETE]: Retrieves companies related to a given company, keyed off a company_id query string parameter parsed from the raw request URI.

POST api/Company/Save

[OBSOLETE]: Creates or updates a company.

POST api/Company/GetControllerDataStatus

[OBSOLETE]: For each entry in the posted list of (controller name, last-known modified_dateutc), checks whether that controller has newer data for the given company, so a sync client can decide which controllers to re-fetch. Controller names not recognized in the internal switch are reported as status_is_unknown and treated as available.

GET api/Company

[OBSOLETE]: Retrieves all companies, optionally filtered via OData query options.

GET api/Company(id)

[OBSOLETE]: Retrieves the company with the specified key.

POST api/Company

[OBSOLETE]: Creates a new company.

PUT api/Company(id)

[OBSOLETE]: Updates the company with the specified key.

Company Account

Link between a company and a user (e.g. account manager assignment), with a temp-link and logical-delete flag. Read-only through this API.

APIDescription
GET api/CompanyAccount

Retrieves all company accounts, optionally filtered via OData query options.

GET api/CompanyAccount(id)

Retrieves the company account with the specified key.

Company Calendar

A scheduled calendar entry for a company (a date range plus a description), of a given company calendar type — e.g. a planned closure period. Read-only through this API.

APIDescription
GET api/CompanyCalendar

Retrieves all company calendar entries, optionally filtered via OData query options.

GET api/CompanyCalendar(id)

Retrieves the company calendar entry with the specified key.

Company Calendar Type

Types of company calendar entries (e.g. closure, holiday), each flagged as unavailable or not and scoped per sales organization. Read-only through this API.

APIDescription
GET api/CompanyCalendarType

Retrieves all company calendar types, optionally filtered via OData query options.

GET api/CompanyCalendarType(id)

Retrieves the company calendar type with the specified key.

Company Contact

Link between a company and a contact (the people associated with a company). Fully writable through this API, except Put.

APIDescription
POST api/CompanyContact/Save

Creates or updates a company contact link.

GET api/CompanyContact

Retrieves all company contacts, optionally filtered via OData query options.

GET api/CompanyContact(id)

Retrieves the company contact with the specified key.

POST api/CompanyContact

Creates a new company contact link.

DELETE api/CompanyContact(id)

Deletes the company contact link with the specified key.

Company Discount Family

Discount families: a named flat discount percentage, scoped per sales organization, that can be assigned to companies (see for contract-level discounts). Read-only through this API.

APIDescription
GET api/CompanyDiscountFamily

Retrieves all company discount families, optionally filtered via OData query options.

GET api/CompanyDiscountFamily(id)

Retrieves the company discount family with the specified key.

Company Files

Files/attachments (with metadata such as name, mime type, and dimensions) linked to a company. Fully writable through this API.

APIDescription
GET api/CompanyFiles/GetFileContent/{id}?maxHeight={maxHeight}&maxWidth={maxWidth}

Retrieves the binary content of a company file, optionally resized if it's an image.

POST api/CompanyFiles/Save

Creates or updates a company file.

GET api/CompanyFiles

Retrieves all company files (metadata only; use for the binary content), optionally filtered via OData query options.

GET api/CompanyFiles(id)

Retrieves the company file with the specified key.

POST api/CompanyFiles

Creates a new company file.

PUT api/CompanyFiles(id)

Updates the company file with the specified key.

DELETE api/CompanyFiles(id)

Deletes the company file with the specified key.

Company Sales Status

Sales statuses that can be assigned to a company (e.g. prospect, active customer), with a name, description, and display color. Read-only through this API.

APIDescription
GET api/CompanySalesStatus

Retrieves all company sales statuses, optionally filtered via OData query options.

GET api/CompanySalesStatus(id)

Retrieves the company sales status with the specified key.

Company Sales Territory List

Links a company to an additional sales territory (a company's main territory is company.sales_territory_id; this lets a company also be visible in other territories). Read-only through this API.

APIDescription
GET api/CompanySalesTerritoryList

Retrieves all company/sales-territory links, optionally filtered via OData query options.

GET api/CompanySalesTerritoryList(id)

Retrieves the company/sales-territory link with the specified key.

Company Type

Company types (e.g. customer, supplier, partner), each optionally scoped to one sales organization or shared across all. Read-only through this API.

APIDescription
GET api/CompanyType

Retrieves all company types, optionally filtered via OData query options.

GET api/CompanyType(id)

Retrieves the company type with the specified key.

Company V2

Companies (customers/accounts), exposed through a separate CompanyV2 OData feed from the same underlying company table as . Differences from : change tracking (for sync) here considers only the company and company_invoice tables, not db_address, so an address-only change does not mark a company as modified; and this controller does not expose an equivalent of .

APIDescription
POST api/CompanyV2/Save

Creates or updates a company.

POST api/CompanyV2/GetControllerDataStatus

For each entry in the posted list of (controller name, last-known modified_dateutc), checks whether that controller has newer data for the given company, so a sync client can decide which controllers to re-fetch. Controller names not recognized in the internal switch are reported as status_is_unknown and treated as available.

GET api/CompanyV2

Retrieves all companies, optionally filtered via OData query options.

GET api/CompanyV2(id)

Retrieves the company with the specified key.

POST api/CompanyV2

Creates a new company.

PUT api/CompanyV2(id)

Updates the company with the specified key.

Company Vat

VAT/tax rates per country, with a validity date range, a default flag, and an optional legal stipulation note. Read-only through this API.

APIDescription
GET api/CompanyVat

Retrieves all VAT rates, optionally filtered via OData query options.

GET api/CompanyVat(id)

Retrieves the VAT rate with the specified key.

Contact

Contacts (people), which can be linked to one or more companies via . Fully writable through this API, except Delete.

APIDescription
POST api/Contact/Save

Creates or updates a contact.

GET api/Contact

Retrieves all contacts, optionally filtered via OData query options.

GET api/Contact(id)

Retrieves the contact with the specified key.

POST api/Contact

Creates a new contact.

PUT api/Contact(id)

Updates the contact with the specified key.

Contract

Service contracts: links a company to a contract type/status over a date range, with a linked fee list, an article price label, and discount/free-hours terms for preventive jobs. Read-only through this API.

APIDescription
GET api/Contract

Retrieves all contracts, optionally filtered via OData query options.

GET api/Contract(id)

Retrieves the contract with the specified key.

Contract Discount

A date-ranged discount percentage applied to a contract as a whole (see for per-article discounts and for per-feelist-price discounts). Read-only through this API.

APIDescription
GET api/ContractDiscount

Retrieves all contract discounts, optionally filtered via OData query options.

GET api/ContractDiscount(id)

Retrieves the contract discount with the specified key.

Contract Discount Article

A per-article discount rule on a contract: a discount percentage that applies to a specific article for a given time span. Read-only through this API.

APIDescription
GET api/ContractDiscountArticle

Retrieves all contract discount article rules, optionally filtered via OData query options.

GET api/ContractDiscountArticle(id)

Retrieves the contract discount article rule with the specified key.

Contract Discount Feelist Price

A date-ranged discount percentage applied to a specific fee list price line of a contract, with an optional warranty-exclusion flag. Read-only through this API.

APIDescription
GET api/ContractDiscountFeelistPrice

Retrieves all contract discount fee list price rules, optionally filtered via OData query options.

GET api/ContractDiscountFeelistPrice(id)

Retrieves the contract discount fee list price rule with the specified key.

Contract Type

Contract types, scoped per sales organization for sync filtering. Read-only through this API.

APIDescription
GET api/ContractType

Retrieves all contract types, optionally filtered via OData query options.

GET api/ContractType(id)

Retrieves the contract type with the specified key.

Country

Countries (ISO 3166 2-letter code, name, default language, and per-country culture/display settings). Read-only through this API.

APIDescription
GET api/Country

Retrieves all countries, optionally filtered via OData query options.

GET api/Country(id)

Retrieves the country with the specified key.

Db Address Company

A company's address (street, zip, city, geocoordinates, country, address type). Addresses cannot be hard-deleted — use the archived flag instead. Fully writable through this API except Delete.

APIDescription
POST api/DbAddressCompany/Save

Creates or updates a company address.

GET api/DbAddressCompany

Retrieves all company addresses, optionally filtered via OData query options.

GET api/DbAddressCompany(id)

Retrieves the company address with the specified key.

POST api/DbAddressCompany

Creates a new company address.

PUT api/DbAddressCompany(id)

Updates the company address with the specified key.

Db Address Sales Organization

A sales organization's address (street, zip, city, geocoordinates, country). Read-only through this API.

APIDescription
GET api/DbAddressSalesOrganization

Retrieves all sales organization addresses, optionally filtered via OData query options.

GET api/DbAddressSalesOrganization(id)

Retrieves the sales organization address with the specified key.

Db Address Type

Address types (e.g. company/billing, delivery, working address), flagged as company/delivery/default/working. Read-only through this API.

APIDescription
GET api/DbAddressType

Retrieves all address types, optionally filtered via OData query options.

GET api/DbAddressType(id)

Retrieves the address type with the specified key.

Db Address User Unavailability

The address associated with a user unavailability period (street, zip, city, geocoordinates, country). Addresses cannot be hard-deleted — use the archived flag instead.

APIDescription
POST api/DbAddressUserUnavailability/Save

Disabled. User unavailability addresses cannot be saved through this endpoint; use Put instead.

GET api/DbAddressUserUnavailability

Retrieves all user unavailability addresses, optionally filtered via OData query options.

GET api/DbAddressUserUnavailability(id)

Retrieves the user unavailability address with the specified key.

POST api/DbAddressUserUnavailability

Disabled. User unavailability addresses cannot be created through this endpoint.

PUT api/DbAddressUserUnavailability(id)

Updates the user unavailability address with the specified key.

Db File

[OBSOLETE]: Use "DbFileV2Controller" instead. Files/attachments linked to a broad set of entities (project, jobs, task, article, pdf template, work instruction details, ...) identified by "db_table_id", "id_in_table". For entity-scoped file endpoints see "JobFilesController", "CompanyFilesController", and "TaskFilesController"; see also "DbFileV2Controller", a separate feed over the same table for a narrower set of linked entities. Fully writable through this API.

APIDescription
GET api/DbFile/GetFileContent/{id}?maxHeight={maxHeight}&maxWidth={maxWidth}

[OBSOLETE]: Retrieves the binary content of a file, optionally resized if it's an image.

POST api/DbFile/Save

[OBSOLETE]: Creates or updates a file.

GET api/DbFile

[OBSOLETE]: Retrieves all files (metadata only; use for the binary content), optionally filtered via OData query options.

GET api/DbFile(id)

[OBSOLETE]: Retrieves the file with the specified key.

POST api/DbFile

[OBSOLETE]: Creates a new file.

PUT api/DbFile(id)

[OBSOLETE]: Updates the file with the specified key.

DELETE api/DbFile(id)

[OBSOLETE]: Deletes the file with the specified key.

Db File Tag

Tags that can be assigned to a file (e.g. "Broken", "Important") via . Read-only through this API.

APIDescription
GET api/DbFileTag

Retrieves all file tags, optionally filtered via OData query options.

GET api/DbFileTag(id)

Retrieves the file tag with the specified key.

Db File Tag List

Crosstable linking a file (db_file_id) to a file tag (db_file_tag_id). Create/save/delete are supported to assign or remove a tag; Put is disabled since a link either exists or doesn't — there is nothing to update in place.

APIDescription
POST api/DbFileTagList/Save

Creates or updates a file/tag link.

GET api/DbFileTagList

Retrieves all file/tag links, optionally filtered via OData query options.

GET api/DbFileTagList(id)

Retrieves the file/tag link with the specified key.

POST api/DbFileTagList

Creates a new file/tag link.

Db File V2

Files/attachments linked to other kinds of objects (project, and reports linked to jobs), exposed through a separate db_file OData feed from — narrower in the set of linked entities it covers, using its own per-entity queries rather than a single db_table_id switch. Fully writable through this API.

APIDescription
GET api/DbFileV2/GetFileContent/{id}?maxHeight={maxHeight}&maxWidth={maxWidth}

Retrieves the binary content of a file, optionally resized if it's an image.

POST api/DbFileV2/Save

Creates or updates a file.

GET api/DbFileV2

Retrieves all files (metadata only; use for the binary content), optionally filtered via OData query options.

GET api/DbFileV2(id)

Retrieves the file with the specified key.

POST api/DbFileV2

Creates a new file.

PUT api/DbFileV2(id)

Updates the file with the specified key.

DELETE api/DbFileV2(id)

Deletes the file with the specified key.

Db Functionbis

Function labels ("functionbis"), scoped per sales organization. Read-only through this API.

APIDescription
GET api/DbFunctionbis

Retrieves all functionbis, optionally filtered via OData query options.

GET api/DbFunctionbis(id)

Retrieves the functionbis with the specified key.

Db Info

Chapters (groupings) of custom info fields — see for the field definitions within a chapter, and the various DbInfoData* controllers (e.g. , ) for the values entered against a specific target entity type. Read-only through this API. See the "Info Fields" help guide for more information.

APIDescription
GET api/DbInfo

Retrieves all info chapters, optionally filtered via OData query options.

GET api/DbInfo(id)

Retrieves the info chapter with the specified key.

Db Info Category

Categories that group info field chapters (see for the chapter/category links), scoped per sales organization and optionally nested via parent_id. Read-only through this API.

APIDescription
GET api/DbInfoCategory

Retrieves all info categories, optionally filtered via OData query options.

GET api/DbInfoCategory(id)

Retrieves the info category with the specified key.

Db Info Category List

Crosstable linking an info field chapter (db_info_id, see ) to an info category. Read-only through this API.

APIDescription
GET api/DbInfoCategoryList

Retrieves all info chapter/category links, optionally filtered via OData query options.

GET api/DbInfoCategoryList(id)

Retrieves the info chapter/category link with the specified key.

Db Info Data Article

Custom info field values () entered against an article (target_id = article id). Fully writable through this API except Delete. Uses a larger default page size (180) than most endpoints.

APIDescription
POST api/DbInfoDataArticle/Save

Creates or updates an article info field value.

GET api/DbInfoDataArticle

Retrieves all article info field values, optionally filtered via OData query options.

GET api/DbInfoDataArticle(id)

Retrieves the article info field value with the specified key.

POST api/DbInfoDataArticle

Creates a new article info field value.

PUT api/DbInfoDataArticle(id)

Updates the article info field value with the specified key.

Db Info Data Company

Custom info field values () entered against a company (target_id = company id). Fully writable through this API except Delete. Uses a larger default page size (180) than most endpoints.

APIDescription
POST api/DbInfoDataCompany/Save

Creates or updates a company info field value.

GET api/DbInfoDataCompany

Retrieves all company info field values, optionally filtered via OData query options.

GET api/DbInfoDataCompany(id)

Retrieves the company info field value with the specified key.

POST api/DbInfoDataCompany

Creates a new company info field value.

PUT api/DbInfoDataCompany(id)

Updates the company info field value with the specified key.

Db Info Data Db Report

Custom info field values () entered against a db_report (form) (target_id = db_report id). Fully writable through this API, including Delete (unlike the other DbInfoData* controllers, which forbid Delete). Uses a larger default page size (180) than most endpoints.

APIDescription
POST api/DbInfoDataDbReport/Save

Creates or updates a db_report info field value.

POST api/DbInfoDataDbReport/SaveMultiple

Creates or updates multiple db_report info field values in one call.

GET api/DbInfoDataDbReport

Retrieves all db_report info field values, optionally filtered via OData query options.

GET api/DbInfoDataDbReport(id)

Retrieves the db_report info field value with the specified key.

POST api/DbInfoDataDbReport

Creates a new db_report info field value.

PUT api/DbInfoDataDbReport(id)

Updates the db_report info field value with the specified key.

DELETE api/DbInfoDataDbReport(id)

Deletes the db_report info field value with the specified key.

Db Info Data Jobs

Custom info field values () entered against a work order (target_id = jobs id). Fully writable through this API except Delete. Uses a larger default page size (180) than most endpoints.

APIDescription
POST api/DbInfoDataJobs/Save

Creates or updates a work order info field value.

GET api/DbInfoDataJobs

Retrieves all work order info field values, optionally filtered via OData query options.

GET api/DbInfoDataJobs(id)

Retrieves the work order info field value with the specified key.

POST api/DbInfoDataJobs

Creates a new work order info field value.

PUT api/DbInfoDataJobs(id)

Updates the work order info field value with the specified key.

Db Info Data Project

Custom info field values () entered against a project (target_id = project id). Fully writable through this API except Delete. Uses a larger default page size (180) than most endpoints.

APIDescription
POST api/DbInfoDataProject/Save

Creates or updates a project info field value.

GET api/DbInfoDataProject

Retrieves all project info field values, optionally filtered via OData query options.

GET api/DbInfoDataProject(id)

Retrieves the project info field value with the specified key.

POST api/DbInfoDataProject

Creates a new project info field value.

PUT api/DbInfoDataProject(id)

Updates the project info field value with the specified key.

Db Info Data Task

Custom info field values () entered against a task (target_id = task id). Fully writable through this API except Delete. Uses a larger default page size (180) than most endpoints.

APIDescription
POST api/DbInfoDataTask/Save

Creates or updates a task info field value.

GET api/DbInfoDataTask

Retrieves all task info field values, optionally filtered via OData query options.

GET api/DbInfoDataTask(id)

Retrieves the task info field value with the specified key.

POST api/DbInfoDataTask

Creates a new task info field value.

PUT api/DbInfoDataTask(id)

Updates the task info field value with the specified key.

Db Info Data User

Custom info field values () entered against a user (target_id = user id). Fully writable through this API except Delete. Uses a larger default page size (180) than most endpoints.

APIDescription
POST api/DbInfoDataUser/Save

Creates or updates a user info field value.

GET api/DbInfoDataUser

Retrieves all user info field values, optionally filtered via OData query options.

GET api/DbInfoDataUser(id)

Retrieves the user info field value with the specified key.

POST api/DbInfoDataUser

Creates a new user info field value.

PUT api/DbInfoDataUser(id)

Updates the user info field value with the specified key.

Db Info Field

Definitions of the custom info fields within a chapter — input type, label, default value, mandatory/readonly/visible-on-app flags. See for the dropdown/radio/combo options of a field, and the DbInfoData* controllers for the values entered against a target entity. Read-only through this API. See the "Info Fields" help guide for more information.

APIDescription
GET api/DbInfoField

Retrieves all info field definitions, optionally filtered via OData query options.

GET api/DbInfoField(id)

Retrieves the info field definition with the specified key.

Db Info Field Property

Selectable options (code/value/sequence) for a info field whose input type is a ComboBox, SelectBox, or RadioButton. Read-only through this API. See the "Info Fields" help guide for more information.

APIDescription
GET api/DbInfoFieldProperty

Retrieves all info field properties, optionally filtered via OData query options.

GET api/DbInfoFieldProperty(id)

Retrieves the info field property with the specified key.

Db Notes

Free-text notes attached to any entity, identified by db_table_id/id_in_table (and optionally a separate source_db_table_id/source_id_in_table for notes copied from another record). Fully writable through this API.

APIDescription
POST api/DbNotes/Save

Creates or updates a note.

POST api/DbNotes/SaveMultiple

Creates or updates multiple notes in one call.

GET api/DbNotes

Retrieves all notes, optionally filtered via OData query options.

GET api/DbNotes(id)

Retrieves the note with the specified key.

POST api/DbNotes

Creates a new note.

PUT api/DbNotes(id)

Updates the note with the specified key.

DELETE api/DbNotes(id)

Deletes the note with the specified key.

Db Payment Methods

Payment methods (a code, name, description, activated/default flags). Read-only through this API.

APIDescription
GET api/DbPaymentMethods

Retrieves all payment methods, optionally filtered via OData query options.

GET api/DbPaymentMethods(id)

Retrieves the payment method with the specified key.

Db Report

Reports (based on the InfoField system, see ) used for the work order report and visit report — a header record whose actual field values are held in . Fully writable through this API. See the "Db Report" help guide for more information.

APIDescription
POST api/DbReport/Save

Creates or updates a db report.

GET api/DbReport

Retrieves all db reports, optionally filtered via OData query options.

GET api/DbReport(id)

Retrieves the db report with the specified key.

POST api/DbReport

Creates a new db report.

PUT api/DbReport(id)

Updates the db report with the specified key.

DELETE api/DbReport(id)

Deletes the db report with the specified key.

Db Report Type

Types of db reports (e.g. work order report, visit report). Read-only through this API.

APIDescription
GET api/DbReportType

Retrieves all db report types, optionally filtered via OData query options.

GET api/DbReportType(id)

Retrieves the db report type with the specified key.

Db Signature

A signature (binary image, signed date, signature type) captured against any entity, identified by db_table_id/id_in_table. Fully writable through this API.

APIDescription
POST api/DbSignature/Save

Creates or updates a signature.

GET api/DbSignature

Retrieves all signatures, optionally filtered via OData query options.

GET api/DbSignature(id)

Retrieves the signature with the specified key.

POST api/DbSignature

Creates a new signature.

PUT api/DbSignature(id)

Updates the signature with the specified key.

DELETE api/DbSignature(id)

Deletes the signature with the specified key.

Db Status List

A generic workflow transition (from_status_id → to_status_id) for a named master table (job, task, order, etc., via table_name), with an optional action label and read-only flag. Similar in purpose to , but table-agnostic rather than job-specific. Read-only through this API.

APIDescription
GET api/DbStatusList

Retrieves all status transitions, optionally filtered via OData query options.

GET api/DbStatusList(id)

Retrieves the status transition with the specified key.

Db Title

Personal titles (e.g. Mr, Mrs, Dr), localized per language. Read-only through this API.

APIDescription
GET api/DbTitle

Retrieves all titles, optionally filtered via OData query options.

GET api/DbTitle(id)

Retrieves the title with the specified key.

Db Translate

Generic per-language translations of a single column value on any table/row (identified by db_table_id/db_column_id/id_in_table and db_language_id). Read-only through this API. Uses a larger default page size (120) than most endpoints.

APIDescription
GET api/DbTranslate

Retrieves all translations, optionally filtered via OData query options.

GET api/DbTranslate(id)

Retrieves the translation with the specified key.

Db Unit Of Measure

Units of measure (name, code, measure type, decimal/integer flag), each optionally enabled/disabled. Read-only through this API.

APIDescription
GET api/DbUnitOfMeasure

Retrieves all units of measure, optionally filtered via OData query options.

GET api/DbUnitOfMeasure(id)

Retrieves the unit of measure with the specified key.

Deleted Items

Tombstones (sys_deleted_items / db_modify) used by clients to learn which records were removed since their last sync. Read-only and list-only: single-item Get, Post, Put, Save and Delete are all disabled.

APIDescription
GET api/DeletedItems

Retrieves deleted-item tombstones, optionally filtered via OData query options (typically by modified_dateutc for incremental sync). Server-driven paging defaults to 200 items per page.

Device

Device sessions (device table) tracking which physical devices are registered/logged in. Both Get overloads, Post, Put and Delete are disabled — devices are registered via and archived via .

APIDescription
POST api/Device/SaveDeviceInfo

Creates or updates the device session for the current physical device: sets identifying info (device id/name, user, app version, db version) and first-synchronization metrics.

POST api/Device/UpdateArchivedDevice

Sets the archived status of a device, looked up by id or device_id.

POST api/Device/GetArchivedStatus

Retrieves the archived status of a device, looked up by id or device_id.

POST api/Device/Save

No documentation available.

Email Notification

Email notifications queued by the client for the backend to send out. Create-only: both Get overloads, Put and Delete are disabled — only Post/Save (create) are live.

APIDescription
POST api/EmailNotification/Save

Queues (creates) an email notification to be sent.

POST api/EmailNotification

Queues a new email notification to be sent.

Equipment Brand

Equipment brands (manufacturers). Read-only through this API.

APIDescription
GET api/EquipmentBrand

Retrieves all equipment brands, optionally filtered via OData query options.

GET api/EquipmentBrand(id)

Retrieves the equipment brand with the specified key.

Equipment Family

Equipment families (categories of equipment, see which references this to pick applicable work instructions). Read-only through this API.

APIDescription
GET api/EquipmentFamily

Retrieves all equipment families, optionally filtered via OData query options.

GET api/EquipmentFamily(id)

Retrieves the equipment family with the specified key.

Equipment Family Skill List

Links an equipment family to a required skill. Read-only through this API.

APIDescription
GET api/EquipmentFamilySkillList

Retrieves all equipment family/skill links, optionally filtered via OData query options.

GET api/EquipmentFamilySkillList(id)

Retrieves the equipment family/skill link with the specified key.

Equipment Model

Equipment models, of a given brand. Read-only through this API.

APIDescription
GET api/EquipmentModel

Retrieves all equipment models, optionally filtered via OData query options.

GET api/EquipmentModel(id)

Retrieves the equipment model with the specified key.

Error Log

Client-side error reports (error_log / db_log), created by the mobile/desktop apps when they hit an unhandled error. Create-only: both Get overloads, Put, Save and Delete are disabled.

APIDescription
POST api/ErrorLog

Records a new client-side error report.

Fee List

Fee lists (services): named groupings used to configure the price of invoiceable timesheets (see for the actual price matrix). Read-only through this API.

APIDescription
GET api/FeeList

Retrieves all fee lists, optionally filtered via OData query options.

GET api/FeeList(id)

Retrieves the fee list with the specified key.

Fee List Price

The price matrix (rules) for invoiceable timesheets within a fee list. Read-only through this API.

APIDescription
GET api/FeeListPrice

Retrieves all fee list prices, optionally filtered via OData query options.

GET api/FeeListPrice(id)

Retrieves the fee list price with the specified key.

Gps Log

GPS location pings (gps_log) reported by the mobile app. Create-only: both Get overloads, Put, Save and Delete are disabled — records are sent via Post (single) or (batch).

APIDescription
POST api/GpsLog/AddMultiple

Records a batch of GPS pings in a single request.

POST api/GpsLog

Records a single GPS ping.

Holiday

Public holidays (a name and date). Read-only through this API.

APIDescription
GET api/Holiday

Retrieves all holidays, optionally filtered via OData query options.

GET api/Holiday(id)

Retrieves the holiday with the specified key.

Hour Type

Hour types, used by / to generate invoiceable timesheets (). Read-only through this API.

APIDescription
GET api/HourType

Retrieves all hour types, optionally filtered via OData query options.

GET api/HourType(id)

Retrieves the hour type with the specified key.

Job Approval

A daily or full work-order approval (customer/technician sign-off), with its detail lines held in .

APIDescription
POST api/JobApproval/Save

Creates or updates a job approval.

POST api/JobApproval/SaveJobApprovalJobApprovalList

Saves a job approval together with its detail lines in one call: the request body is a JSON array whose first element is the job_approval and whose remaining elements are its job_approval_list entries.

GET api/JobApproval

Retrieves all job approvals, optionally filtered via OData query options.

GET api/JobApproval(id)

Retrieves the job approval with the specified key.

POST api/JobApproval

Creates a new job approval.

PUT api/JobApproval(id)

Updates the job approval with the specified key.

DELETE api/JobApproval(id)

Deletes the job approval with the specified key.

Job Approval List

Detail lines of a job approval. Listing the whole table is disabled; fetch a specific line by key, or via the parent job_approval (see for combined saves).

APIDescription
POST api/JobApprovalList/Save

Creates or updates a job approval list entry.

GET api/JobApprovalList(id)

Retrieves the job approval list entry with the specified key.

POST api/JobApprovalList

Creates a new job approval list entry.

PUT api/JobApprovalList(id)

Updates the job approval list entry with the specified key.

Job Contact

A snapshot of contact details (name, phone, mobile, email) captured on a job, independent of the live contact record it may have been copied from. Read-only through this API.

APIDescription
GET api/JobContact

Retrieves all job contacts, optionally filtered via OData query options.

GET api/JobContact(id)

Retrieves the job contact with the specified key.

Job Dispatch Log

A dispatch (or workshop assignment) of a job to a user: when it was created, whether/when it was accepted or rejected (and why), and the list of assigned users.

APIDescription
POST api/JobDispatchLog/Save

Creates or updates a job dispatch log.

GET api/JobDispatchLog/Accept?jobs_id={jobs_id}&user_id={user_id}&date_planned={date_planned}&estimated_time={estimated_time}

Obsolete. Accepts a dispatched job on behalf of a user. Superseded by , which also accepts a target job status.

GET api/JobDispatchLog/AcceptDispatch?jobs_id={jobs_id}&new_job_status_id={new_job_status_id}&user_id={user_id}&date_planned={date_planned}&estimated_time={estimated_time}

Accepts a dispatched job on behalf of a user and moves the job to the given status.

GET api/JobDispatchLog/AcceptWorkshop?jobs_id={jobs_id}&user_id={user_id}

Accepts a workshop-type dispatch of a job on behalf of a user (is_workshop dispatches, as opposed to field dispatches).

GET api/JobDispatchLog/AcceptTechnicalCompletion?jobs_id={jobs_id}&user_id={user_id}

Accepts a technical-completion dispatch of a job on behalf of a user.

GET api/JobDispatchLog

Retrieves all job dispatch logs, optionally filtered via OData query options.

GET api/JobDispatchLog(id)

Retrieves the job dispatch log with the specified key.

POST api/JobDispatchLog

Creates a new job dispatch log.

PUT api/JobDispatchLog(id)

Updates the job dispatch log with the specified key.

Job Estimated Quantity

Estimated parts (article + quantity) expected to be used to complete a work order, planned ahead of the actual usage recorded in . Read-only through this API.

APIDescription
GET api/JobEstimatedQuantity

Retrieves all job estimated quantities, optionally filtered via OData query options.

GET api/JobEstimatedQuantity(id)

Retrieves the job estimated quantity with the specified key.

Job Files

Files/attachments linked to a job. Fully writable through this API.

APIDescription
GET api/JobFiles/GetFileContent/{id}?maxHeight={maxHeight}&maxWidth={maxWidth}

Retrieves the binary content of a job file, optionally resized if it's an image.

POST api/JobFiles/Save

Creates or updates a job file.

GET api/JobFiles

Retrieves all job files (metadata only; use for the binary content), optionally filtered via OData query options.

GET api/JobFiles(id)

Retrieves the job file with the specified key.

POST api/JobFiles

Creates a new job file.

PUT api/JobFiles(id)

Updates the job file with the specified key.

DELETE api/JobFiles(id)

Deletes the job file with the specified key.

Job Measurement

A measurement session on a job: who collected it, when, whether it came from a device (e.g. a Testo probe, with device name/serial/firmware info) or was entered manually. Individual readings are held in . Fully writable through this API.

APIDescription
POST api/JobMeasurement/Save

Creates or updates a job measurement.

GET api/JobMeasurement

Retrieves all job measurements, optionally filtered via OData query options.

GET api/JobMeasurement(id)

Retrieves the job measurement with the specified key.

POST api/JobMeasurement

Creates a new job measurement.

PUT api/JobMeasurement(id)

Updates the job measurement with the specified key.

DELETE api/JobMeasurement(id)

Deletes the job measurement with the specified key.

Job Measurement Details

A single reading (code, name, unit, measured value) within a job measurement session. Fully writable through this API.

APIDescription
POST api/JobMeasurementDetails/Save

Creates or updates a job measurement detail.

GET api/JobMeasurementDetails

Retrieves all job measurement details, optionally filtered via OData query options.

GET api/JobMeasurementDetails(id)

Retrieves the job measurement detail with the specified key.

POST api/JobMeasurementDetails

Creates a new job measurement detail.

PUT api/JobMeasurementDetails(id)

Updates the job measurement detail with the specified key.

DELETE api/JobMeasurementDetails(id)

Deletes the job measurement detail with the specified key.

Job Non Part Usage

Invoiceable timesheets and car travels for a work order — non-part costs, as opposed to the parts usage tracked by . Fully writable through this API.

APIDescription
POST api/JobNonPartUsage/Save

Creates or updates a job non-part usage record.

POST api/JobNonPartUsage/SaveMultiple

Save multiple job_non_part_usage records. This endpoint accepts a JSON array of job_non_part_usage objects, validates each record, applies default values, and saves them using the repository. The operation is executed through BatchSaveHelper and processed within a transaction. Each record returns its own ResponseResult indicating success or failure.

GET api/JobNonPartUsage

Retrieves all job non-part usage records, optionally filtered via OData query options.

GET api/JobNonPartUsage(id)

Retrieves the job non-part usage record with the specified key.

POST api/JobNonPartUsage

Creates a new job non-part usage record.

PUT api/JobNonPartUsage(id)

Updates the job non-part usage record with the specified key.

DELETE api/JobNonPartUsage(id)

Deletes the job non-part usage record with the specified key.

Job Part Usage

Parts (articles/materials) actually used to complete a work order — the counterpart of the planned quantities in . Fully writable through this API.

APIDescription
POST api/JobPartUsage/Save

Creates or updates a job part usage record.

POST api/JobPartUsage/SaveMultiple

Save multiple job_part_usage records in a single batch request. This API is used by the Synchronization module to send multiple records in one request instead of sending each record individually, which: 1. Reduces the number of HTTP requests. 2. Improves performance and efficiency. The batch processing logic (deserialize, validation, transaction handling, saving, and logging) is handled by BatchSaveHelper. Each record will return its own ResponseResult indicating success or failure.

GET api/JobPartUsage

Retrieves all used parts, optionally filtered via OData query options.

GET api/JobPartUsage(id)

Retrieves the used part with the specified key.

POST api/JobPartUsage

Creates a new job part usage record.

PUT api/JobPartUsage(id)

Updates the used part with the specified key.

DELETE api/JobPartUsage(id)

Deletes the used part with the specified key.

Job Planning

A scheduled time slot (date range, user, travel time) for a job, and the resulting job status once the slot starts or the field technician accepts/rejects it (see ).

APIDescription
POST api/JobPlanning/Save

Creates or updates a job planning.

GET api/JobPlanning/FieldAccept?accept={accept}&job_planning_id={job_planning_id}

Records the field technician's accept/reject decision on a job planning (a response to the field_accept_date_max_timeout window).

GET api/JobPlanning

Retrieves all job plannings, optionally filtered via OData query options.

GET api/JobPlanning(id)

Retrieves the job planning with the specified key.

POST api/JobPlanning

Creates a new job planning.

PUT api/JobPlanning(id)

Updates the job planning with the specified key.

Job Priority

Priorities (e.g. High, Critical, Low) used to describe work orders. Read-only through this API.

APIDescription
GET api/JobPriority

Retrieves all job priorities, optionally filtered via OData query options.

GET api/JobPriority(id)

Retrieves the job priority with the specified key.

Work orders, the main object of the API. See for scheduling, for dispatch/acceptance, for status, and for a combined batch-save endpoint.

APIDescription
POST api/Jobs/Save

Creates or updates a work order.

POST api/Jobs/SaveJob

Save Job endpoint that supports **batch processing** of Job-related data.

GET api/Jobs/PlanAgainFromTask?task_id={task_id}&task_status_id={task_status_id}&job_status_id={job_status_id}

Creates a new work order re-planned from a task (used when a task needs a follow-up work order), moving the originating task to the given task status and the new work order to the given job status.

GET api/Jobs/PlanAgainWO?job_id={job_id}&job_status_id={job_status_id}

Creates a new follow-up work order re-planned from an existing work order, moving the new work order to the given job status.

POST api/Jobs/GetControllerDataStatus

For each entry in the posted list of (controller name, last-known modified_dateutc), checks whether that controller has newer data for the given job, so a sync client can decide which controllers to re-fetch. Controller names not recognized in the internal switch are reported as status_is_unknown and treated as available. Bounded by the request timeout: any entries not checked before the internal cancellation deadline are returned with data_available = false.

GET api/Jobs

Retrieves all work orders, optionally filtered via OData query options.

GET api/Jobs(id)

Retrieves the work order with the specified key.

POST api/Jobs

Creates a new work order.

PUT api/Jobs(id)

Updates the work order with the specified key.

Job Status

Work order statuses (e.g. Planned, In Progress, Completed), with a display sequence/color and an optional link to a system status. Read-only through this API. See for the allowed status-to-status transitions.

APIDescription
GET api/JobStatus

Retrieves all job statuses, optionally filtered via OData query options.

GET api/JobStatus(id)

Retrieves the job status with the specified key.

Job Status List

Allowed workflow transitions between two job statuses (from → to). Read-only through this API.

APIDescription
GET api/JobStatusList

Retrieves all job status transitions, optionally filtered via OData query options.

GET api/JobStatusList(id)

Retrieves the job status transition with the specified key.

Job Type

Work order types (e.g. Maintenance, Intervention, Inspection). Read-only through this API. See for the skills required per type.

APIDescription
GET api/JobType

Retrieves all work order types, optionally filtered via OData query options.

GET api/JobType(id)

Retrieves the work order type with the specified key.

Job Type Skill List

Links a job type to a required skill. Read-only through this API.

APIDescription
GET api/JobTypeSkillList

Retrieves all job type/skill links, optionally filtered via OData query options.

GET api/JobTypeSkillList(id)

Retrieves the job type/skill link with the specified key.

Job Work Instruction

Assigns a work_instruction (for a given equipment family) to a job, with an estimated work time and sequence. Detail progress is tracked in and .

APIDescription
POST api/JobWorkInstruction/Save

Creates or updates a job work instruction.

GET api/JobWorkInstruction

Retrieves all job work instructions, optionally filtered via OData query options.

GET api/JobWorkInstruction(id)

Retrieves the job work instruction with the specified key.

POST api/JobWorkInstruction

Creates a new job work instruction.

DELETE api/JobWorkInstruction(id)

Deletes the job work instruction with the specified key.

Job Work Instruction Details

Detail steps (description, sequence, action type, grouping) that make up a job work instruction. Fully writable through this API.

APIDescription
POST api/JobWorkInstructionDetails/AddUpdateMultiple

Obsolete. Creates/updates multiple job work instruction details in one call. Superseded by .

POST api/JobWorkInstructionDetails/SaveMultiple

Creates or updates multiple job work instruction details in one call.

POST api/JobWorkInstructionDetails/Save

No documentation available.

GET api/JobWorkInstructionDetails

Retrieves all job work instruction details, optionally filtered via OData query options.

GET api/JobWorkInstructionDetails(id)

Retrieves the job work instruction detail with the specified key.

POST api/JobWorkInstructionDetails

Creates a new job work instruction detail.

PUT api/JobWorkInstructionDetails(id)

Updates the job work instruction detail with the specified key.

DELETE api/JobWorkInstructionDetails(id)

Deletes the job work instruction detail with the specified key.

Job Work Instruction List

A single checklist line (result: Ok/NotOk/Replaced/NotApplicable, remark, advice, sequence) executed against a job work instruction detail. Fully writable through this API.

APIDescription
POST api/JobWorkInstructionList/AddMultiple

Obsolete. Creates multiple job work instruction checklist lines in one call. Superseded by .

POST api/JobWorkInstructionList/SaveMultiple

Creates or updates multiple job work instruction checklist lines in one call.

POST api/JobWorkInstructionList/Save

No documentation available.

GET api/JobWorkInstructionList

Retrieves all job work instruction checklist lines, optionally filtered via OData query options.

GET api/JobWorkInstructionList(id)

Retrieves the job work instruction checklist line with the specified key.

POST api/JobWorkInstructionList

Creates a new job work instruction checklist line.

PUT api/JobWorkInstructionList(id)

Updates the job work instruction checklist line with the specified key.

DELETE api/JobWorkInstructionList(id)

Deletes the job work instruction checklist line with the specified key.

Language

Languages (db_language), a reference table used by company, contact and user records, keyed by ISO 639-1 code. Read-only: Post, Put, Save and Delete are all disabled.

APIDescription
GET api/Language

Retrieves all languages, optionally filtered via OData query options.

GET api/Language(id)

Retrieves the language with the specified key.

Licence Group

Licence groups, defining a set of enabled rights (see for the per-right settings, and for what's actually enabled for the current user). Read-only through this API.

APIDescription
GET api/LicenceGroup

Retrieves all licence groups, optionally filtered via OData query options.

GET api/LicenceGroup(id)

Retrieves the licence group with the specified key.

Licence Group User Right List

Which rights are enabled for a licence group — the configuration that determines what reports as enabled for a given user. Read-only through this API.

APIDescription
GET api/LicenceGroupUserRightList

Retrieves all licence group rights, optionally filtered via OData query options.

GET api/LicenceGroupUserRightList(id)

Retrieves the licence group right with the specified key.

Marketing Segment

Marketing segments (marketing_segment), a reference table used to categorize companies/contacts. Read-only: Post, Put, Save and Delete are all disabled.

APIDescription
GET api/MarketingSegment

Retrieves all marketing segments, optionally filtered via OData query options.

GET api/MarketingSegment(id)

Retrieves the marketing segment with the specified key.

Measurement Type

Measurement types (code, name, unit code/name) available for a job measurement detail. Read-only through this API.

APIDescription
GET api/MeasurementType

Retrieves all measurement types, optionally filtered via OData query options.

GET api/MeasurementType(id)

Retrieves the measurement type with the specified key.

Meeting

A meeting (subject, description, start/end date, linked online meeting and company) of a given meeting type. Fully writable through this API except Delete.

APIDescription
POST api/Meeting/Save

No documentation available.

GET api/Meeting

Retrieves all meetings, optionally filtered via OData query options.

GET api/Meeting(id)

Retrieves the meeting with the specified key.

POST api/Meeting

Creates a new meeting.

PUT api/Meeting(id)

Updates the meeting with the specified key.

Meeting Type

Types of meetings. Read-only through this API, and only listable — fetching a single entry by key is disabled.

APIDescription
GET api/MeetingType

Retrieves all meeting types, optionally filtered via OData query options.

Pdf Template

PDF templates (pdf_template) used to render job/task/project documents. Read-only: Post, Put, Save and Delete are all disabled.

APIDescription
GET api/PdfTemplate

Retrieves all PDF templates, optionally filtered via OData query options.

GET api/PdfTemplate(id)

Retrieves the PDF template with the specified key.

Project

Projects (equipment installations). Fully writable through this API except Delete; see for the check normally done before closing one.

APIDescription
POST api/Project/Save

Creates or updates a project.

GET api/Project/HasActiveJobs/{id}

Checks whether a project has active (unfinished) jobs, used to warn before closing a project (FSA-2796).

GET api/Project

Retrieves all projects, optionally filtered via OData query options.

GET api/Project(id)

Retrieves the project with the specified key.

POST api/Project

Creates a new project.

PUT api/Project(id)

Updates the project with the specified key.

Project Bill Of Material

Bill of material (BOM) lines of a project (article + quantity). Read-only through this API.

APIDescription
GET api/ProjectBillOfMaterial

Retrieves all BOM lines, optionally filtered via OData query options.

GET api/ProjectBillOfMaterial(id)

Retrieves the BOM line with the specified key.

Project Contact

Links a contact to a project. Fully writable through this API.

APIDescription
POST api/ProjectContact/Save

Creates or updates a project contact.

GET api/ProjectContact

Retrieves all project contacts, optionally filtered via OData query options.

GET api/ProjectContact(id)

Retrieves the project contact with the specified key.

POST api/ProjectContact

Creates a new project contact.

PUT api/ProjectContact(id)

Updates the project contact with the specified key.

DELETE api/ProjectContact(id)

Deletes the project contact with the specified key.

Project Status

Project statuses (e.g. Set up, In production, Out of order). Read-only through this API.

APIDescription
GET api/ProjectStatus

Retrieves all project statuses, optionally filtered via OData query options.

GET api/ProjectStatus(id)

Retrieves the project status with the specified key.

Purchase Order

Purchase order header for articles ordered against work orders (see for the order lines). Read-only through this API.

APIDescription
GET api/PurchaseOrder

Retrieves all purchase orders, optionally filtered via OData query options.

GET api/PurchaseOrder(id)

Retrieves the purchase order with the specified key.

Purchase Order Details

Order lines of a purchase order. Read-only through this API.

APIDescription
GET api/PurchaseOrderDetails

Retrieves all purchase order lines, optionally filtered via OData query options.

GET api/PurchaseOrderDetails(id)

Retrieves the purchase order line with the specified key.

Recurrence

Recurrence rules (e.g. for repeating jobs/tasks). Fully writable through this API.

APIDescription
POST api/Recurrence/Save

Creates or updates a recurrence rule.

GET api/Recurrence

Retrieves all recurrence rules, optionally filtered via OData query options.

GET api/Recurrence(id)

Retrieves the recurrence rule with the specified key.

Sales Organization

Sales/service organizations — the top-level tenant unit that most other reference data (company types, info fields, article groups, etc.) is scoped to via a sales_organization_id. Read-only through this API.

APIDescription
GET api/SalesOrganization

Retrieves all sales organizations, optionally filtered via OData query options.

GET api/SalesOrganization(id)

Retrieves the sales organization with the specified key.

Sales Territory

Sales territories, used to scope which companies/users a user can see (a company's main territory is company.sales_territory_id; see also and for additional territory links). Read-only through this API.

APIDescription
GET api/SalesTerritory

Retrieves all sales territories, optionally filtered via OData query options.

GET api/SalesTerritory(id)

Retrieves the sales territory with the specified key.

Service Model

A service model: attaches an SLA and job type to a contract, for a given service model type. Linked to projects via . Read-only through this API.

APIDescription
GET api/ServiceModel

Retrieves all service models, optionally filtered via OData query options.

GET api/ServiceModel(id)

Retrieves the service model with the specified key.

Service Model Project List

Links a service model to a project, with an estimated work time and archive tracking. Read-only through this API.

APIDescription
GET api/ServiceModelProjectList

Retrieves all service model/project links, optionally filtered via OData query options.

GET api/ServiceModelProjectList(id)

Retrieves the service model/project link with the specified key.

Service Model Sla

Service level agreements (SLA): contact/arrival/resolution time targets and coverage type (business hours, working days, or every day), assigned to a service model. Read-only through this API.

APIDescription
GET api/ServiceModelSla

Retrieves all SLAs, optionally filtered via OData query options.

GET api/ServiceModelSla(id)

Retrieves the SLA with the specified key.

Settings

Application settings (settings), key/value-style configuration entries. Fully writable except Delete, which is disabled. Server-driven paging defaults to 120 items per page.

APIDescription
POST api/Settings/GetSettingByCode

Retrieves the setting with the specified code.

POST api/Settings/Save

Creates or updates a setting.

GET api/Settings

Retrieves all settings, optionally filtered via OData query options.

GET api/Settings(id)

Retrieves the setting with the specified key.

POST api/Settings

Creates a new setting.

PUT api/Settings(id)

Updates the setting with the specified key.

Skills, which can be required to perform a work order (see , , ). Users can have 0 to N skills, via . Read-only through this API.

APIDescription
GET api/Skill

Retrieves all skills, optionally filtered via OData query options.

GET api/Skill(id)

Retrieves the skill with the specified key.

Stat Cockpit

Cockpit statistics (stat_cockpit) synced to offline for dashboard display. List-only: single-item Get, Post, Put, Save and Delete are all disabled. Supersedes the obsolete SystemController.GetAllModifiedStatCockpit action.

APIDescription
GET api/StatCockpit

Retrieves all stat_cockpit entries, optionally filtered via OData query options.

GET api/StatCockpit(id)

Disabled. Stat_cockpit entries are only exposed as a list, never fetched individually by key.

Sync Log

Detailed per-request sync log entries, submitted by clients to help diagnose synchronization issues. This endpoint is write-only: both Get overloads and Put/Delete are disabled — only Post/Save are live. See also , which accepts an aggregated end-of-sync summary and maps it into a row here.

APIDescription
POST api/SyncLog

Creates a new sync log entry.

Sync Logs

Accepts an aggregated end-of-sync-session summary from a client (average/max API response time, total processed records, timeouts, etc.) and stores it as a single sync log entry. This controller does not override the base CRUD actions (only is added).

APIDescription
POST api/SyncLogs/AddSyncLogs

Accepts an aggregated sync session summary (see ) and saves it as a row, marked as completed.

POST api/SyncLogs/Save

No documentation available.

GET api/SyncLogs

No documentation available.

GET api/SyncLogs(id)

No documentation available.

POST api/SyncLogs

No documentation available.

PUT api/SyncLogs(id)

No documentation available.

DELETE api/SyncLogs(id)

No documentation available.

Sys Debugdata

Diagnostic query bundles (sys_debugdata / sys_debugdata_query / sys_debugdata_result) that a device runs and reports back, used to help debug data issues on a specific installation. Supersedes the equivalent obsolete actions on .

APIDescription
GET api/SysDebugdata/GetSysDebugdataUncompleted?device_id={device_id}

Retrieves the debug-data bundles not yet completed for the given device.

GET api/SysDebugdata/GetSysDebugdataCompleted?device_id={device_id}

Retrieves the debug-data bundles already completed for the given device.

POST api/SysDebugdata/SetSysDebugDataCompleted

Marks a debug-data bundle as completed.

GET api/SysDebugdata/GetQueries?sys_debugdata_id={sys_debugdata_id}

Retrieves the diagnostic queries belonging to a debug-data bundle.

POST api/SysDebugdata/SetQueryCompleted

Marks a single diagnostic query as completed.

GET api/SysDebugdata/GetResults?sys_debugdata_query_id={sys_debugdata_query_id}&modified_dateutc={modified_dateutc}&top={top}

Retrieves the results collected for a diagnostic query, modified since the given date.

POST api/SysDebugdata/AddResult

Records a single result for a diagnostic query.

POST api/SysDebugdata/AddResultsMultiple

Records a batch of diagnostic query results in a single request.

System

Cross-cutting system endpoints: login/account/OTP flows, sync-status checks across all synced tables, and demo/user-position helpers. Several actions here are [Obsolete] and kept only for backward compatibility with older clients — new clients should use the dedicated controller named in each action's summary (e.g. , , ).

APIDescription
POST api/System/GetControllerDataStatus

Checks, for a batch of synced tables, whether new data is available since the client's last sync. Requests are processed concurrently (4 at a time) and the whole call is bounded by the request timeout so it can return partial results rather than fail outright; unrecognized controller names are reported as status_is_unknown and treated as "data available" to be safe.

GET api/System/GetUserPosition

Retrieves the user positions (last known locations) for all users in the caller's sales organization.

GET api/System/GetUserInfo?email={email}&password={password}

Retrieves user info for the given credentials. Runs before login, so no authorization is required.

POST api/System/ValidateUser

Checks whether the current user is allowed to use the application.

POST api/System/ValidateDB

Checks whether the current user's database/implementation has been archived. Kept as a thin wrapper over for backward compatibility: its bare boolean contract is unchanged, including the case where the OCC lookup is inconclusive (reported as "not archived", as before) or the domain is in maintenance. See FSA-6007. An inconclusive OCC lookup is written to the error log where that is still possible, so the bare boolean does not hide the problem from monitoring entirely. Best effort only: the log itself lives in the customer database and is reached through OCC, so an outcome caused by either of those being unreachable leaves no trace. See FSA-6011.

POST api/System/GetDomainStatus

Reports the archived/active status of the caller's OCC-linked domain, disambiguating outcomes that the legacy bare boolean of cannot: a genuinely archived domain, an email with no OCC link at all, and an OCC lookup that could not be completed. See FSA-6007.

POST api/System/UserInfoJson

Login endpoint: validates the given credentials (and, when supplied, the calling physical device) and returns the full user info payload used by the client to complete login. Runs before login, so no authorization is required. Errors are logged against the attempted user email.

POST api/System/UsersInfoJson

Login endpoint for the "log as" / multi-account flow: validates the given credentials and returns info for every user account matching them. Runs before login, so no authorization is required.

POST api/System/LogUserLogAs

Logs which user was selected as the target of a "log as" action, for audit purposes.

POST api/System/RequestDemo

Logs a demo request submitted from the marketing site, capturing the requester's IP and the calling app's version.

GET api/System/GetSysDebugData

Obsolete. Retrieves uncompleted debug-data bundles for the current device.

GET api/System/GetSysDebugDataCompleted?device_id={device_id}

Obsolete. Retrieves completed debug-data bundles for the given device.

GET api/System/GetSysDebugDataQuery?sys_debugdata_id={sys_debugdata_id}

Obsolete. Retrieves the diagnostic queries belonging to a debug-data bundle.

GET api/System/GetSysDebugDataResult?sysDebugDataQueryID={sysDebugDataQueryID}&modifiedDate={modifiedDate}&top={top}

Obsolete. Retrieves the results collected for a diagnostic query, modified since the given date.

POST api/System/SaveSysDebugResult

Obsolete. Records a single result for a diagnostic query.

POST api/System/SaveSysDebugData

Obsolete. Marks a debug-data bundle as completed.

POST api/System/UpdateSysDebugQueryCompleted

Obsolete. Marks a single diagnostic query as completed.

POST api/System/ActiveNewAccount

Activates a new account by setting its password, without requiring the superadmin password.

GET api/System/CheckEmailExists?email={email}

Pre-login check: verifies the email is known and linked to a non-archived implementation. Route: GET api/System/CheckEmailExists?email={email} No authorization required - this runs before the user logs in. Returns status code only: 200 (exists), 404 (not found / archived implementation), 500 (unexpected error).

POST api/System/SendOneTimePasswordForLogin

Sends a one-time password (OTP) to the given email, for use as an alternative login method.

POST api/System/ValidateOneTimePasswordForLogin

Validates a one-time password (OTP) previously sent for login.

GET api/System/GetAllModifiedStatCockpit?modifiedDate={modifiedDate}&top={top}

Obsolete. Retrieves stat_cockpit entries modified since the given date.

POST api/System/GetApplicationVersionInfo

Obsolete. Retrieves the application_version row matching the given version and platform.

POST api/System/GetLatestApplicationVersion

Obsolete. Retrieves the latest application_version row for the given platform.

POST api/System/AddUpdateApplicationVersion

Obsolete. Adds a new application_version row, or edits an existing one, depending on the method field.

POST api/System/CheckIfExistence

Checks whether a row with the given key exists in the specified table.

Tasks, used for Sales and Services. Fully writable through this API except Delete.

APIDescription
POST api/Task/Save

Creates or updates a task.

GET api/Task

Retrieves all tasks, optionally filtered via OData query options.

GET api/Task(id)

Retrieves the task with the specified key.

POST api/Task

Creates a new task.

PUT api/Task(id)

Updates the task with the specified key.

Task Activity

Task activities (the kind of activity performed on a task), used for Sales and Services. See for the actual log entries. Read-only through this API.

APIDescription
GET api/TaskActivity

Retrieves all task activities, optionally filtered via OData query options.

GET api/TaskActivity(id)

Retrieves the task activity with the specified key.

Task Activity Log

Log entries recording activity (of a given task activity type) performed on a task, used for Sales and Services. Fully writable through this API except Delete.

APIDescription
POST api/TaskActivityLog/Save

Creates or updates a task activity log entry.

GET api/TaskActivityLog

Retrieves all task activity log entries, optionally filtered via OData query options.

GET api/TaskActivityLog(id)

Retrieves the task activity log entry with the specified key.

POST api/TaskActivityLog

Creates a new task activity log entry.

PUT api/TaskActivityLog(id)

Updates the task activity log entry with the specified key.

Task Files

Files/attachments linked to a task. Fully writable through this API.

APIDescription
GET api/TaskFiles/GetFileContent/{id}?maxHeight={maxHeight}&maxWidth={maxWidth}

Retrieves the binary content of a task file, optionally resized if it's an image.

POST api/TaskFiles/Save

Creates or updates a task file.

GET api/TaskFiles

Retrieves all task files (metadata only; use for the binary content), optionally filtered via OData query options.

GET api/TaskFiles(id)

Retrieves the task file with the specified key.

POST api/TaskFiles

Creates a new task file.

PUT api/TaskFiles(id)

Updates the task file with the specified key.

DELETE api/TaskFiles(id)

Deletes the task file with the specified key.

Task Priority

Task priorities (e.g. Low, Medium, High, Urgent). Read-only through this API.

APIDescription
GET api/TaskPriority

Retrieves all task priorities, optionally filtered via OData query options.

GET api/TaskPriority(id)

Retrieves the task priority with the specified key.

Task Status

Task statuses (e.g. In Progress, Closed). Read-only through this API.

APIDescription
GET api/TaskStatus

Retrieves all task statuses, optionally filtered via OData query options.

GET api/TaskStatus(id)

Retrieves the task status with the specified key.

Task Type

Task types (e.g. Call, Prepare Document). Read-only through this API.

APIDescription
GET api/TaskType

Retrieves all task types, optionally filtered via OData query options.

GET api/TaskType(id)

Retrieves the task type with the specified key.

Single entry point for rewriting free text (e.g. technician job notes) without the client app calling any AI service directly. Has no backing table — all inherited CRUD verbs are disabled and is the only supported action. The rewrite itself is backed by Claude via (FSA-6025), using the prompt templates in (FSA-6026).

APIDescription
POST api/Text/Rewrite

Rewrites free text into a chosen tone/length. Technician identity comes from the authenticated request (user_id header handled by /), not from the request body.

Usage Tracking

Client feature-usage events (usage_tracking), reported by the mobile/desktop apps for analytics. Create-only: both Get overloads, Post, Put, Save and Delete are disabled — records are sent in bulk via .

APIDescription
POST api/UsageTracking/AddMultiple

Inserts a batch of usage-tracking events in a single request. The company domain is resolved from the request's Authorization header rather than the request body.

Users of the application. Users are provisioned elsewhere (not created through this API): Post, Save, and Delete are disabled, but Put allows updating an existing user's mutable fields.

APIDescription
GET api/User

Retrieves all users, optionally filtered via OData query options.

GET api/User(id)

Retrieves the user with the specified key.

PUT api/User(id)

Updates the user with the specified key.

User Group

User groups, used to organize users (e.g. for permission/right assignment via ). Read-only through this API.

APIDescription
GET api/UserGroup

Retrieves all user groups, optionally filtered via OData query options.

GET api/UserGroup(id)

Retrieves the user group with the specified key.

User Planning Slot

A recurring or one-off availability slot for a user (e.g. a working-hours window), of a given slot type. Read-only through this API.

APIDescription
GET api/UserPlanningSlot

Retrieves all user planning slots, optionally filtered via OData query options.

GET api/UserPlanningSlot(id)

Retrieves the user planning slot with the specified key.

User Planning Slot Type

Types of user planning slots (e.g. working hours, on-call). Read-only through this API.

APIDescription
GET api/UserPlanningSlotType

Retrieves all user planning slot types, optionally filtered via OData query options.

GET api/UserPlanningSlotType(id)

Retrieves the user planning slot type with the specified key.

User Right List

Which rights are enabled for the current user's licence (see for the rights configured per licence group). Read-only through this API, and only listable — fetching a single entry by key is disabled; use to enable/disable a right.

APIDescription
POST api/UserRightList/SaveUserRightList

Enables or disables a user right.

GET api/UserRightList

Retrieves all user rights, optionally filtered via OData query options.

GET api/UserRightList(id)

Disabled. Fetching a single user right by key is not supported through this endpoint; use the list endpoint with an OData filter instead.

User Sales Organization List

Links a user to an additional sales organization, beyond their main one. Read-only through this API.

APIDescription
GET api/UserSalesOrganizationList

Retrieves all user/sales-organization links, optionally filtered via OData query options.

GET api/UserSalesOrganizationList(id)

Retrieves the user/sales-organization link with the specified key.

User Sales Territory List

Links a user to an additional sales territory, beyond their main one (see also for the equivalent on companies). Read-only through this API.

APIDescription
GET api/UserSalesTerritoryList

Retrieves all user/sales-territory links, optionally filtered via OData query options.

GET api/UserSalesTerritoryList(id)

Retrieves the user/sales-territory link with the specified key.

User Skill List

Links a user to a skill (see for the skills required per job type). Read-only through this API.

APIDescription
GET api/UserSkillList

Retrieves all user/skill links, optionally filtered via OData query options.

GET api/UserSkillList(id)

Retrieves the user/skill link with the specified key.

User Team

Teams that a user belongs to, used to group users for planning/reporting. Read-only through this API.

APIDescription
GET api/UserTeam

Retrieves all user teams, optionally filtered via OData query options.

GET api/UserTeam(id)

Retrieves the user team with the specified key.

User Timesheet

[OBSOLETE]: Use "UserTimesheetV2Controller" instead. A user's timesheet entry (worked time on a job/task). Post and Save are live but Put and Delete are disabled — updates and removals must go through Save. See UserTimesheetV2Controller for a fully writable version of this endpoint that also adds a SaveMultiple batch endpoint.

APIDescription
POST api/UserTimesheet/Save

[OBSOLETE]: Creates or updates a user timesheet.

GET api/UserTimesheet

[OBSOLETE]: Retrieves all user timesheets, optionally filtered via OData query options.

GET api/UserTimesheet(id)

[OBSOLETE]: Retrieves the user timesheet with the specified key.

POST api/UserTimesheet

[OBSOLETE]: Creates a new user timesheet.

User Timesheet V2

A user's timesheet entry (worked time on a job/task), exposed through a separate UserTimesheetV2 OData feed from over the same underlying table. Unlike the V1 endpoint, Put and Delete are not disabled here — this version is fully writable, and also adds for batch saves.

APIDescription
POST api/UserTimesheetV2/Save

Creates or updates a user timesheet.

POST api/UserTimesheetV2/SaveMultiple

Creates or updates multiple user timesheets in a single batch request. This API is used by the Synchronization module to send multiple records in one request instead of sending each record individually, which: 1. Reduces the number of HTTP requests. 2. Improves performance and efficiency. The batch processing logic (deserialize, validation, transaction handling, saving, and logging) is handled by BatchSaveHelper. Each record will return its own ResponseResult indicating success or failure.

GET api/UserTimesheetV2

Retrieves all user timesheets, optionally filtered via OData query options.

GET api/UserTimesheetV2(id)

Retrieves the user timesheet with the specified key.

POST api/UserTimesheetV2

Creates a new user timesheet.

PUT api/UserTimesheetV2(id)

Updates the user timesheet with the specified key.

DELETE api/UserTimesheetV2(id)

Deletes the user timesheet with the specified key.

User Unavailability

User unavailability periods (illness, holidays, etc.), of a given unavailability type. Fully writable through this API — Post/Put/Delete are hidden from the /Help page (ApiExplorerSettings(IgnoreApi = true)) but are not disabled; they perform real writes, same as Save.

APIDescription
POST api/UserUnavailability/Save

Creates or updates a user unavailability period.

GET api/UserUnavailability

Retrieves all user unavailability periods, optionally filtered via OData query options.

GET api/UserUnavailability(id)

Retrieves the user unavailability period with the specified key.

User Unavailability Type

Types of user unavailability periods (e.g. illness, holiday). Read-only through this API.

APIDescription
GET api/UserUnavailabilityType

Retrieves all unavailability types, optionally filtered via OData query options.

GET api/UserUnavailabilityType(id)

Retrieves the unavailability type with the specified key.

Work Instruction

Reusable work instruction templates (checklists), of a given type, assigned to jobs via (which references this by work_instruction_id). Read-only through this API.

APIDescription
GET api/WorkInstruction

Retrieves all work instructions, optionally filtered via OData query options.

GET api/WorkInstruction(id)

Retrieves the work instruction with the specified key.

Work Instruction Action Type

Types of action a work instruction checklist line can result in (e.g. repair, change) — see , whose work_instruction_action_type_id references this. Read-only through this API.

APIDescription
GET api/WorkInstructionActionType

Retrieves all work instruction action types, optionally filtered via OData query options.

GET api/WorkInstructionActionType(id)

Retrieves the work instruction action type with the specified key.

Work Instruction Details

Detail steps (description, sequence, action type) of a work instruction template — the counterpart of , which tracks these per job. Read-only through this API.

APIDescription
GET api/WorkInstructionDetails

Retrieves all work instruction detail steps, optionally filtered via OData query options.

GET api/WorkInstructionDetails(id)

Retrieves the work instruction detail step with the specified key.

Work Instruction Skill List

Links a work instruction to a required skill. Read-only through this API.

APIDescription
GET api/WorkInstructionSkillList

Retrieves all work instruction/skill links, optionally filtered via OData query options.

GET api/WorkInstructionSkillList(id)

Retrieves the work instruction/skill link with the specified key.

Work Instruction Type

Types of work instructions, controlling which result options (see ) are available on their checklist lines. Read-only through this API.

APIDescription
GET api/WorkInstructionType

Retrieves all work instruction types, optionally filtered via OData query options.

GET api/WorkInstructionType(id)

Retrieves the work instruction type with the specified key.

Work Instruction Type Options

The available result options (e.g. show Ok/NotOk/Replaced/NotApplicable) for a work instruction type. Read-only through this API.

APIDescription
GET api/WorkInstructionTypeOptions

Retrieves all work instruction type options, optionally filtered via OData query options.

GET api/WorkInstructionTypeOptions(id)

Retrieves the work instruction type option with the specified key.