Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Endpunkt für Jobdetails gibt 404 #57

Open
CoroBuddy opened this issue Oct 13, 2024 · 4 comments
Open

Endpunkt für Jobdetails gibt 404 #57

CoroBuddy opened this issue Oct 13, 2024 · 4 comments

Comments

@CoroBuddy
Copy link

Hallo zusammen,

ich versuche gerade den Endpun folgendermaßen aufzurufen:

curl -X GET 'https://rest.arbeitsagentur.de/jobboerse/jobsuche-service/pc/v2/jobdetails/{encodedHashID}' \ -H 'X-API-Key: jobboerse-jobsuche' \ -H 'Accept: application/json'

Dieser war bisher auch richtig, mfunktioniert nur leider seit heute nicht mehr.
Den hash bilde ich mit der refnr und einer base64 Verschlüsselung.

@madebyfabian
Copy link

madebyfabian commented Oct 13, 2024

Der v2-Endpoint wurde vor ein paar Tagen scheinbar abgeschaltet, es gibt einen neuen Endpoint unter der selben URL, aber mit /v3/... statt /v2/... und anderer Response-Datenstruktur.

@CoroBuddy
Copy link
Author

leider konnte ich auch unter v3 kein Stellenangebot finden. Die requests Antworten mit der message "STELLENANGEBOT_NICHT_GEFUNDEN". Dementsprechend ist auch der Request scheinbar anders als vorher.

@mpapathimiu
Copy link

mpapathimiu commented Oct 14, 2024

Using a random job posting as an example if you can't access the endpoint, since I had the same problem with "v2" randomly shutting down (If you do this in Postman you need to add the correct headers):

url: https://rest.arbeitsagentur.de/jobboerse/jobsuche-service/pc/v3/jobdetails/MTAwMDAtMTE4OTczNTY0OC1T

{
    "stellenangebotsart": "ARBEIT",
    "stellenangebotsTitel": "Zephyr Embedded RTOS Entwickler (m/w/d)",
    "stellenangebotsBeschreibung": "Du besitzt einen Studienabschluss mit Schwerpunkt IT oder bist ausgebildeter Fachinformatiker? Du verfolgst Entwicklungen in der Open Source Community, hast ein Gespür für Trends und erkennst deren potentiellen Nutzen für unsere Kunden? Dann schließ dich unserem Team für Medizingeräteentwicklung und IoT-Technologien hier in Jena in Vollzeit oder auch in Teilzeit an.\n\nZu deinen Aufgaben gehören:\n\n• Der Aufbau und die Pflege von kundenspezifischen Zephyr SDK Repositories, Applikationen, BSP und Maschinenbeschreibungen\n• Verwaltung von Echtzeit-Betriebssystemen und deren Prinzipien\n• Verwaltung der Zephyr RTOS Architektur und deren Prinzipien, wie Treiber, Module und Inter-Task-Operationen\n• Die Zephyr Treiberentwicklung insbesondere für Serielle Busse, USB und Sensorik (ADC, DAC, PWM, spez.\nBausteine)\n• Die Kooperation mit der Open-Source-Community\n\nDu bringst mit:\n\n• Erfahrung im Umgang mit der Linux- und / oder Unix-Netzwerkadministration und Programmierung sowie der Unix Shell Programmierung\n• Die Fähigkeit elektrische Schaltpläne für die BSP Entwicklung lesen und interpretieren zu können\n• Grundkenntnisse im Bereich Embedded Hardware Entwicklung mit ARM und x86\n• Systemisches Denken und ein ausgeprägtes Interesse an technologischen Entwicklungen\n• Kenntnisse zum Umgang mit Docker/Podman oder Lxc/Lxd und Python Virtual Environments\n• Erste Erfahrungen auf dem Gebiet der Medizingeräteentwicklung und IoT-Technologien\n• Erfahrungen mit Cross-Compilern\n• Praktische Kenntnisse zur formalen Beweisbarkeit und Verifikation\n• Eine selbständige, agile Arbeitsweise sowie Kommunikations- und Teamfähigkeit\n• Sehr gute Deutsch- und gute Englischkenntnisse\n\nHaben wir dein Interesse geweckt? Dann freuen wir uns auf deine vollständigen Bewerbungsunterlagen, die du uns bitte unter Angabe der Referenznummer 101044 an [email protected] zusendest.",
    "arbeitszeitTeilzeitAbend": true,
    "arbeitszeitTeilzeitNachmittag": true,
    "arbeitszeitTeilzeitVormittag": true,
    "arbeitszeitVollzeit": true,
    "eintrittszeitraum": {
        "von": "2024-10-08"
    },
    "vertragsdauer": "UNBEFRISTET",
    "stellenlokationen": [
        {
            "adresse": {
                "strasse": "Mälzerstr.",
                "hausnummer": "3",
                "plz": "07745",
                "ort": "Jena",
                "region": "THUERINGEN",
                "land": "DEUTSCHLAND"
            },
            "breite": 50.920115,
            "laenge": 11.5793187
        }
    ],
    "geforderteAnlagen": "Geforderte Anlagen: Lebenslauf, Zeugnisse",
    "chiffrenummer": "101044",
    "istPrivateArbeitsvermittlung": true,
    "veroeffentlichungszeitraum": {
        "von": "2024-10-08"
    },
    "istBetreut": false,
    "hauptberuf": "Systemprogrammierer/in",
    "firma": "TowerConsult GmbH",
    "arbeitgeberKundennummerHash": "q1aNYXf3mCBLAJP3jH3sTNwvMcN3tYh9vVnyP8IppzE=",
    "allianzpartnerUrl": "http://www.arbeitsagentur.de",
    "allianzpartnerName": "arbeitsagentur.de",
    "referenznummer": "10000-1189735648-S"
}

As you can see, many properties are named differently, I hope this provides some help. Unfortunately I do not know what other fields the entire response data structure may consist of.

@madebyfabian
Copy link

Es scheint, dass die v3-api nur teilweise funktioniert. Ich erhalte auch für viele Stellenangebote kein Ergebnis, obwohl diese in der Liste existieren. Bei vielen jedoch funktioniert es wiederrum. Woran das liegt habe ich bisher nicht heraus gefunden.

@mpapathimiu Thanks! I have created a zod schema for the v3 response type. Also may not be complete:

import { z } from 'zod'

const jobDetailSchema = z.object({
  referenznummer: z.string(),
  stellenangebotsTitel: z.string().optional(),
  stellenangebotsBeschreibung: z.string().optional(),
  veroeffentlichungszeitraum: z.object({
    /** YYYY-MM-DD */
    von: z.string(),
  }),
  hauptberuf: z.string().optional(),
  externeURL: z.string().optional(),
  eintrittszeitraum: z
    .object({
      /** YYYY-MM-DD */
      von: z.string().optional(),
    })
    .optional(),
  vertragsdauer: z.union([z.literal('BEFRISTET'), z.literal('UNBEFRISTET')]).optional(),
  gehalt: z.string().optional(),

  // Work types
  arbeitszeitHeimarbeitTelearbeit: z.boolean(),
  arbeitszeitSchichtNachtWochenende: z.boolean(),
  arbeitszeitTeilzeitAbend: z.boolean(),
  arbeitszeitTeilzeitFlexibel: z.boolean(),
  arbeitszeitTeilzeitNachmittag: z.boolean(),
  arbeitszeitTeilzeitVormittag: z.boolean(),
  arbeitszeitVollzeit: z.boolean(),
  istGeringfuegigeBeschaeftigung: z.boolean().optional(),

  // Location
  stellenlokationen: z
    .array(
      z.object({
        adresse: z.object({
          hausnummer: z.string().optional(),
          land: z.string().optional(),
          ort: z.string().optional(),
          plz: z.string().optional(),
          region: z.string().optional(),
          strasse: z.string().optional(),
        }),
        breite: z.number(),
        laenge: z.number(),
      })
    )
    .optional(),

  // Company
  arbeitgeberKundennummerHash: z.string().optional(),
  firma: z.string(),
})

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants