{"openapi":"3.1.0","info":{"title":"Feedmanager API","description":"Public search endpoints for job offer feeds","contact":{"name":"excelsea","email":"support@excelsea.de"},"version":"1.0"},"servers":[{"url":"https://qa.deine.jobs","description":"Generated server url"}],"tags":[{"name":"Search","description":"Search operations for job offers that got collected and normalized from various feeds"}],"paths":{"/api/v1/search/":{"get":{"tags":["Search"],"summary":"Get jobs based on search criteria","description":"Search for job offers based on various criteria such as location, title, salary, etc.","operationId":"getJobs","parameters":[{"name":"location","in":"query","description":"Location(s) of the job. Can be a single location or comma-separated list (e.g., 'Berlin' or 'Berlin,Munich,Hamburg'). Job offers will be included if their workplace matches any of the provided locations.","required":false,"schema":{"type":"string"}},{"name":"jobTitle","in":"query","description":"Title of the job","required":false,"schema":{"type":"string"}},{"name":"companyName","in":"query","description":"Company name. Filters jobs by company name using case-insensitive substring matching.","required":false,"schema":{"type":"string"}},{"name":"minSalary","in":"query","description":"Minimum salary for the job","required":false,"schema":{"type":"number","format":"double"}},{"name":"salaryPeriodType","in":"query","description":"Salary time period type (year, month, hour, one_time). Use it to define together with minSalary how to perform a salary search","required":false,"schema":{"type":"string","enum":["YEAR","MONTH","HOUR","ONE_TIME"]}},{"name":"employmentType","in":"query","description":"Type of employment","required":false,"schema":{"type":"array","items":{"type":"string","enum":["FULL_TIME","PART_TIME","PART_TIME_MINI_JOB","REMOTE_HOME_OFFICE","APPRENTICESHIP_TRAINING","INTERNSHIP","FREELANCER_PROJECT_WORK","DUAL_STUDY_WORKING_STUDENT"]}}},{"name":"apiKey","in":"query","description":"api key for your domain that has access to the api","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","description":"Results posted on or after the specified date.","required":false,"schema":{"type":"string","format":"date"}},{"name":"employerId","in":"query","description":"The Id of the Job Offer Employer. Relevant only for employers that got created with Markee Solutions technology.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"latitude","in":"query","description":"Center latitude for distance filter","required":false,"schema":{"type":"number","format":"double"}},{"name":"longitude","in":"query","description":"Center longitude for distance filter","required":false,"schema":{"type":"number","format":"double"}},{"name":"radiusKm","in":"query","description":"Radius in kilometers for distance filter. Use it with latitiude/longitude parameters. Job offers without geo coordinates will be excluded in this search.","required":false,"schema":{"type":"number","format":"double"}},{"name":"topJobs","in":"query","description":"Top jobs boolean to filter the search and return only top jobs. The parameter is false by default, meaning search will return both normal and top jobs","required":false,"schema":{"type":"boolean"}},{"name":"industries","in":"query","description":"Industry(ies) of the job. Can be a single industry or comma-separated list (e.g., 'Technology' or 'Technology,Healthcare,Finance'). Job offers will be included if they belong to any of the provided industries.","required":false,"schema":{"type":"string"}},{"name":"customFilters","in":"query","description":"Custom filters as JSON string. Format: {\"provider.field.subfield\": [\"value1\", \"value2\"]}. Don't forget to url encode this parameter.","required":false,"schema":{"type":"string"}},{"name":"osmIds","in":"query","description":"Filter by OpenStreetMap IDs. Comma-separated list of OSM IDs (e.g., '1739379,28322,51477')","required":false,"schema":{"type":"string"}},{"name":"adminLevel","in":"query","description":"Filter by administrative level number. Use together with adminLevelNames for level-name combination filtering (e.g., '2' for countries, '4' for states)","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"adminLevelNames","in":"query","description":"Filter by administrative area names. Comma-separated list of names (e.g., 'Deutschland,Berlin,Hamburg'). Can be used standalone or with adminLevel for specific level filtering","required":false,"schema":{"type":"string"}},{"name":"occupationalFields","in":"query","description":"Occupational field(s) of the job. Can be a single field or comma-separated list (e.g., 'Software Engineer' or 'Software Engineer,Data Scientist,Marketing Manager'). Job offers will be included if their occupational fields match any of the provided values.","required":false,"schema":{"type":"string"}},{"name":"skip","in":"query","description":"Number of records to skip","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Maximum number of records to return, max 100, default 100 when not set","required":false,"schema":{"type":"integer","format":"int32","maximum":100,"minimum":1}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}}}}}},"components":{"schemas":{"AdminLevel":{"type":"object","properties":{"adminLevel":{"type":"integer","format":"int32"},"osmId":{"type":"integer","format":"int64"},"name":{"type":"string"}}},"JobOfferDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the job offer"},"externalId":{"type":"string","description":"External ID from the provider of the job offer"},"slug":{"type":"string","description":"Slugified identifier for the job offer"},"postedDate":{"type":"string","description":"Date when the job offer was posted"},"jobTitle":{"type":"string","description":"Title of the job position"},"jobDescription":{"type":"string","description":"Description of the job position"},"jobDescriptionMarkdown":{"type":"string","description":"Description of the job position in markdown format"},"workplace":{"type":"string","description":"Location of the workplace"},"company":{"type":"string","description":"Company that offers the job position"},"employmentTypes":{"type":"array","description":"List of possible employment types","items":{"type":"string","enum":["FULL_TIME","PART_TIME","PART_TIME_MINI_JOB","REMOTE_HOME_OFFICE","APPRENTICESHIP_TRAINING","INTERNSHIP","FREELANCER_PROJECT_WORK","DUAL_STUDY_WORKING_STUDENT"]}},"occupationFields":{"type":"array","description":"Occupational fields of job position","items":{"type":"string"}},"industries":{"type":"array","description":"List of Industries of the job position","items":{"type":"string"}},"requiredDegree":{"type":"string","description":"Required degree for the job position","enum":["DOCTOR_PHD","MASTER","BACHELOR","A_LEVEL","VOCATIONAL_TRAINING","OTHER"]},"jobExperienceYears":{"type":"string","description":"Years of job experience required"},"newLanguageSkills":{"type":"array","description":"List of language skills required","items":{"type":"string"}},"requiredKnowledge":{"type":"string","description":"Knowledge required for the job position"},"urlToRecruiting":{"type":"string","description":"URL to the recruiting page"},"salary":{"type":"number","format":"double","description":"Salary offered for the job position"},"currency":{"type":"string","description":"Currency type of the salary","enum":["EUR","DOLLAR"]},"employerId":{"type":"integer","format":"int64","description":"Id of the Job Offer Employer"},"salaryTimePeriodType":{"type":"string","description":"Time period type of the salary","enum":["YEAR","MONTH","HOUR","ONE_TIME"]},"longitude":{"type":"number","format":"double","description":"Longitude coordinate of the job location"},"latitude":{"type":"number","format":"double","description":"Latitude coordinate of the job location"},"postalCode":{"type":"string","description":"Postal code of the job location"},"country":{"type":"string","description":"Country of the job location"},"categories":{"type":"array","deprecated":true,"description":"List of categories of the job","items":{"type":"string","deprecated":true}},"topJob":{"type":"boolean","description":"Top job indicator"},"jobExpiringDate":{"type":"string","description":"Job expiring date"},"logo":{"type":"string","description":"Job logo"},"customData":{"type":"object","additionalProperties":{},"description":"Custom data specific to feed providers"},"adminLevels":{"type":"array","description":"Administrative levels from OpenStreetMap (countries, states, counties, etc.)","items":{"$ref":"#/components/schemas/AdminLevel"}},"startDate":{"type":"string","description":"Date when the job offer starts"},"startDateType":{"type":"string","description":"If there is a start date, or if the job is meant to start ASAP"},"displayWorkplace":{"type":"string","description":"Locations where the job offer is available"},"languageSkills":{"type":"array","items":{"type":"string"},"writeOnly":true}},"required":["externalId","id","jobTitle"]},"SearchResponse":{"type":"object","properties":{"jobOffers":{"type":"array","description":"List of job offers","items":{"$ref":"#/components/schemas/JobOfferDto"}},"total":{"type":"integer","format":"int32","description":"Total possible job offers with selected filter criteria"}}}}}}