{"source":"stillinger","operation":"get_recent_jobs","description":"Job vacancies posted or changed at/after a date, from NAV's stillingsfeed. Signature: get_recent_jobs(since: string, optional, default None; keyword: string, optional, default None; municipality: string, optional, default None; active_only: yes/no, optional, default True; max_results: integer, optional, default 50; max_pages: integer, pages, optional, default 20; limit: integer, items, optional, default 25; offset: integer, items, optional, default 0).","signature":"get_recent_jobs(since: string, optional, default None; keyword: string, optional, default None; municipality: string, optional, default None; active_only: yes/no, optional, default True; max_results: integer, optional, default 50; max_pages: integer, pages, optional, default 20; limit: integer, items, optional, default 25; offset: integer, items, optional, default 0)","parameters":[{"name":"since","type":"string","schema":{"anyOf":[{"type":"string"},{"type":"null"}]},"required":false,"default":null,"description":"ISO date or datetime (UTC), e.g. \"2026-07-01\" or \"2026-07-01T08:00:00Z\". Default: 24 hours ago. Earlier dates cover more but walk more pages (see max_pages). A `since` in the future returns nothing.","unit":null},{"name":"keyword","type":"string","schema":{"anyOf":[{"type":"string"},{"type":"null"}]},"required":false,"default":null,"description":"Case-insensitive substring filter on job title and employer.","unit":null},{"name":"municipality","type":"string","schema":{"anyOf":[{"type":"string"},{"type":"null"}]},"required":false,"default":null,"description":"Case-insensitive substring filter on the ad's municipality (e.g. \"OSLO\", \"Bergen\").","unit":null},{"name":"active_only","type":"boolean","schema":{"type":"boolean"},"required":false,"default":true,"description":"If True (default), return only ads whose latest state is ACTIVE. False also includes ads that have since gone INACTIVE.","unit":null},{"name":"max_results","type":"integer","schema":{"type":"integer"},"required":false,"default":50,"description":"Cap on returned ads, 1-200 (default 50). Newest first.","unit":null},{"name":"max_pages","type":"integer","schema":{"type":"integer"},"required":false,"default":20,"description":"Safety cap on feed pages walked, 1-100 (default 20). Each page is up to 1000 events. If hit before reaching the newest page, `truncated` is True and the newest ads may be missing; narrow `since` toward now or raise this. Unit: pages.","unit":"pages"},{"name":"limit","type":"integer","schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"display_type":"integer","required":false,"default":25,"description":"Maximum list items returned by the gateway (default 25, maximum 100).","unit":"items"},{"name":"offset","type":"integer","schema":{"type":"integer","minimum":0,"default":0},"display_type":"integer","required":false,"default":0,"description":"Number of list items to skip before returning the page.","unit":"items"}],"json_get_url_template":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_recent_jobs?since={since}&keyword={keyword}&municipality={municipality}&active_only=true&max_results=50&max_pages=20&limit=25&offset=0","schema_scope":"#/data in the successful operation envelope","response_schema":{"type":"object","properties":{"since":{"type":"string"},"pages_scanned":{"type":"integer"},"unique_ads_scanned":{"type":"integer"},"match_count":{"type":"integer"},"returned":{"type":"integer"},"truncated":{"type":"boolean"},"jobs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":["string","null"]},"employer":{"type":["string","null"]},"municipal":{"type":["string","null"]},"status":{"type":["string","null"]},"modified":{"type":["string","null"],"format":"date-time"},"link":{"type":["string","null"],"format":"uri"}},"additionalProperties":false,"required":["id"]}},"note":{"type":["string","null"]}},"additionalProperties":false,"required":["since","match_count","returned","jobs"]},"response_schema_status":{"status":"declared","codegen_safe":true,"description":"Maintained response contract."},"entity_projection":{"status":"projected","entity_types":["job","organization"],"description":"Recognized records and stable operation identifiers are projected; an empty array means the successful payload contained no recognizable entity."},"error_contract":{"scope":"top-level HTTP error response; never part of a success payload","schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object"}},"additionalProperties":false,"required":["code","message","retryable"]},"suggestion":{"type":"string"},"_meta":{"type":"object","properties":{"retrieved_at":{"type":"string","format":"date-time"},"language":{"type":"string","const":"en"},"content_languages":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object"}}},"required":["retrieved_at","language","content_languages","sources"]},"_links":{"type":"object","properties":{"self":{"type":"string","format":"uri"},"api_index":{"type":"string","format":"uri"},"feedback":{"type":"string","format":"uri"}},"required":["self","api_index","feedback"],"additionalProperties":false}},"additionalProperties":false,"required":["error","suggestion","_meta","_links"]},"statuses":{"400":{"codes":["MISSING_PARAMETER","INVALID_PARAMETER","INVALID_REQUEST"],"retryable":false},"404":{"codes":["SOURCE_NOT_FOUND","OPERATION_NOT_FOUND","ENTITY_NOT_FOUND"],"retryable":false},"429":{"codes":["RATE_LIMITED","GATEWAY_RATE_LIMITED"],"retryable":true},"502":{"codes":["SOURCE_UNAVAILABLE"],"retryable":true},"500":{"codes":["INTERNAL_ERROR"],"retryable":true}}},"_links":{"self":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_recent_jobs/schema","operation":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_recent_jobs","source":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger","feedback":"https://allemannsdata.com/wiki/api/v1/feedback"},"output_fields":["since","pages_scanned","unique_ads_scanned","match_count","returned","truncated","jobs","jobs[].id","jobs[].title","jobs[].employer","jobs[].municipal","jobs[].status","jobs[].modified","jobs[].link","note"],"output_fields_truncated":false,"canonical_field_aliases":{"identifier":["jobs[].id"],"name":["jobs[].title"]},"response_example":{"source":"stillinger","operation":"get_recent_jobs","parameters":{"since":"example value","keyword":"example value","municipality":"example value","active_only":true,"max_results":50,"max_pages":20},"data":{"since":"example value","pages_scanned":1,"unique_ads_scanned":1,"match_count":1,"returned":1,"truncated":true,"jobs":[{"id":"example-id","title":"Example","employer":"example value","municipal":"example value","status":"example value","modified":"2026-01-15T12:00:00Z","link":"https://example.invalid/resource"}],"note":"example value"},"entities":[],"_meta":{"retrieved_at":"2026-01-15T12:00:00Z","language":"en","content_languages":["en"],"sources":[{"id":"stillinger","name":"Open positions","description":"Recently published jobs and details from NAV's open labour-market data.","cache_ttl_seconds":60}]},"_provenance":{"data":{"source":"stillinger","source_api":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger"},"entities":{"source":"stillinger","source_api":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger","derived_from":"#/data","description":"Normalized projection of data."}},"_links":{"self":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger/get_recent_jobs","source":"https://allemannsdata.com/wiki/api/v1/kilder/stillinger","wiki":"https://allemannsdata.com/wiki/kilder/stillinger/get_recent_jobs/","feedback":"https://allemannsdata.com/wiki/api/v1/feedback"}}}
