# Jobnet

# Jobnet v1

It's possible to upload jobs to JobNet using the tsJobnet servlet.  
This site documents the interface.

### <span class="mw-headline" id="bkmrk-usage-1">Usage</span>

Send a POST or GET-request to the servlet-endpoint "/addJob" with the required parameters as url-parameters.  
If a parameter is missing, the servlet will return HTTP-CODE 403 and a message in the body, telling you what was wrong.

### <span class="mw-headline" id="bkmrk-all-fields-1">All fields</span>

<table class="wikitable" id="bkmrk-parameter-type-defau"><tbody><tr><td>**Parameter**</td><td>**Type**</td><td>**Default**</td><td>**Required**</td><td>**Description**</td></tr><tr><td>ApplicationDetails.ApplicationMethods.ApplyByEmail</td><td>String (email)</td><td> </td><td>No</td><td> </td></tr><tr><td>ApplicationDetails.ApplicationMethods.ApplyByLetter</td><td>Boolean</td><td>false</td><td>No</td><td> </td></tr><tr><td>ApplicationDetails.ApplicationMethods.ApplyByTelephone</td><td>String (phone-number)</td><td> </td><td>No</td><td> </td></tr><tr><td>ApplicationDetails.ApplicationMethods.ApplyOnline</td><td>String (url)</td><td> </td><td>No</td><td> </td></tr><tr><td>ApplicationDetails.Description</td><td>String</td><td> </td><td>No</td><td>A short description of the job, not the full description, that is JobDetails.Description</td></tr><tr><td>ApplicationDetails.JobContactList.JobContactType.Email</td><td>String (email)</td><td> </td><td>Yes</td><td> </td></tr><tr><td>ApplicationDetails.JobContactList.JobContactType.PersonNameStructure.PersonGivenName</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>ApplicationDetails.JobContactList.JobContactType.PersonNameStructure.PersonSurnameName</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>ApplicationDetails.JobContactList.JobContactType.Title</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>ApplicationDetails.JobContactList.JobContactType.HidePhoneNumbers</td><td>Boolean</td><td>true</td><td>Yes</td><td> </td></tr><tr><td>ApplicationDetails.JobContactList.JobContactType.TelephoneNumberStructure.MobileNumber</td><td>String (phone-number)</td><td> </td><td>No</td><td> </td></tr><tr><td>ApplicationDetails.JobContactList.JobContactType.TelephoneNumberStructure.PrimaryNumber</td><td>String (phone-number)</td><td> </td><td>No</td><td> </td></tr><tr><td>ApplicationDetails.JobContactList.JobContactType.TelephoneNumberStructure.SecondaryNumber</td><td>String (phone-number)</td><td> </td><td>No</td><td> </td></tr><tr><td>ApplicationDetails.JobContactList.JobContactType.TelephoneNumberStructure.Telefax</td><td>String (phone-number)</td><td> </td><td>No</td><td> </td></tr><tr><td>ApplicationDetails.Referral</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>HiringOrganizationDetails.AddressStructure.CountryCode</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>HiringOrganizationDetails.AddressStructure.FloorIdentifier</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>HiringOrganizationDetails.AddressStructure.MunicipalityId</td><td>Integer</td><td> </td><td>Yes</td><td> </td></tr><tr><td>HiringOrganizationDetails.AddressStructure.MunicipalityName</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>HiringOrganizationDetails.AddressStructure.PostalCity</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>HiringOrganizationDetails.AddressStructure.PostalCode</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>HiringOrganizationDetails.AddressStructure.StreetBuildingIdentifier</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>HiringOrganizationDetails.AddressStructure.StreetName</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>HiringOrganizationDetails.AddressStructure.SuiteIdentifier</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>HiringOrganizationDetails.BranchCode</td><td>Integer</td><td> </td><td>Yes</td><td> </td></tr><tr><td>HiringOrganizationDetails.BranchDescription</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>HiringOrganizationDetails.Contact.Email</td><td>String (email)</td><td> </td><td>No</td><td> </td></tr><tr><td>HiringOrganizationDetails.Contact.PersonNameStructure.PersonGivenName</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>HiringOrganizationDetails.Contact.PersonNameStructure.PersonSurnameName</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>HiringOrganizationDetails.Contact.Title</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>HiringOrganizationDetails.Contact.PrimaryNumber</td><td>String (phone-number)</td><td> </td><td>No</td><td> </td></tr><tr><td>HiringOrganizationDetails.Contact.SecondaryNumber</td><td>String (phone-number)</td><td> </td><td>No</td><td> </td></tr><tr><td>HiringOrganizationDetails.Contact.Telefax</td><td>String (phone-number)</td><td> </td><td>No</td><td> </td></tr><tr><td>HiringOrganizationDetails.CvrNumber</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>HiringOrganizationDetails.Name</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>HiringOrganizationDetails.PNumber</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>HiringOrganizationDetails.Url</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>JobAdDetails.JobPublishDates.LastModifiedDate</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>JobAdDetails.JobPublishDates.PublishEndDate</td><td>String</td><td> </td><td>Yes</td><td>Has to be after PublishStartDate, but at the longest 8 weeks after</td></tr><tr><td>JobAdDetails.JobPublishDates.PublishStartDate</td><td>String</td><td> </td><td>Yes</td><td>Has to be today or after</td></tr><tr><td>JobAdDetails.Logo</td><td>String (base64)</td><td> </td><td>No</td><td>max. 200x135px / 100KB</td></tr><tr><td>JobAdDetails.PostedBy.Email</td><td>String (email)</td><td> </td><td>No</td><td> </td></tr><tr><td>JobAdDetails.PostedBy.PersonNameStructure.PersonGivenName</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>JobAdDetails.PostedBy.PersonNameStructure.PersonSurnameName</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>JobAdDetails.PostedBy.Title</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>JobAdDetails.PostedBy.ContactGuid</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>JobAdDetails.PostedBy.PrimaryNumber</td><td>String (phone-number)</td><td> </td><td>No</td><td> </td></tr><tr><td>JobAdDetails.PostedBy.Telefax</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>JobAdDetails.PostedBy.UserRid</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>JobAdDetails.Type</td><td>String</td><td>Normal</td><td>No</td><td>Has to be one of "WageSubsidy", "HotJob", "Normal", "SpringStone", "Flexjob", "EarlyRetirement", "JobRotation", "EarlyRetiree", "CompanyInternship", "NormalAndEarlyRetiree", or"NormalAndEarlyRetireeWithHotJob"</td></tr><tr><td>JobDetails.AuthorityId</td><td>Integer</td><td>0</td><td>No</td><td> </td></tr><tr><td>JobDetails.AuthorityPhoneNumber</td><td>String (phone-number)</td><td> </td><td>No</td><td> </td></tr><tr><td>JobDetails.Classification.EmploymentType</td><td>String</td><td>PermanentJob</td><td>No</td><td>Has to be "PermanentJob" or "LimitedPeriod"</td></tr><tr><td>JobDetails.Classification.IsEuresJob</td><td>Boolean</td><td>false</td><td>No</td><td> </td></tr><tr><td>JobDetails.Classification.IsPublicSectorJob</td><td>Boolean</td><td>false</td><td>No</td><td> </td></tr><tr><td>JobDetails.Classification.IsWorkInDenmarkJob</td><td>Boolean</td><td>false</td><td>No</td><td> </td></tr><tr><td>JobDetails.Description</td><td>String</td><td> </td><td>Yes</td><td>The description of the job. If it contains html ([subset](https://starwiki.atlassian.net/wiki/spaces/FYS/pages/56590365/JobAdService)) it has to be wrapped in &lt;!\[CDATA\[\]\]&gt;</td></tr><tr><td>JobDetails.DriversLicences</td><td>Comma-List</td><td> </td><td>No</td><td>Required drivers licenses to apply for the job. Can be any combination of A1, A, B, BE, C, CE, D, DE, A10, AMa, AMb, A2, C1, D1, C1E, D1E, Taxi, Traktor, Truck, BusErhverv, DigitalFartskriver, EUGodsErhverv and EUBusErhverv, seperated by a comma</td></tr><tr><td>JobDetails.HidePhonenumbers</td><td>Boolean</td><td>false</td><td>No</td><td> </td></tr><tr><td>JobDetails.IsAnonymousEmployer</td><td>Boolean</td><td>false</td><td>No</td><td> </td></tr><tr><td>JobDetails.IsDisabilityFriendly</td><td>Boolean</td><td>false</td><td>No</td><td> </td></tr><tr><td>JobDetails.JobDates.ApplicationDeadlineDate</td><td>String (date)</td><td> </td><td>Yes</td><td> </td></tr><tr><td>JobDetails.JobDates.EmploymentDate</td><td>String (date)</td><td> </td><td>No</td><td> </td></tr><tr><td>JobDetails.JobDates.StartAsSoonAsPossible</td><td>Boolean</td><td>false</td><td>No</td><td> </td></tr><tr><td>JobDetails.JobLocation.Address.CountryCode</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>JobDetails.JobLocation.Address.FloorIdentifier</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>JobDetails.JobLocation.Address.MunicipalityId</td><td>Integer</td><td> </td><td>Yes</td><td> </td></tr><tr><td>JobDetails.JobLocation.Address.MunicipalityName</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>JobDetails.JobLocation.Address.PostalCity</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>JobDetails.JobLocation.Address.PostalCode</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>JobDetails.JobLocation.Address.StreetBuildingIdentifier</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>JobDetails.JobLocation.Address.StreetName</td><td>String</td><td> </td><td>Yes</td><td> </td></tr><tr><td>JobDetails.JobLocation.Address.SuiteIdentifier</td><td>String</td><td> </td><td>No</td><td> </td></tr><tr><td>JobDetails.JobLocation.NoLocalBusinessAddress</td><td>Boolean</td><td>false</td><td>No</td><td> </td></tr><tr><td>JobDetails.NumberOfPositions</td><td>Integer</td><td>1</td><td>No</td><td> </td></tr><tr><td>JobDetails.OccupationConceptUri</td><td>String ([JobnetConceptUri](https://docs.tsnocode.com/books/standard-integrations/page/jobnetconcepturi "JobnetConceptUri"))</td><td> </td><td>Yes</td><td> </td></tr><tr><td>JobDetails.Schedule.DailyWorkTime.Day</td><td>Boolean</td><td>false</td><td>No</td><td> </td></tr><tr><td>JobDetails.Schedule.DailyWorkTime.Evening</td><td>Boolean</td><td>false</td><td>No</td><td> </td></tr><tr><td>JobDetails.Schedule.DailyWorkTime.Night</td><td>Boolean</td><td>false</td><td>No</td><td> </td></tr><tr><td>JobDetails.Schedule.DailyWorkTime.Weekend</td><td>Boolean</td><td>false</td><td>No</td><td> </td></tr><tr><td>JobDetails.Schedule.WeeklyWorkTimeTypes</td><td>String</td><td>FullTime</td><td>No</td><td>Has to be PartTime or FullTime</td></tr><tr><td>JobDetails.Schedule.WorkHour.Max</td><td>Integer</td><td> </td><td>No</td><td>Expected maximum of hours of work, a week, if PartTime</td></tr><tr><td>JobDetails.Schedule.WorkHour.Min</td><td>Integer</td><td> </td><td>No</td><td>Expected minimum of hours of work, a week, if PartTime</td></tr><tr><td>JobDetails.Title</td><td>String</td><td> </td><td>Yes</td><td>The title being hired for</td></tr></tbody></table>

### <span class="mw-headline" id="bkmrk-notes-1">Notes</span>

At least one application method (ApplicationDetails.ApplicationMethods) has to be set.  
At least one phonenumber has to be set for job-contact (ApplicationDetails.JobContactList.JobContactType.TelephoneNumberStructure).  
If schedule (JobDetails.Schedule.WeeklyWorkTimeTypes) equals "FullTime", workhours (JobDetails.Schedule.WorkHour.Min and JobDetails.Schedule.WorkHour.Max) can't be set.  
JobDetails.Schedule.WorkHour.Min has to be lower than JobDetails.Schedule.WorkHour.Max and between 0 and 36.  
JobDetails.Schedule.WorkHour.Max has to be greater than JobDetails.Schedule.WorkHour.Min and between 1 and 36.  
If schedule (JobDetails.Schedule.WeeklyWorkTimeTypes) Equals "PartTime", workhours (JobDetails.Schedule.WorkHour.Min and JobDetails.Schedule.WorkHour.Max) have to be set.

# JobnetConceptUri

Jobs uploadet to JobNet require the parameter JobDetails.JobLocation.OccupationConceptUri to be set to a valid OccupationConceptUri.  
A wrapper has been made for this, it is part of the JobNet servlet.

## <span class="mw-headline" id="bkmrk-usage-1">Usage</span>

Send a POST or GET-request to the servlet-endpoint "/getOccupations".  
If an error occurs, the servlet will return HTTP-CODE 403 or 500 and a message in the body, telling you what was wrong.  
If the request is successful a JSONArray wil be returned.  
Invalid OccupationConceptUri's will be returned, because of backwards-compatibility. Filter these via the "valid" attribute.

### <span class="mw-headline" id="bkmrk-sample-1">Sample</span>

```json
[
    {
        "valid": false,
        "description": "Borearbejdere (sten) betjener boremaskinen, der borer huller i stenblokke. De behandler granit, sandsten, marmor og skifer i overensstemmelse med specifikationerne.",
        "label": "borearbejder - sten",
        "uri": "http://data.star.dk/esco/occupation/2fbdc3fa-aeab-4e45-bccf-9421b84c687f"
    },
    ...
]
```