{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/entur/main/json-schema/entur-employee-response-schema.json", "title": "EmployeeResponse", "description": "All items for this page", "x-generated": "2026-10-09", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/entur-personnel-tickets-openapi.yml#/components/schemas/EmployeeResponse", "required": [ "employeeNo", "firstName", "id", "isDeleted", "postalCode", "surname", "ticketHolderCode" ], "type": "object", "properties": { "id": { "type": "integer", "description": "The id of the employee", "format": "int64" }, "employeeNo": { "type": "string", "description": "Employee number" }, "company": { "$ref": "#/$defs/CompanyResponse" }, "employmentType": { "$ref": "#/$defs/EmploymentType" }, "dateOfBirth": { "type": "string", "description": "When the employee was born", "format": "date" }, "ssn": { "type": "string", "description": "The employee's social security number" }, "firstName": { "type": "string", "description": "The employee's first name" }, "surname": { "type": "string", "description": "The employee's surname" }, "addressLine": { "type": "string", "description": "The employee's postal address" }, "postalCode": { "type": "string", "description": "The employee's postal code" }, "preferredProduct": { "$ref": "#/$defs/Product" }, "abstainFromTicket": { "type": "boolean", "description": "Whether a ticket should be created" }, "sendTicketToPrivateAddress": { "type": "boolean", "description": "Unused", "deprecated": true }, "jobDescription": { "type": "string", "description": "Unused", "deprecated": true }, "hireStartDate": { "type": "string", "description": "When the employee was hired", "format": "date" }, "payType": { "type": "string", "description": "Pay type - see the codes in the API documentation" }, "hireEndDate": { "type": "string", "description": "When the employee left the company", "format": "date" }, "hireEndCause": { "type": "string", "description": "Why the employee left the company" }, "disabilityGrade": { "type": "integer", "description": "The employee's degree of disability. Default 0.", "format": "int32" }, "disabilityFromDate": { "type": "string", "description": "Unused", "format": "date", "deprecated": true }, "disabilityProofRegistered": { "type": "boolean", "description": "Deprecated. Use disability proofs.", "deprecated": true }, "disabilityProofRegisteredDate": { "type": "string", "description": "Unused", "format": "date", "deprecated": true }, "employmentPercentage": { "type": "integer", "description": "Employment percentage", "format": "int32" }, "employmentPercentageDate": { "type": "string", "description": "Date for registered employment percentage", "format": "date" }, "paidPercentage": { "type": "integer", "description": "The pay level. This is calculated based on the employment percentage and the type of employment. Typically holds the same value as employment percentage, unless special circumstances apply", "format": "int32" }, "paidPercentageDate": { "type": "string", "description": "Date for last change to paidPercentage", "format": "date", "deprecated": true }, "leaveFromDate": { "type": "string", "description": "When the employee starts a leave", "format": "date" }, "isOnWaitPay": { "type": "boolean", "description": "Unused", "deprecated": true }, "waitPayDate": { "type": "string", "description": "Unused", "format": "date", "deprecated": true }, "isFeePaid": { "type": "boolean", "description": "Deprecated. Use yearlyFees", "deprecated": true }, "note": { "type": "string", "description": "Any additional information" }, "isDeleted": { "type": "boolean", "description": "Whether the employee has been marked for deletion" }, "lastUpdate": { "type": "string", "description": "When the imported employee was last updated", "format": "date-time" }, "sourceLastUpdate": { "type": "string", "description": "The source for the last update" }, "familyMembers": { "type": "array", "description": "The employee's family members", "items": { "$ref": "#/$defs/FamilyMemberResponse" } }, "ticketRights": { "type": "array", "description": "The employee's ticket rights", "items": { "$ref": "#/$defs/TicketRightResponse" } }, "ticketHolderCode": { "type": "string", "description": "The employee's ticket holder code" }, "createdAt": { "type": "string", "description": "The date of creation.", "format": "date-time" }, "createdBy": { "type": "string", "description": "The source for the first creation" }, "categories": { "type": "array", "description": "The registered categories on this employee", "items": { "$ref": "#/$defs/EmployeeCategoryResponse" } }, "yearlyFees": { "type": "array", "description": "The status of yearly fees for the current and the next year", "items": { "$ref": "#/$defs/EmployeeYearlyFeeResponse" } }, "disabilityProofs": { "type": "array", "description": "The status of disability proofs for the current and the next year", "items": { "$ref": "#/$defs/EmployeeDisabilityProofResponse" } }, "customerNumber": { "type": "integer", "description": "The employees customer number in ESS. Note this profile is owned by JBD and is the profile connected to the ticket right. A 'null'-value here may indicate that the ticket right is not yet synced to ESS.", "format": "int64" } }, "$defs": { "CompanyResponse": { "required": [ "addressLine", "allowETickets", "allowLocalEmployees", "companyId", "employeeNoPrefix", "isDeleted", "name", "postalCode", "reportSeparator" ], "type": "object", "properties": { "companyId": { "type": "integer", "description": "The company ID", "format": "int64" }, "name": { "type": "string", "description": "The company name" }, "addressLine": { "type": "string", "description": "The company postal address" }, "postalCode": { "type": "string", "description": "The company postal code" }, "employeeNoPrefix": { "type": "string", "description": "A prefix to be prepended to all employee numbers connected to this company" }, "allowLocalEmployees": { "type": "boolean", "description": "Whether local employees are allowed" }, "allowETickets": { "type": "boolean", "description": "Whether the company allows the usage of e-tickets for its personnel tickets" }, "isDeleted": { "type": "boolean", "description": "Whether the company is deleted" }, "reportSeparator": { "type": "string", "description": "Which character to separate elements within tax report: ','(default) or ';'" }, "deleted": { "type": "boolean", "writeOnly": true } }, "description": "Companies are where employees are hired" }, "EmployeeCategoryResponse": { "required": [ "year" ], "type": "object", "properties": { "year": { "type": "integer", "description": "The year this category is valid", "format": "int32" }, "category": { "$ref": "#/$defs/Product" } }, "description": "Category information" }, "EmployeeDisabilityProofResponse": { "required": [ "isRegistered", "year" ], "type": "object", "properties": { "year": { "type": "integer", "description": "The year this information is valid for", "format": "int32" }, "isRegistered": { "type": "boolean", "description": "Whether a disability proof has been registered this year" } }, "description": "Yearly disability proof information" }, "EmployeeYearlyFeeResponse": { "required": [ "isPaid", "year" ], "type": "object", "properties": { "year": { "type": "integer", "description": "The year this fee is valid", "format": "int32" }, "isPaid": { "type": "boolean", "description": "Whether this yearly fee has been paid" } }, "description": "Yearly fee information" }, "EmploymentType": { "required": [ "code", "description" ], "type": "object", "properties": { "code": { "type": "string", "description": "The code used for input", "readOnly": true }, "description": { "type": "string", "description": "A description of the particular code's meaning", "readOnly": true } }, "description": "Employment type. Examples include Employee, Part time, Temp" }, "FamilyMemberLowIncomeResponse": { "required": [ "isRegistered", "year" ], "type": "object", "properties": { "year": { "type": "integer", "description": "Year of registered low income", "format": "int32" }, "isRegistered": { "type": "boolean", "description": "Whether low income is registered" } }, "description": "Low income information" }, "FamilyMemberResponse": { "required": [ "employeeId", "firstName", "id", "isDeleted", "relation", "surname" ], "type": "object", "properties": { "id": { "type": "integer", "description": "The ID of the family member", "format": "int64" }, "employeeId": { "type": "integer", "description": "The ID of the employee", "format": "int64" }, "relation": { "$ref": "#/$defs/FamilyRelation" }, "dateOfBirth": { "type": "string", "description": "When the family member was born", "format": "date" }, "ssn": { "type": "string", "description": "The family members social security number" }, "firstName": { "type": "string", "description": "The family member's first name" }, "surname": { "type": "string", "description": "The family member's surname" }, "abstainFromTicket": { "type": "boolean", "description": "Whether a ticket should be created" }, "note": { "type": "string", "description": "Any additional information" }, "isDeleted": { "type": "boolean", "description": "Whether the family member has been marked for deletion" }, "ticketRights": { "type": "array", "description": "A list of the family member's ticket rights", "items": { "$ref": "#/$defs/TicketRightResponse" } }, "ticketHolderCode": { "type": "string", "description": "The family members ticket holder code" }, "createdAt": { "type": "string", "description": "The date of creation.", "format": "date-time" }, "createdBy": { "type": "string", "description": "The source for the first creation" }, "updatedAt": { "type": "string", "description": "The date the last time the family member was updated", "format": "date-time" }, "updatedBy": { "type": "string", "description": "The source for the last update" }, "lowIncomes": { "type": "array", "description": "The low income registrations for the current and the next year", "items": { "$ref": "#/$defs/FamilyMemberLowIncomeResponse" } }, "customerNumber": { "type": "integer", "description": "The employees customer number in ESS. Note this profile is owned by JBD and is the profile connected to the ticket right. A 'null'-value here may indicate that the ticket right is not yet synced to ESS.", "format": "int64" } }, "description": "A family member must be connected to an employee" }, "FamilyRelation": { "required": [ "code", "description" ], "type": "object", "properties": { "code": { "type": "string", "description": "The code used for input", "readOnly": true }, "description": { "type": "string", "description": "A description of the particular code's meaning", "readOnly": true } }, "description": "The relation a family member has to an employee" }, "ManualOrderResponse": { "required": [ "fromDate", "id", "isDeleted", "issueDate", "ticketType", "toDate" ], "type": "object", "properties": { "id": { "type": "integer", "description": "Id of this manual order.", "format": "int64" }, "ticketType": { "$ref": "#/$defs/TicketTypeResponse" }, "issueDate": { "type": "string", "description": "When this manual order was first issued.", "format": "date-time" }, "fromDate": { "type": "string", "description": "First date the ticket right should be available.", "format": "date" }, "toDate": { "type": "string", "description": "Last date the ticket right should be available.", "format": "date" }, "stations": { "uniqueItems": true, "type": "array", "description": "Any station pairs for this manual order.", "items": { "$ref": "#/$defs/StationPairResponse" } }, "isDeleted": { "type": "boolean", "description": "Whether this manual order is deleted or not." } }, "description": "A manual order. This may contain a list of station pairs." }, "Product": { "required": [ "id", "name", "validFrom", "validUntil" ], "type": "object", "properties": { "id": { "type": "integer", "description": "The product id", "format": "int64" }, "name": { "type": "string", "description": "Human readable product name" }, "validFrom": { "type": "string", "description": "When the product is valid from", "format": "date" }, "validUntil": { "type": "string", "description": "When the product is valid to", "format": "date" } }, "description": "A personnel ticket product" }, "SimpleRule": { "required": [ "id", "name" ], "type": "object", "properties": { "id": { "type": "integer", "description": "Rule id", "format": "int64" }, "name": { "type": "string", "description": "Rule name" } }, "description": "Rule describing who are eligible for what ticket right" }, "StationPairResponse": { "required": [ "fromStation", "id", "toStation" ], "type": "object", "properties": { "id": { "type": "integer", "description": "Id of this station pair", "format": "int64" }, "fromStation": { "$ref": "#/$defs/StationResponse" }, "toStation": { "$ref": "#/$defs/StationResponse" } }, "description": "A set of stations on NetEX format." }, "StationResponse": { "required": [ "id" ], "type": "object", "properties": { "id": { "type": "string", "description": "Station in NetEX format." }, "name": { "type": "string", "description": "Station name" } }, "description": "Station with NetEX and name" }, "SyncStatus": { "type": "object", "properties": { "isReadyToSync": { "type": "boolean", "description": "Whether the ticket right is ready to be sent to the ticketing system" }, "syncTimestamp": { "type": "string", "description": "When the ticket right was sync'ed", "format": "date-time" }, "errorMessage": { "type": "string", "description": "If the system has failed in sending the ticket right to the ticketing system, this will hold the error message. Default is null" } }, "description": "Status fields related to synchronization with other services" }, "TicketRightResponse": { "required": [ "calculationTimestamp", "employeeId", "ticketHolderId", "ticketType", "ticketrightId", "validFrom", "validUntil" ], "type": "object", "properties": { "ticketrightId": { "type": "integer", "description": "The ticket right id", "format": "int64" }, "ticketHolderId": { "type": "integer", "description": "The id of the ticket holder, either an employee or a family member", "format": "int64" }, "employeeId": { "type": "integer", "description": "The id of the employee who is responsible", "format": "int64" }, "validFrom": { "type": "string", "description": "The date from when the ticket right is valid", "format": "date" }, "validUntil": { "type": "string", "description": "The date from when the ticket right stops being valid", "format": "date" }, "ticketType": { "$ref": "#/$defs/TicketTypeResponse" }, "note": { "type": "string", "description": "Any additional information" }, "canSendTicket": { "type": "boolean", "description": "This field will be discontinued in the next vesion of the API.", "deprecated": true }, "ticketCreated": { "type": "string", "description": "This field will be discontinued in the next vesion of the API.", "format": "date-time", "deprecated": true }, "errorMessage": { "type": "string", "description": "This field will be discontinued in the next vesion of the API.", "deprecated": true }, "createdByRule": { "$ref": "#/$defs/SimpleRule" }, "calculationTimestamp": { "type": "string", "description": "When the ticketright was calculated", "format": "date-time" }, "ticketRightsHolder": { "$ref": "#/$defs/TicketRightsHolderResponse" }, "legacySyncStatus": { "$ref": "#/$defs/SyncStatus" }, "essSyncStatus": { "$ref": "#/$defs/SyncStatus" }, "manualOrder": { "$ref": "#/$defs/ManualOrderResponse" } }, "description": "A ticket right granted to an employee or a family member" }, "TicketRightsHolderResponse": { "required": [ "id", "ticketHolderCode" ], "type": "object", "properties": { "id": { "type": "integer", "description": "The ticket right holder id", "format": "int64" }, "ticketHolderCode": { "type": "string", "description": "The personnel ticket code for the ticket rights holder" }, "ticketRight": { "$ref": "#/$defs/TicketRightResponse" }, "firstName": { "type": "string", "description": "Unused. This field is populated by employee / family member data and will be removed in future versions.", "deprecated": true }, "surname": { "type": "string", "description": "Unused. This field is populated by employee / family member data and will be removed in future versions.", "deprecated": true }, "addressLine": { "type": "string", "description": "Unused. This field is populated by employee / family member data and will be removed in future versions.", "deprecated": true }, "postalCode": { "type": "string", "description": "Unused. This field is populated by employee / family member data and will be removed in future versions.", "deprecated": true }, "postalPlace": { "type": "string", "description": "Unused. This field is populated by employee / family member data and will be removed in future versions.", "deprecated": true }, "countryCode": { "type": "string", "description": "Unused. This field is populated by employee / family member data and will be removed in future versions.", "deprecated": true }, "dateOfBirth": { "type": "string", "description": "Unused. This field is populated by employee / family member data and will be removed in future versions.", "format": "date", "deprecated": true } }, "description": "All items for this page" }, "TicketTypeResponse": { "required": [ "canHaveStationPairs", "code", "countryCode", "description", "generatesTicketRights", "id", "isDeleted" ], "type": "object", "properties": { "id": { "type": "integer", "description": "Ticket type id", "format": "int64" }, "code": { "type": "string", "description": "Ticket type" }, "description": { "type": "string", "description": "Ticket type description" }, "countryCode": { "type": "string", "description": "Country code" }, "generatesTicketRights": { "type": "boolean", "description": "Whether or not this this ticket type is relevant for sending as input to a Manual order. If this = false (the default), it will not generate new tickets rights by manual order." }, "canHaveStationPairs": { "type": "boolean", "description": "Whether or not this ticket type is compatible with station pairs when placing a manual order. The default = false. " }, "isDeleted": { "type": "boolean", "description": "Whether the ticket type is deleted." } }, "description": "The Ticket type informs of which country it is valid in and what train class it covers." } } }