Feed algorithm used to create custom job feeds (similar to Instagram) for users based on their preferences and a batch of jobs.
Important
As of September 14, 2023, this project has been put on hold and will probably not be worked on in the near future.
Note
This project is unrelated to the current embloy.com service and consists of deprecated code from a prior project.
Note
If you are looking for concrete HTTPs-Request examples, go to requests/feed.http.
This repository contains the code for the FeedGenerator-API that was used for an early test version by embloy.com to generate a feed from a set of jobs that matches with the user's preferences.
This API supports TLS (Transport Layer Security) Encryption:
The cert.pem file contains the TLS certificate that is issued to your domain by a Certificate Authority (CA). This certificate is used to authenticate your server to clients, proving that the server is indeed the server that the client is trying to communicate with. The certificate contains information such as the domain name it's issued for, the issuer's information, and the public key.
The key.pem file contains the private key that corresponds to the public key in the cert.pem file. This key is used to encrypt the data that is being sent between the client and the server. Both files are required for TLS encryption to work properly, and should be kept secure as they grant access to sensitive information.
For testing purposes load TLS keys to create a self-signed temporary cert:
$ openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365 -subj '/CN=localhost'
Test if your connection is active.
GET /
Request to load a feed from a "slice" to match the user's preferences.
POST /feed
Data parameters
- username REQUIRED
- password REQUIRED
Request body
{
"pref": {
"job_types": {
"1": 15,
"2": 5,
"3": 1,
"5": 15
},
"salary_range": [
80000.0,
120000.0
],
"spontaneity": [
"2023-03-17T12:00:00Z",
"2023-03-17T12:00:00Z"
]
},
"slice": [
{
"job_id": 4024,
"job_type": "Marketing",
"job_type_value": 12,
"job_status": 0,
"status": "public",
"user_id": 9,
"duration": 0,
"code_lang": "RE",
"title": "Administration Designer",
"position": "Analyst",
"description": {
"id": 67,
"name": "description",
"body": "<div>This is a great job!</div>",
"record_type": "Job",
"record_id": 67,
"created_at": "2023-09-12T19:45:54.684Z",
"updated_at": "2023-09-12T19:45:54.684Z"
},
"key_skills": "Proactive",
"salary": 60000.0,
"currency": "Vatu",
"image_url": "https://picsum.photos/200/300?random=0",
"start_slot": "2023-04-19T15:39:19.780Z",
"longitude": 98011.26,
"latitude": 58804.27,
"country_code": "TL",
"postal_code": "07683-5317",
"city": "Joanland",
"address": "31836 Bartoletti Points",
"view_count": 500,
"created_at": "2023-04-15T15:39:21.151Z",
"updated_at": "2023-04-15T15:39:21.151Z",
"applications_count": 100,
"employer_rating": 4,
"job_notifications": "1",
"boost": 48,
"job_value": null,
"euro_salary": 0,
"relevance_score": 0.0,
"cv_required": true,
"allowed_cv_format": [".pdf", ".xml", ".txt", ".docx"]
},
{
"job_id": 4025,
"job_type": "Marketing",
"job_type_value": 12,
"job_status": 0,
"status": "public",
"user_id": 9,
"duration": 0,
"code_lang": "RE",
"title": "Administration Designer",
"position": "Analyst",
"description": {
"id": 67,
"name": "description",
"body": "<div>This is a great job!</div>",
"record_type": "Job",
"record_id": 67,
"created_at": "2023-09-12T19:45:54.684Z",
"updated_at": "2023-09-12T19:45:54.684Z"
},
"key_skills": "Proactive",
"salary": 60000.0,
"currency": "Vatu",
"image_url": "https://picsum.photos/200/300?random=0",
"start_slot": "2023-04-19T15:39:19.780Z",
"longitude": 98011.26,
"latitude": 58804.27,
"country_code": "TL",
"postal_code": "07683-5317",
"city": "Joanland",
"address": "31836 Bartoletti Points",
"view_count": 500,
"created_at": "2023-04-15T15:39:21.151Z",
"updated_at": "2023-04-15T15:39:21.151Z",
"applications_count": 100,
"employer_rating": 4,
"job_notifications": "1",
"boost": 48,
"job_value": null,
"euro_salary": 0,
"relevance_score": 0.0,
"cv_required": true,
"allowed_cv_format": [".pdf", ".xml", ".txt", ".docx"]
}
]
}
Response body
200: Ok
[
{
"job_id": 4024,
"job_type": "Marketing",
"job_type_value": 12,
"job_status": 0,
"status": "public",
"user_id": 9,
"duration": 0,
"code_lang": "RE",
"title": "Administration Designer",
"position": "Analyst",
"description": {
"id": 67,
"name": "description",
"body": "<div>This is a great job!</div>",
"record_type": "Job",
"record_id": 67,
"created_at": "2023-09-12T19:45:54.684Z",
"updated_at": "2023-09-12T19:45:54.684Z"
},
"key_skills": "Proactive",
"salary": 60000.0,
"currency": "Vatu",
"image_url": "https://picsum.photos/200/300?random=0",
"start_slot": "2023-04-19T15:39:19.780Z",
"longitude": 98011.26,
"latitude": 58804.27,
"country_code": "TL",
"postal_code": "07683-5317",
"city": "Joanland",
"address": "31836 Bartoletti Points",
"view_count": 500,
"created_at": "2023-04-15T15:39:21.151Z",
"updated_at": "2023-04-15T15:39:21.151Z",
"applications_count": 100,
"employer_rating": 4,
"job_notifications": "1",
"boost": 48,
"job_value": null,
"euro_salary": 0,
"relevance_score": 0.0,
"cv_required": true,
"allowed_cv_format": [".pdf", ".xml", ".txt", ".docx"]
}
]
400: Bad Request
NOT IMPLEMENTED YET
401: Unauthorized
500: Internal Server Error
NOT IMPLEMENTED YET
© Carlo Bortolan, Jan Hummel
Carlo Bortolan · GitHub @carlobortolan · contact via @[email protected]
Jan Hummel · GitHub @github4touchdouble · contact via @[email protected]