### Paginated Config Response Example Source: https://partner.teamtailor.com/job_boards/index Example JSON response for a paginated config request to the GET /config endpoint. This demonstrates how multiple pages of form configuration are structured, including 'page' and 'hasNextPage' attributes. ```JSON { "config": { "1": [], "2": [], "3": [], "page": 1, "hasNextPage": true } } ``` -------------------------------- ### GET Config Endpoint Example Source: https://partner.teamtailor.com/job_boards/index Example of an HTTP GET request to the /config endpoint, used to retrieve configuration options for a job ad form. This endpoint supports pagination and job-specific configurations. ```HTTP GET ${BASE_URL}/config?page=1&job_id=23&user_id=789 HTTP/1.1 ``` -------------------------------- ### Example Config Response Source: https://partner.teamtailor.com/job_boards/index Example JSON response for the GET /config endpoint, illustrating the structure of configuration options for a job ad form. It includes field definitions, pagination details, and supported field types. ```JSON { "config": { "1": [ { "id": "experience-level", "label": "Experience level", "placeholder": "Experience level", "type": "select", "options": [ { "id": 1, "label": "Junior" }, { "id": 2, "label": "Senior" }, ] } ], "2": [ { "id": "degree-level", "label": "Required degree level", "placeholder": "Choose degree level", "type": "select", "options": [ { "id": 1, "label": "Bachelor's Degree" }, { "id": 2, "label": "Master's Degree" }, ] }, ], "page": 1, "hasNextPage": true } } ``` -------------------------------- ### API Versioning Example Source: https://partner.teamtailor.com/job_boards/index This example demonstrates how to specify the API version for a request. It uses the `X-Api-Version` header to ensure compatibility when making API calls. The current version is '20180828'. ```http PUT https://api.teamtailor.com/channel/v1/promotions/1 HTTP/1.1 X-Api-Version : 20180828 ``` -------------------------------- ### Email Integration Job Data Example Source: https://partner.teamtailor.com/job_boards/index This example demonstrates the structure of an email notification containing job ad data, including details about the job, locations, recruiter, department, company, and promotion. It shows various fields that can be included in these email alerts. ```text Channel: Channel name Reference number: teamtailor-23 Duration: 30 Publish date: 2021-03-24T00:00:00+01:00 End date: 2021-03-31T00:00:00+02:00 Remote status: none Employment type: none Employment level: none Job offer url: https://career.teamtailor.localhost/jobs/407c2b91-f06e-475f-9e51-72a62091abce Job apply url: https://career.teamtailor.localhost/jobs/407c2b91-f06e-475f-9e51-72a62091abce/applications/new?promotion=abc Cover image url: https://teamtailor-production.s3.eu-west-1.amazonaws.com/image_uploads/cd24c21b-db10-4cf2-aabd-4a6f4ef1cf06/original.png Price: 400 EUR Locations: - country: Sweden - city: Stockholm - postalcode: 118 46 - address: Sankt Paulsgatan 7B - region: Västra Götaland County Recruiter data -------------- - name: Hammes Grud - email: email1@example.com - phone: 123456 Department data: -------------- - name: Marketing - role name: Growth Marketing Manager Company data ------------ Company name: Test company Company description: Cupio barba articulus.
Spes deleniti cubicularis. Company logotype: https://teamtailor-production.s3.eu-west-1.amazonaws.com/image_uploads/cd24c21b-db10-4cf2-aabd-4a6f4ef1cf06/original.png Company headquarters: - country: Sweden - city: Stockholm - postalcode: 118 46 - address: Sankt Paulsgatan 7B - countrycode: SE - region: Västra Götaland County Promotion data -------------- Title: Marketing Coordinator Description:
Depereo decumbo defungo. Ubi stipes vel. Cupio barba articulus.
Spes deleniti cubicularis. Admitto aut contra. Aspernatur sperno cuppedia.
Vado concedo ager. Usitas coaegresco autem. Suscipio thorax aurum.
Vero et veniam. Alioqui cometes apto. Truculenter tollo quos.
Decimus sunt sollers. Cotidie celo voluntarius. Centum triduana deleo.
Denego quod dedico. Conservo bos illo. Molestiae valetudo avaritia.
Verto et absum. Culpa corroboro atrocitas. Clam apud voluptatibus.
Verbum verto sit. Coadunatio centum animi. Succedo adversus inventore.
Rem est uberrime. Voluptatem theologus inflammatio. Crastinus tergum civitas.
Deputo summopere eveniet. Vulgus timidus nisi. Defaeco verto natus.
Quas colligo cresco. Praesentium colo chirographum. Torqueo celebrer concedo.
Compono statua vaco. Volo adsum veritatis. Aufero bene sursum.
Viriliter ratione venia. Uter sit quia. Accommodo varietas socius.
``` -------------------------------- ### Example Teamtailor XML Job Feed Source: https://partner.teamtailor.com/job_boards/index This is an example of the XML feed provided by Teamtailor for job postings. It includes details about the publisher, company, job description, location, and custom fields. Note that the salary field is optional in this feed. ```xmlSpes deleniti cubicularis. ]]>
Spes deleniti cubicularis.", "url": "https://career.teamtailor.localhost", "uuid": "ZPXFT2VMtr8", "subdomain": "career", "logotype": "https://example.com/original.jpg", "headquarters": { "address": "Sankt Paulsgatan 7B", "city": "Stockholm", "country": "Sweden", "country-code": "SE", "zip": "118 46" } }, "job": { "title": "Marketing Coordinator", "body": "Depereo decumbo defungo. Ubi stipes vel. Cupio barba articulus.", "remote-status": "none", "employment-type": "none", "employment-level": "none", "url": "https://career.teamtailor.localhost/jobs/23-marketing-coordinator", "apply-url": "https://career.teamtailor.localhost/jobs/23-marketing-coordinator/applications/new?promotion=2-monster-finland", "cover-image-url": "https://example.com/original.jpg", "pitch": "Coadunatio centum animi. Succedo adversus inventore. Rem est uberrime.", "start-date": "2021-03-24T00:00:00+01:00", "end-date": "2021-03-31T00:00:00+02:00", "created-date": "2021-03-02T19:18:22+01:00", "apply-button-text": "Apply now", "department": { "name": "Business Marketing" }, "role": { "name": "Marketer" }, "recruiter": { "name": "Hammes Grud", "email": "email1@example.com", "phone": "123456" }, "locations": [ { "address": "Sankt Paulsgatan 7B", "city": "Stockholm", "country": "Sweden", "country-code": "SE", "zip": "118 46" }, { "address": "Sankt Paulsgatan 7B", "city": "Stockholm", "country": "Sweden", "country-code": "SE", "zip": "118 46" } ], "salary": { "min-salary": "500.0", "max-salary": "800.0", "salary-currency": "EUR", "salary-time-unit": "monthly" }, "custom-fields": [ { "id": 3, "name": 'Custom date', "value": '2023-06-14' }, { "id": 9, "name": 'Custom bool', "value": true }, { "id": 8, "name": 'Custom multiselect', "value": [ 'Multiselect option 3', 'Multiselect option 1' ] }, { "id": 7, "name": 'Custom select', "value": [ 'Option 2' ] }, { "id": 6, "name": 'Custom number', "value": 44 }, { "id": 5, "name": 'Custom string', "value": 'String' } ] } } ``` -------------------------------- ### POST /webhook Source: https://partner.teamtailor.com/job_boards/index Handles the creation of a new job ad in Teamtailor by receiving webhook notifications. ```APIDOC ## POST ${BASE_URL}/webhook ### Description Handles the creation of a new job ad in Teamtailor by receiving webhook notifications containing the job ad data. ### Method POST ### Endpoint ${BASE_URL}/webhook ### Parameters #### Request Body - **job_ad_data** (object) - Required - JSON object containing the details of the newly created job ad. ### Request Example ```json { "event": "job.created", "data": { "id": "job123", "title": "Software Engineer", "description": "Develop amazing software." } } ``` ### Response #### Success Response (200) - **message** (string) - Confirmation message indicating successful processing of the webhook. #### Response Example ```json { "message": "Job ad created successfully" } ``` ``` -------------------------------- ### Salary Object Attributes Source: https://partner.teamtailor.com/job_boards/index Details of the attributes available within a salary object. ```APIDOC ## Salary Object ### Description Details the attributes of a salary associated with a job. ### Attributes - **min-salary** (number) - Minimum salary for the job if range otherwise offered salary amount - **max-salary** (number) - Maximum salary for the job - **salary-currency** (string) - Salary currency - **salary-time-unit** (string) - Salary time unit. One of: `monthly`, `hourly`, `yearly`, `daily` ``` -------------------------------- ### Promotion Object Structure (JSON) Source: https://partner.teamtailor.com/job_boards/index This JSON object represents a promotion within the Teamtailor system. It includes an ID, type, links, and attributes such as the external URL for the job ad. This structure is fundamental for understanding promotion data. ```json { "data": { "id": "1", "type": "promotions", "links": { "self": "https://api.teamtailor.localhost/channel/v1/promotions/1" }, "attributes": { "external-url": "http://www.example.com" } } } ``` -------------------------------- ### Recruiter Object Attributes Source: https://partner.teamtailor.com/job_boards/index Details of the attributes available within a recruiter object. ```APIDOC ## Recruiter Object ### Description Details the attributes of a recruiter associated with a job. ### Attributes - **name** (string) - Recruiter name - **email** (string) - Recruiter email - **phone** (string) - Recruiter phone ``` -------------------------------- ### Node.js Middleware for JWT Authentication Source: https://partner.teamtailor.com/job_boards/index This Node.js middleware authenticates incoming requests using a JWT token extracted from the Authorization header. It verifies the token against a predefined API key and attaches the decoded payload to the request object. If authentication fails, it handles configuration-related errors by returning a specific JSON response, otherwise, it passes the error to the next middleware. ```javascript module.exports = async (req, res, next) => { const [JWTtoken] = req.headers.authorization.split('Bearer '); try { const decoded = JWT.verify(JWTtoken, TT_JOB_BOARD_API_KEY); req.auth = decoded; return next(); } catch (error) { if (req.path.includes('config')) { return res.json({ config: { fields: [ { type: 'error', message: 'Wrong authorization token', }, ], }, }); } return next(error); } }; ``` -------------------------------- ### Promotions - Update Promotion Source: https://partner.teamtailor.com/job_boards/index Updates an existing promotion associated with a job ad. This allows for modification of promotion details. ```APIDOC ## PUT /promotions/{promotion_id} ### Description Updates an existing promotion associated with a job ad. This allows for modification of promotion details. ### Method PUT ### Endpoint /promotions/{promotion_id} ### Parameters #### Path Parameters - **promotion_id** (string) - Required - The unique identifier of the promotion to update. #### Query Parameters None #### Request Body - **details** (object) - Optional - The updated promotion details. - **status** (string) - Optional - The new status of the promotion (e.g., 'active', 'inactive'). ### Request Example ```json { "details": { "status": "inactive" } } ``` ### Response #### Success Response (200) - **promotion** (object) - The updated promotion object. - **id** (string) - The promotion ID. - **job_id** (string) - The associated job ID. - **status** (string) - The current status of the promotion. #### Response Example ```json { "promotion": { "id": "promo_xyz789", "job_id": "job_abc123", "status": "inactive" } } ``` ```