Teknisk dokumentation för gränssnittet för hantering av platsannonser

Syftet med dokumentationen

Denna dokumentation preciserar de tekniska kraven för Jobbmarknadens gränssnitt för hantering av platsannonser och beskriver mer detaljerat hur själva gränssnittet används. Processen för att ta gränssnittet i bruk beskrivs mer ingående på Jobbmarknadens webbplats. På samma plats finns även OpenAPI-beskrivningar för P66-gränssnittet som är kopplat till hantering av platsannonser.

Användningssyfte

Platsannonser fron externa tjänster kan publiceras på Jobbmarknaden genom gränssnittet. Platsannonser kan också schemaläggas för publicering. Publicerade platsannonser kan redigeras och arkiveras via gränssnittet.

Gränssnittet för hantering av platsannonser är utformat så att användaren av gränssnittet inte behöver vara den faktiska arbetsgivaren för jobbet, utan kan använda det för att hantera platsbannonser från flera olika företag. Platsannonsen skapas för det företag som anges i parametern businessId i URL:en.

Införande

Gränssnittet för hantering av platsannonser på Jobbmarknaden tillhandahålls via KEHA-centrets integrationsplattform (Kipa). Användaruppgifter för plattformen samt relaterade IP-öppningar hanteras av KEHA-centret som en del av införandeprocessen. De uppgifter som behövs för att använda gränssnittet levereras säkert till användaren. Mer detaljerad information om införandet finns på Jobbmaknaden webbplats.

Hantering av platsannonser

Detaljerade processer för hantering av platsannonser illustreras i diagrammet nedan.

processer för hantering av platsannonser - beskrivs i texten nedan

Den faktiska hanteringen av platsannonser sker via tjänsten P66 på Kipa-integrationsplattformen, som kommunicerar med Jobbmarknadens backend-tjänst. Tillgängliga funktioner, datainnehåll och svar beskrivs i YAML-beskrivningen för hanteringsgränssnittet.

Anrop via Kipa-integrationsplattformen auktoriseras med en API-nyckelmekanism, och anropets header-information måste innehålla KIPA-Subscription-Key som tillhandahålls för Kipa-användning. Header attributet KIPA-MessageId ställs in automatiskt av integrationsplattformen.

Endpoint

Tjänsten P66 på Kipa-integrationsplattformen finns på följande adresser:

Skapa och uppdatera en platsannons

Platsannonsen hanteras via API-anropet /v1/jobposting/{businessId}/{externalId}. Den HTTP-metod som används anger vilken åtgärd som ska utföras på platsannonsen. Alternativen är att hämta information om platsannonsen (GET), skapa eller uppdatera den (PUT) eller arkivera den (DELETE).

Platsannonsens unika externalId-identifierare i uuid-format måste anges i gränssnittsanropet när en platsannons skapas på Jobbmarknaden.

Om man vill uppdatera en befintlig platsannons måste man lägga till If-Match-informationen i anropets header-information, där man anger värdet i etag-fältet som finns i den platsannons som ska uppdateras. Detta säkerställer att den senaste versionen av platsannonsen behandlas. Om etag-värdet inte stämmer överens med värdet i databasen, har platsannonsen redigerats efter att informationen hämtades och uppdateringen misslyckas. För att säkerställa att uppdateringen lyckas rekommenderas det att hämta informationen om platsannonsen med GET-metoden innan man försöker uppdatera.

Platsannonsers status

Platsannonser kan importeras till Jobbmarknaden antingen direkt i publicerad status eller i väntande status för publicering vid en viss tidpunkt. Publicerade eller väntande platsannonser kan uppdateras. Platsannonser tas automatiskt bort från publicering vid slutet av ansökningsperioden eller kan tas bort med hjälp av metoden DELETE. I båda fallen flyttas platsannonsen till arkiverad status och är inte längre offentlig. Om en platsannons innehåller olämpligt innehåll och myndigheterna förhindrar dess publicering ändras platsannonsens status till blockerad, varefter den inte längre kan behandlas via administrationsgränssnittet.

Struktur för platsannonser

Platsannonser kan skickas in på tre språk, och de språk som används ska rapporteras med hjälp av attributet languages. De lokaliserade fritextfälten valideras för att säkerställa att de innehåller översättningselement på alla språk som anges i platsannonsen. Om så inte är fallet kommer platsannonsen att avvisas.

Platsannonser använder den europeiska ESCO-klassificeringen för att beskriva yrken och kompetenser. En nationell utvidgning (FINESCO) har gjorts av klassificeringen, som inkluderar den senaste ESCO-klassificeringen och nationella yrken som lagts till. Användningen av FINESCO säkerställer att platsannonser också kan överföras till portalen för europeiska arbetsförmedlingstjänster (EURES). FINESCO-klassificeringen finns tillgänglig på webbplatsen för Jobbmarknaden.

När det gäller yrkesuppgifter bör det noteras att uppgifter om lediga tjänster sammanställs i arbetsförmedlingens statistik. Dock kan endast ett yrke anges där, även om den platsannons tillåter flera yrken. Av denna anledning hämtas det yrke som används för statistiska ändamål i platsannons som importeras via gränssnittet från det första alternativet i yrke listan, om det inte finns något värde i fältet mainOccupation.

I platsannonsen är de kompetenser som krävs för jobbet valfri information. Det rekommenderas att fylla i de kompetenser som krävs, eftersom de används för att matcha platsannonser och jobbsökningprofiler.

Platsen i platsannonsen måste anges som minst en kommun, men det är också möjligt att ange andra platser. Information om kommunen krävs för att platsannonsen ska kunna klassificeras till rätt arbetsförmedling.

Detaljerad datamodell

Datamodellen för platsannonser består av de element som visas i figuren nedan. Obligatorisk information anges med fet stil. För saknad information måste strukturen antingen vara null eller så måste nyckeln utelämnas helt.

Platsannonsens datainnehåll som bild – data finns i yaml-beskrivningen

Exempel

Nedan följer ett exempel på strukturen för en platsannons när du skapar en ny platsannons i tjänsten.

{
  "languages": [
    "fi",
    "en"
  ],
 "descriptionsContentType": "markdown",
 "application": {
    "expires": "2026-05-27T16:15:00.00Z",
    "extraVisibility": [
      "EURES_FLAGGED"
    ],
    "helpText": {
      "fi": "Cras tempor bibendum bibendum. Etiam auctor viverra augue at
      posuere. Nunc fermentum aliquam est, vel eleifend ligula efficitur
      nec. Ut nec ullamcorper lacus, nec aliquam justo. Quisque ultrices
      enim diam, ac maximus lectus sodales in. Quisque quis maximus velit.
      Phasellus a rutrum lorem. Ut mollis augue quis justo tempus
      bibendum. Curabitur pretium ex neque, a pulvinar nulla scelerisque
      quis.
      \n\nAliquam elementum orci et vulputate consequat. Morbi sit amet
      tortor sed ante volutpat congue. In egestas laoreet tempor. Aliquam
      sed purus at tellus laoreet varius. Mauris eleifend nunc ante, a
      tempor sem malesuada at. Nunc in nisl ligula. Donec porttitor
      porttitor vulputate.",
      "en": "Cras tempor bibendum bibendum. Etiam auctor viverra augue at
      posuere. Nunc fermentum aliquam est, vel eleifend ligula efficitur
      nec. Ut nec ullamcorper lacus, nec aliquam justo. Quisque ultrices
      enim diam, ac maximus lectus sodales in. Quisque quis maximus velit.
      Phasellus a rutrum lorem. Ut mollis augue quis justo tempus
      bibendum. Curabitur pretium ex neque, a pulvinar nulla scelerisque
      quis.
      \n\nAliquam elementum orci et vulputate consequat. Morbi sit amet
      tortor sed ante volutpat congue. In egestas laoreet tempor. Aliquam
      sed purus at tellus laoreet varius. Mauris eleifend nunc ante, a
      tempor sem malesuada at. Nunc in nisl ligula. Donec porttitor
      porttitor vulputate."
    },
    "openPositions": 2,
    "published": "2026-05-03T18:00:00Z",
    "url": {
      "fi": "https://example.com/lorem",
      "en": "https://example.com/ipsum"
    }
  },
  "client": {
    "businessId": "2296962-1",
    "company": "KEHA-keskus",
    "companyVisible": true,
    "industryCode": null,
    "officeCode": null,
    "officeName": null
  },
  "externalLinks": [
    {
      "description": "External link",
      "url": "http://www.google.com/"
    }
  ],
  "location": {
    "countries": [
      "FI"
    ],
    "municipalities": [
      "090",
      "097"
    ],
    "regions": [
      "01",
      "14"
    ],
    "requiresTravelling": true,
    "workplaceAddress": "Valamontie 42",
    "workplaceName": {
      "fi": "Valamon luostari",
      "en": "Valamon luostari"
    },
    "workplacePostOffice": "Uusi-Valamo",
    "workplacePostalCode": "79850"
  },
  "owner": {
    "company": {
         "fi": "Eezy Henkilöstöpalvelut Oy",
         "en": "Eezy Henkilöstöpalvelut Oy"
         },
    "industryCode": "78200",
    "officeCode": null,
    "officeName": null,

    "reference": "reference 12345"
  },
  "position": {
    "continuityOfWork": [
      "01"
    ],
    "criminalRecordVerification": [
      "1"
    ],
    "drivingLicenses": [
      "B"
    ],
    "durationOfTemporary": "06",
    "employmentRelationship": "0101",
    "jobDescription": {
         "fi": "**Donec a dolor at nunc gravida gravida.** Nulla lacinia
         malesuada neque, eu tincidunt lacus lacinia a. Nulla cursus leo
         nulla, eu consequat lectus feugiat sit amet. Cras dapibus augue
         eu hendrerit placerat. Morbi sit amet bibendum ligula, sed
         vehicula erat. Sed nisl nisl, ornare ut ultricies in, ornare ut
         enim. 
         \n\n- praesent\n \n- dignissim\n \n- sagittis\n \n- lobortis\n 
         \n\nNullam ornare orci at feugiat dictum. Nullam porttitor nibh
         non aliquam pretium. Duis sed purus neque. Ut nec tortor
         placerat, vehicula mi at, tempor ligula. Nam quis nisi ex. Nam
         dignissim risus quis viverra tempus. Nulla facilisi. Aliquam
         efficitur auctor augue, ac gravida leo volutpat vitae. Aenean
         vitae tortor ut urna scelerisque aliquam. Sed elit velit, mollis
         id ante sit amet, eleifend suscipit nulla.",
         "en": "**Donec a dolor at nunc gravida gravida.** Nulla lacinia
         malesuada neque, eu tincidunt lacus lacinia a. Nulla cursus leo
         nulla, eu consequat lectus feugiat sit amet. Cras dapibus augue
         eu hendrerit placerat. Morbi sit amet bibendum ligula, sed
         vehicula erat. Sed nisl nisl, ornare ut ultricies in, ornare ut
         enim. 
         \n\n- praesent\n \n- dignissim\n \n- sagittis\n \n- lobortis\n 
         \n\nNullam ornare orci at feugiat dictum. Nullam porttitor nibh
         non aliquam pretium. Duis sed purus neque. Ut nec tortor
         placerat, vehicula mi at, tempor ligula. Nam quis nisi ex. Nam
         dignissim risus quis viverra tempus. Nulla facilisi. Aliquam
         efficitur auctor augue, ac gravida leo volutpat vitae. Aenean
         vitae tortor ut urna scelerisque aliquam. Sed elit velit, mollis
         id ante sit amet, eleifend suscipit nulla."
         },
    "mainOccupation": "http://data.europa.eu/esco/occupation/9bf4c8ea-e814-4772-ae31-0f29672dc497",
    "marketingDescription": {},
    "occupations": [
      {
        "uri": "http://data.europa.eu/esco/occupation/1de91afd-9da2-47ab-a7e7-19bf931709a4"
      },
      {
        "uri": "http://data.europa.eu/esco/occupation/7ed2e153-8da8-4c0d-b4c5-3402c623f34b"     
      }
    ],
    "partTimeInfo": {
      "fi": "10-15 Orci varius natoque penatibus.",
      "en": "10-15 Orci varius natoque penatibus."
    },
    "permitCards": [
      "002"
    ],
    "permitCardsDescription": {
      "fi": "Curabitur non tristique nunc. Nam at rutrum tellus. 
      Vestibulum interdum ut leo at gravida. Aliquam non nunc lectus.
      Nam et bibendum lorem, id euismod nisl.",
      "en": "Curabitur non tristique nunc. Nam at rutrum tellus. 
      Vestibulum interdum ut leo at gravida. Aliquam non nunc lectus.
      Nam et bibendum lorem, id euismod nisl."
    },
    "skills": [
      {
        "uri": "http://data.europa.eu/esco/skill/00506f28-e884-4496-800c-3477c67eb355"
      },
      {
        "uri": "http://data.europa.eu/esco/skill/2e2bde69-09df-45f7-88f4-a938717bee04"
      }
    ],
    "title": {
         "fi": "Pellentesque vitae eros aliquet",
         "en": "Pellentesque vitae eros aliquet."
         },
    "wagePrinciple": "0101",
    "wagePrincipleInfo": {
        "fi": "Nunc a dui sed.",
        "en": "Nunc a dui sed."
    },
    "wageRange": "12",
    "workLanguages": [
      "fi",
      "en"
    ],
    "workTime": "01",
    "workTimeDetails": [
      "01",
      "02"
    ]
  },
  "recruiter": {
    "contactInfoVisible": true,
    "contacts": [
      {
        "email": "lorem@ipsum.com",
        "firstName": "Lorem",
        "lastName": "Ipsum",
        "telephone": "+358401234567"
      }
    ]
  }
}

Koduppsättningar

Olika koduppsättningsvärden relaterade till jobbsökningsprofilen finns tillgängliga från JobbMarknadens-koduppsättningstjänsten. Koduppsättningarna för olika data beskrivs nedan. OpenApi-beskrivningen innehåller också information om koduppsättningen relaterad till attributet.

Koduppsättningens json-struktur läses på ett sådant sätt att kodvärdena kan hittas i id-elementet och beskrivningen relaterad till id:t lokaliserad i description-elementet. Varje kodvärde har också en giltighetsperiod. Koduppsättningen kan därför innehålla kodvärden som redan har tagits ur bruk. I sådana fall har koderna information om utgångsdatum. Vissa koduppsättningar kan ha tillägg som kan användas för att förfina användningen av koduppsättningen. Till exempel används tillägget subset för att begränsa endast vissa kod-ID:n till ett specifikt syfte. Tillägget sekvensnummer anger önskad ordning för koderna, till exempel i urvalslistor.