xing-api-client
Version:
A client library for interacting with the Xing API
1,084 lines (1,059 loc) • 35.4 kB
text/typescript
/**
* Enumeration for different status types.
*/
declare enum EXingOrderStatus {
/**
* Represents an active state.
*/
ACTIVE = "active",
/**
* Represents a state that has not been started.
*/
UNSTARTED = "unstarted",
/**
* Represents an expired state.
*/
EXPIRED = "expired"
}
/**
* Represents a paginated response structure for XING E-Recruiting API.
*
* @template T - The type of the items in the collection.
*/
interface XingERecruitingPaginatedResponse<T> {
/**
* The total number of items in the response.
*
* @example 150
*/
total: number;
/**
* The current page number of the paginated response.
*
* @example 1
*/
current_page: number;
/**
* The total number of pages available.
*
* @example 10
*/
total_pages: number;
/**
* Collection of items containing detailed information.
*/
collection: Array<T>;
}
/**
* Represents the request structure for fetching Xing orders.
*/
interface XingGetOrdersParameters {
/**
* A list of order IDs to filter the results for.
* If not provided, all orders will be returned.
*
* @example [1, 2, 3]
*/
ids?: Array<number>;
/**
* The current page index for pagination.
* Defaults to 1 if not specified.
* Page index must be a positive integer.
*
* @example 1
*/
page?: number;
/**
* Filters orders by their current status.
* Available options: EXingOrderStatus.ACTIVE, EXingOrderStatus.UNSTARTED, EXingOrderStatus.EXPIRED.
*
* @example EXingOrderStatus.ACTIVE
*/
status?: EXingOrderStatus;
}
/**
* Represents an order in Xing.
*/
interface XingOrder {
/**
* Unique identifier for the order.
*
* @example 12345
*/
order_id: number;
/**
* Identifier of the organization associated with the order.
*
* @example 67890
*/
organization_id: number;
/**
* Type of the order.
* @example "Campus"
*/
kind: string;
/**
* Total number of postings allowed for this order.
* @example 100
*/
posting_amount_total: number;
/**
* Number of postings that have already been used.
*
* @example 25
*/
posting_amount_used: number;
/**
* The duration of the posting in days.
*
* @example 30
*/
posting_duration: number;
/**
* Start date of the order in YYYY-MM-DD format.
*
* @example "2023-01-01"
*/
start_date: string;
/**
* End date of the order in YYYY-MM-DD format.
*
* @example "2023-12-31"
*/
end_date: string;
/**
* Current status of the order (e.g., active).
*
* @example EXingOrderStatus.EXPIRED
* @example "active"
*/
status: EXingOrderStatus;
}
/**
* Enum representing the states of a job.
*/
declare enum EXingJobState {
/** The job has been created but is not yet active. */
CREATED = "created",
/** The job is currently active and operational. */
ACTIVE = "active",
/** The job has been deactivated and is temporarily inactive. */
DEACTIVATED = "deactivated",
/** The job has been archived for historical records. */
ARCHIVED = "archived",
/** The job has been permanently deleted. */
DELETED = "deleted"
}
/**
* Enum representing supported currencies.
*
* @enum {string}
* @property {string} EUR - Euro currency.
* @property {string} USD - US Dollar currency.
* @property {string} GBP - British Pound currency.
* @property {string} CHF - Swiss Franc currency.
*
* @example
* Currency.EUR // "EUR"
* Currency.USD // "USD"
* Currency.GBP // "GBP"
* Currency.CHF // "CHF"
*/
declare enum EXingCurrency {
/** Euro currency. */
EUR = "EUR",
/** US Dollar currency. */
USD = "USD",
/** British Pound currency. */
GBP = "GBP",
/** Swiss Franc currency. */
CHF = "CHF"
}
/**
* Enum representing job type classifications.
*
* @enum {string}
* @property {string} FULL_TIME - Full-time job.
* @property {string} PART_TIME - Part-time job.
* @property {string} INTERNSHIP - Internship position.
* @property {string} FREELANCE - Freelance work.
* @property {string} TEMPORARY - Temporary employment.
* @property {string} TRAINING - Training or apprenticeship position.
*
* @example
* EXingJobType.FULL_TIME // "FULL_TIME"
* EXingJobType.INTERNSHIP // "INTERNSHIP"
* EXingJobType.TRAINING // "TRAINING"
*/
declare enum EXingJobType {
/** Full-time job. */
FULL_TIME = "FULL_TIME",
/** Part-time job. */
PART_TIME = "PART_TIME",
/** Internship position. */
INTERNSHIP = "INTERNSHIP",
/** Freelance work. */
FREELANCE = "FREELANCE",
/** Temporary employment. */
TEMPORARY = "TEMPORARY",
/** Training or apprenticeship position. */
TRAINING = "TRAINING"
}
/**
* Career level classification
*/
declare enum EXingJobLevel {
/** Represents students or interns */
STUDENT = "JOBLEVEL_1",
/** Represents entry-level positions */
ENTRY = "JOBLEVEL_2",
/** Represents experienced professionals */
PROFESSIONAL = "JOBLEVEL_3",
/** Represents managerial roles (Manager/Supervisor) */
MANAGER = "JOBLEVEL_4",
/** Represents executive roles (VP, SVP, etc.) */
EXECUTIVE = "JOBLEVEL_5",
/** Represents senior executive roles (CEO, CFO, President) */
SENIOR_EXECUTIVE = "JOBLEVEL_6"
}
/**
* Enum representing the point of contact type for a job posting.
*
* @enum {string}
* @property {string} COMPANY - The company is the point of contact.
* @property {string} USER - A specific user is the point of contact.
* @property {string} NONE - No specific point of contact is set.
*
* @example
* EXingJobPointOfContactType.COMPANY // "company"
* EXingJobPointOfContactType.USER // "user"
* EXingJobPointOfContactType.NONE // "none"
*/
declare enum EXingJobPointOfContactType {
/** The company is the point of contact. */
COMPANY = "company",
/** A specific user is the point of contact. */
USER = "user",
/** No specific point of contact is set. */
NONE = "none"
}
/**
* Application method options
*/
declare enum EXingReplySetting {
/** Applications via XING messaging */
XING_MESSAGING = "xing_messaging",
/** Applications via email */
EMAIL = "email",
/** Applications via external URL */
URL = "url",
/** XING Apply platform */
XING_APPLY = "xing_apply"
}
/**
* Enum representing the different user roles associated with a job posting.
*
* @enum {string}
* @property {string} HR_CONSULTANT - The user is an HR consultant.
* @property {string} HR_DEPARTMENT - The user is part of the HR department.
* @property {string} MANAGER - The user is a hiring manager.
* @property {string} EXTERNAL_RECRUITER - The user is an external recruiter.
* @property {string} EMPLOYEE - The user is an employee.
*
* @example
* EXingJobUserRole.HR_CONSULTANT // "HR_CONSULTANT"
* EXingJobUserRole.HR_DEPARTMENT // "HR_DEPARTMENT"
* EXingJobUserRole.MANAGER // "MANAGER"
*/
declare enum EXingJobUserRole {
/** The user is an HR consultant. */
HR_CONSULTANT = "HR_CONSULTANT",
/** The user is part of the HR department. */
HR_DEPARTMENT = "HR_DEPARTMENT",
/** The user is a hiring manager. */
MANAGER = "MANAGER",
/** The user is an external recruiter. */
EXTERNAL_RECRUITER = "EXTERNAL_RECRUITER",
/** The user is an employee. */
EMPLOYEE = "EMPLOYEE"
}
/**
* Represents the request structure for fetching Xing job postings.
*/
interface XingGetPostingsParameters {
/**
* A list of order IDs to filter the results for.
* If not provided, all job postings will be returned.
*
* Example: [1, 2, 3]
*/
ids?: Array<number>;
/**
* The current page index for pagination.
* Defaults to 1 if not specified.
* Must be a positive integer.
*
* Example: 1
*/
page?: number;
}
/**
* Interface representing the content of a job description section.
*
* @property {string} [title] - The title of the job description section.
* * Optional
* * Maximum 255 characters
* * HTML is not allowed
*
* @property {string} content - The main content of the job description section.
* * Required
* * Maximum 5,000 characters
* * HTML is allowed
*
* @example
* const jobDescription: XingJobDescriptionSectionContent = {
* title: "Requirements",
* content: "Candidates must have a minimum of 5 years experience."
* };
*/
interface XingJobDescriptionSectionContent {
/** Optional title of the section (max 255 characters, no HTML). */
title?: string;
/** Main content of the section (max 5,000 characters, HTML allowed). */
content: string;
}
/**
* Interface representing the structure of a detailed job description template.
*
* @property {string} [title_color] - Hexadecimal color code for the title. (Optional)
* @property {string} [header_image] - URL of the header image. (Optional)
* @property {string} [footer_image] - URL of the footer image. (Optional)
*
* @property {XingJobDescriptionSectionContent} [company_description] - Section describing the company. (Optional)
* @property {XingJobDescriptionSectionContent} [responsibility] - Section outlining responsibilities. (Optional)
* @property {XingJobDescriptionSectionContent} [skills] - Section listing skills required. (Optional)
* @property {XingJobDescriptionSectionContent} [we_offer] - Section describing the offerings of the company. (Optional)
* @property {XingJobDescriptionSectionContent} [contact_info] - Section containing contact information. (Optional)
* @property {string} [generic_description] - Generic description with a maximum of 29,000 characters. (Optional)
*
* @property {string} [video_youtube] - YouTube video URL for integration. (Optional)
* @property {string} [video_vimeo] - Vimeo video URL for integration. (Optional)
*
* @property {string} [social_website] - Company website URL. (Optional)
* @property {string} [social_facebook] - Facebook profile URL. (Optional)
* @property {string} [social_twitter] - Twitter profile URL. (Optional)
* @property {string} [social_youtube] - YouTube profile URL. (Optional)
* @property {string} [social_xing] - Xing profile URL. (Optional)
* @property {string} [social_instagram] - Instagram profile URL. (Optional)
* @property {string} [social_pinterest] - Pinterest profile URL. (Optional)
* @property {string} [social_tiktok] - TikTok profile URL. (Optional)
* @property {string} [social_kununu] - Kununu profile URL. (Optional)
*
* @example
* const jobTemplate: XingJobDescriptionTemplate = {
* title_color: "#FF5733",
* header_image: "https://example.com/header.jpg",
* company_description: {
* title: "About Us",
* content: "We are a leading company in the tech industry."
* },
* video_youtube: "https://youtube.com/exampleVideo",
* social_website: "https://companywebsite.com"
* };
*/
interface XingJobDescriptionTemplate {
/** Hexadecimal color code for the title (e.g., "#FF5733"). */
title_color?: string;
/** URL of the header image. */
header_image?: string;
/** URL of the footer image. */
footer_image?: string;
/** Section describing the company. */
company_description?: XingJobDescriptionSectionContent;
/** Section outlining the responsibilities. */
responsibility?: XingJobDescriptionSectionContent;
/** Section listing the required skills. */
skills?: XingJobDescriptionSectionContent;
/** Section describing what the company offers. */
we_offer?: XingJobDescriptionSectionContent;
/** Section containing contact information. */
contact_info?: XingJobDescriptionSectionContent;
/** Generic description with a limit of 29,000 characters. */
generic_description?: string;
/** YouTube video URL for embedding. */
video_youtube?: string;
/** Vimeo video URL for embedding. */
video_vimeo?: string;
/** URL to the company website. */
social_website?: string;
/** URL to the company's Facebook profile. */
social_facebook?: string;
/** URL to the company's Twitter profile. */
social_twitter?: string;
/** URL to the company's YouTube profile. */
social_youtube?: string;
/** URL to the company's Xing profile. */
social_xing?: string;
/** URL to the company's Instagram profile. */
social_instagram?: string;
/** URL to the company's Pinterest profile. */
social_pinterest?: string;
/** URL to the company's TikTok profile. */
social_tiktok?: string;
/** URL to the company's Kununu profile. */
social_kununu?: string;
}
/**
* Enum representing the remote work options available for a job posting.
*
* @enum {string}
* @property {string} FULLY_REMOTE - The job offers a fully remote option.
* @property {string} PARTIALLY_REMOTE - The job offers a mix of remote and on-site work.
* @property {string} NON_REMOTE - The job requires full-time on-site work.
*
* @example
* EXingRemoteOption.FULLY_REMOTE // "FULLY_REMOTE"
* EXingRemoteOption.HYBRID // "PARTIALLY_REMOTE"
* EXingRemoteOption.ON_SITE // "NON_REMOTE"
*/
declare enum EXingRemoteOption {
/** The job offers a fully remote option. */
FULLY_REMOTE = "FULLY_REMOTE",
/** The job offers a mix of remote and on-site work. */
PARTIALLY_REMOTE = "PARTIALLY_REMOTE",
/** The job requires full-time on-site work. */
NON_REMOTE = "NON_REMOTE"
}
/**
* Enum representing the intervals for specifying salary in a job posting.
*
* @enum {string}
* @property {string} HOUR - Salary is specified per hour.
* @property {string} DAY - Salary is specified per day.
* @property {string} WEEK - Salary is specified per week.
* @property {string} MONTH - Salary is specified per month.
* @property {string} YEAR - Salary is specified per year.
*
* @example
* SalaryInterval.HOUR // "HOUR"
* SalaryInterval.DAY // "DAY"
* SalaryInterval.WEEK // "WEEK"
* SalaryInterval.MONTH // "MONTH"
* SalaryInterval.YEAR // "YEAR"
*/
declare enum EXingJobSalaryInterval {
/** Salary is specified per hour. */
HOUR = "HOUR",
/** Salary is specified per day. */
DAY = "DAY",
/** Salary is specified per week. */
WEEK = "WEEK",
/** Salary is specified per month. */
MONTH = "MONTH",
/** Salary is specified per year. */
YEAR = "YEAR"
}
/**
* Enum representing the classification of students.
*
* @enum {string}
* @property {string} BACHELOR - Bachelor's degree student.
* @property {string} MASTER - Master's degree student.
* @property {string} PHD - Doctoral (PhD) degree student.
* @property {string} STUDENT - General student classification.
*
* @example
* StudentClassification.BACHELOR // "bachelor"
* StudentClassification.PHD // "phd"
*/
declare enum EXingStudentClassification {
/** Bachelor's degree student. */
BACHELOR = "bachelor",
/** Master's degree student. */
MASTER = "master",
/** Doctoral (PhD) degree student. */
PHD = "phd",
/** General student classification. */
STUDENT = "student"
}
/**
* Enum representing various job disciplines in the Xing platform.
* Each discipline is associated with a unique numeric code.
*/
declare enum EXingJobDiscipline {
/** Analysis and Statistics */
ANALYSIS_AND_STATISTICS = 1001,
/** Administration */
ADMINISTRATION = 1002,
/** Consulting */
CONSULTING = 1003,
/** Customer Service */
CUSTOMER_SERVICE = 1004,
/** Purchasing, Materials Management, and Logistics */
PURCHASING_MATERIALS_MANAGEMENT_AND_LOGISTICS = 1005,
/** Finance, Accounting, and Controlling */
FINANCE_ACCOUNTING_AND_CONTROLLING = 1006,
/** Teaching, Research and Development */
TEACHING_R_AND_D = 1007,
/** Health, Medical, and Social */
HEALTH_MEDICAL_AND_SOCIAL = 1008,
/** Graphic Design and Architecture */
GRAPHIC_DESIGN_AND_ARCHITECTURE = 1009,
/** Engineering and Technical */
ENGINEERING_AND_TECHNICAL = 1010,
/** IT and Software Development */
IT_AND_SOFTWARE_DEVELOPMENT = 1011,
/** Management and Corporate Development */
MANAGEMENT_AND_CORPORATE_DEVELOPMENT = 1012,
/** Marketing and Advertising */
MARKETING_AND_ADVERTISING = 1013,
/** Human Resources (HR) */
HR = 1014,
/** Public Relations and Journalism */
PR_AND_JOURNALISM = 1015,
/** Production and Manufacturing */
PRODUCTION_AND_MANUFACTURING = 1016,
/** Product Management */
PRODUCT_MANAGEMENT = 1017,
/** Project Management */
PROJECT_MANAGEMENT = 1018,
/** Process Planning and Quality Assurance (QA) */
PROCESS_PLANNING_AND_QA = 1019,
/** Law */
LAW = 1020,
/** Sales and Commerce */
SALES_AND_COMMERCE = 1021,
/** Other Disciplines */
OTHER_DISCIPLINES = 1022
}
declare enum EXingIndustry {
ARCHITECTURE_AND_PLANNING = 10000,
CIVIL_ENGINEERING = 10100,
CONSTRUCTION = 10200,
BUILDING_MATERIALS = 10300,
ARCHITECTURE = 10400,
GARDENING_AND_LANDSCAPING = 10500,
CONSUMER_GOODS_AND_TRADE = 20000,
FOOD = 20100,
BEVERAGE = 20200,
TOBACCO_PRODUCTS = 20300,
FASHION_AND_TEXTILES = 20400,
LUXURY_GOODS_AND_JEWELLERY = 20500,
FURNITURE_AND_WOOD_PRODUCTS = 20600,
STATIONERY = 20700,
COSMETICS_AND_TOILETRIES = 20800,
GLASS_AND_CERAMICS = 20900,
IMPORT_AND_EXPORT = 21000,
WHOLESALE = 21100,
RETAIL = 21200,
AUTOMOTIVE_AND_VEHICLE_MANUFACTURING = 30000,
AUTOMOTIVE_MOTORCYCLES_AND_BICYCLES = 30100,
SHIPBUILDING = 30200,
RAILWAY_LOCOS_AND_ROLLING_STOCK = 30300,
TRAFFIC_ENGINEERING = 30400,
AEROSPACE = 30500,
VEHICLE_RENTAL = 30600,
INDUSTRY_AND_MECHANICAL_ENGINEERING = 40000,
INSTRUMENTATION_AND_CONTROL_ENGINEERING = 40100,
SEMICONDUCTORS_AND_ELECTRONIC_COMPONENTS = 40200,
PRINTING = 40300,
COMPOSITES = 40400,
CHEMICALS = 40500,
MINERAL_OIL_PROCESSING = 40600,
METAL_AND_METALWORKING = 40700,
BIOTECH_AND_NANOTECH = 40800,
PLASTIC_AND_RUBBER_GOODS = 40900,
ARMAMENTS = 41000,
MECHANICAL_AND_INDUSTRIAL_ENGINEERING = 41100,
ELECTRICAL_ENGINEERING = 41200,
OPTICAL_INSTRUMENTS_AND_PHOTOGRAPHIC_EQUIPMENT = 41300,
PHARMACEUTICAL_AND_MEDICAL_TECHNOLOGY = 50000,
MEDICAL_TECHNOLOGY = 50100,
PHARMACEUTICAL_AND_MEDICINAL_PRODUCTS = 50200,
ENERGY_WATER_AND_ENVIRONMENT = 60000,
RENEWABLE_ENERGY = 60100,
ENERGY = 60200,
WATER_SUPPLY_AND_SANITATION = 60300,
WASTE_AND_RECYCLING = 60400,
ENVIRONMENTAL_PROTECTION = 60500,
TRANSPORT_AND_LOGISTICS = 70000,
PUBLIC_TRANSPORT = 70100,
RAIL = 70200,
SHIPPING = 70300,
AVIATION = 70400,
STORAGE = 70500,
POST_AND_FORWARDING = 70600,
TOURISM_AND_FOOD_SERVICE = 80000,
HOTEL = 80100,
RESTAURANT_AND_FOOD_SERVICE = 80200,
TRAVEL_AGENCIES = 80300,
LEISURE_FACILITIES = 80400,
INTERNET_AND_IT = 90000,
SOFTWARE = 90100,
IT_SERVICE_PROVIDER = 90200,
IT_SECURITY = 90300,
COMPUTER_NETWORKING = 90400,
COMPUTER_HARDWARE = 90500,
CONSUMER_ELECTRONICS = 90600,
INTERNET_AND_ONLINE_MEDIA = 90700,
COMPUTER_GAMES = 90800,
TELECOMMUNICATIONS = 100000,
MEDIA_AND_PUBLISHING = 110000,
INFORMATION_SERVICES = 110100,
BROADCAST_MEDIA = 110200,
PUBLISHING = 110300,
FILM_AND_MUSIC = 110400,
JOURNALISM = 110500,
TRANSLATION_AND_INTERPRETING = 110600,
COPYWRITING_AND_PROOFREADING = 110700,
BANKING_AND_FINANCIAL_SERVICES = 120000,
FINANCIAL_SERVICES = 120100,
BANKING = 120200,
INVESTMENT_BANKING = 120300,
VENTURE_CAPITAL_AND_PRIVATE_EQUITY = 120400,
INSURANCE = 130000,
REAL_ESTATE = 140000,
FACILITY_MANAGEMENT = 140100,
REAL_ESTATE_MANAGEMENT = 140200,
AUDITING_TAX_AND_LAW = 150000,
LEGAL_SERVICES = 150100,
AUDITING = 150200,
TAX_CONSULTING = 150300,
CONSULTING = 160000,
MARKETING_PR_AND_DESIGN = 170000,
MARKETING_AND_ADVERTISING = 170100,
MARKET_RESEARCH_AND_OPINION_POLLING = 170200,
GRAPHIC_DESIGN = 170300,
TRADE_FAIRS_EXHIBITIONS_AND_CONVENTIONS = 170400,
PR = 170500,
HR_SERVICES = 180000,
HR_SERVICES_AND_CONSULTING = 180100,
OUTSOURCING_AND_OFFSHORING = 180200,
CIVIL_SERVICE_ASSOCIATIONS_AND_INSTITUTIONS = 190000,
NON_PROFIT_ORGANISATIONS_AND_CHARITIES = 190100,
RELIGIOUS_INSTITUTIONS = 190200,
PUBLIC_ADMINISTRATION = 190300,
POLITICS_UNIONS_AND_ASSOCIATIONS = 190400,
DEFENCE_JUDICIARY_AND_POLICE = 190500,
INTERNATIONAL_AFFAIRS = 190600,
EDUCATION_AND_SCIENCE = 200000,
RESEARCH = 200100,
SCHOOLS_AND_CHILDCARE = 200200,
ACADEMIA = 200300,
CHILDCARE = 200400,
COACHING_AND_TRAINING = 200500,
E_LEARNING = 200600,
HEALTH_AND_SOCIAL = 210000,
HOSPITALS = 210100,
VETERINARY = 210200,
MEDICAL_PRACTICES = 210300,
ALTERNATIVE_MEDICINE = 210400,
PSYCHOLOGY_AND_PSYCHOTHERAPY = 210500,
MEDICAL_SERVICES = 210600,
NURSING_SECTOR = 210700,
WELFARE = 210800,
ART_CULTURE_AND_SPORT = 220000,
PERFORMING_ARTS = 220100,
PHOTOGRAPHY = 220200,
MUSIC = 220300,
ARTS_AND_CRAFTS = 220400,
MUSEUMS_AND_CULTURAL_ESTABLISHMENTS = 220500,
LIBRARIES = 220600,
SPORTS_CLUBS_CENTRES_AND_GYMS = 220700,
ATHLETES_ORGANISERS_AND_ASSOCIATIONS = 220800,
OTHER_INDUSTRIES = 230000,
GAMBLING_AND_BETTING = 230100,
AGRICULTURE = 230200,
FORESTRY_AND_HUNTING = 230300,
FISHERY = 230400,
OTHER_SERVICES = 230500,
MINING_AND_METALS = 230600,
GEOLOGY = 230700,
SECURITY_AND_INVESTIGATION = 230800
}
/**
* Interface for creating a job posting on XING's platform.
* Represents the required and optional fields needed for submitting a job post.
*/
interface XingCreatePostingRequest {
/**
* Organization ID provided by XING sales.
* @example 5160
*/
organization_id: number;
/**
* Order ID for billing purposes.
* @example 1022232
*/
order_id: number;
/**
* Job title with a maximum of 255 characters.
* @example "Technical Product Manager - Jobs Integration (m/w)"
*/
function: string;
/**
* Name of the company posting the job (max 255 characters).
* @example "New Work SE"
*/
company_name: string;
/**
* HTML-formatted job description (max 10,000 characters).
* @example "<p>Job description with allowed HTML tags</p>"
*/
description?: string;
/**
* Alternative: A structured description template for the job post.
*/
description_template?: XingJobDescriptionTemplate;
/**
* City where the job is located.
* @example "Hamburg"
*/
city: string;
/**
* 2-letter ISO country code for the job's location.
* @example "DE" // Germany
*/
country: string;
/**
* Application method to be used (reply settings).
*/
reply_setting: EXingReplySetting;
/**
* ZIP code of the job location.
*/
zipcode?: string;
/**
* Street name of the job location.
*/
street?: string;
/**
* Region of the job location (e.g., state or province).
*/
region?: string;
/**
* ISO 639-1 language code for the job post.
* @example "en", "de"
*/
language?: string;
/**
* Tags for the job posting (max 500 characters).
*/
tags?: string;
/**
* Required skills for the job (max 255 characters).
*/
skills?: string;
/**
* Job level classification.
* @example "JOBLEVEL_3"
*/
level?: EXingJobLevel;
/**
* Type of job.
* @example "FULL_TIME"
*/
job_type?: EXingJobType;
/**
* Discipline ID representing the specific field/sector of the job.
* @example "1017" // Product Management
*/
discipline_id?: EXingJobDiscipline;
/**
* Industry ID representing the job's industry.
* @example "90000" // Internet and IT
*/
industry_id?: EXingIndustry;
/**
* Remote work options (multiple allowed).
*/
remote_options?: EXingRemoteOption[];
/**
* Point of contact type for the job posting.
*/
point_of_contact_type?: EXingJobPointOfContactType;
/**
* User role associated with the job posting.
*/
user_role?: EXingJobUserRole;
/**
* Email address for receiving applications. Required if `reply_setting` is `email`.
*/
reply_email?: string;
/**
* URL for receiving applications. Required if `reply_setting` is `url`.
*/
reply_url?: string;
/**
* Link to the poster's XING profile.
*/
poster_url?: string;
/**
* URL of the company profile.
*/
company_profile_url?: string;
/**
* Boolean flag to publish the job post to the company's XING profile.
*/
publish_to_company?: boolean;
/**
* Full HTML URL for the job advertisement.
*/
posting_url?: string;
/**
* Base64-encoded logo image content for the job post.
*/
posting_logo_content?: string;
/**
* Internal tracking code (max 100 characters).
*/
job_code?: string;
/**
* Fixed salary amount for the job.
*/
salary?: number;
/**
* Minimum salary range.
*/
salary_range_start?: number;
/**
* Maximum salary range.
*/
salary_range_end?: number;
/**
* Interval for the salary (e.g., monthly, yearly).
*/
salary_interval?: EXingJobSalaryInterval;
/**
* Currency for the salary amounts.
*/
currency?: EXingCurrency;
/**
* Classification relevant for campus or student jobs.
*/
student_classification?: EXingStudentClassification;
/**
* Video link for embedding (YouTube/Vimeo URL).
*/
video_link?: string;
/**
* URL to the privacy policy for applicants.
*/
xing_apply_privacy_policy?: string;
/**
* URL to the terms and conditions for applicants.
*/
xing_apply_terms_and_conditions?: string;
}
/**
* API Response Structure
*/
interface XingCreatePostingResponse {
/** Created job ID */
posting_id: number;
/** Public job URL */
permalink: string;
}
/**
* Abstract class that provides a base for working with the Xing API.
*
* This class handles API authentication and provides utility methods for sending authorized HTTP requests
* to API endpoints.
*/
declare abstract class XingBaseApiClient {
/**
* Access token.
*/
private readonly accessToken;
/**
* Constructor for initializing an instance with the given access token.
*
* @param {string} accessToken - The access token used for authentication or API requests.
*/
constructor(accessToken: string);
/**
* Sends an authorized HTTP request to the specified API endpoint with the given parameters,
* method, and optional request body. It handles authorization headers and request formatting.
*
* @param {string} path - The path for the API endpoint.
* @param {Record<string, string>} [params={}] - The query parameters to include in the request URL.
* @param {'GET' | 'POST' | 'PUT' | 'DELETE'} [method='GET'] - The HTTP method to use for the request.
* @param {unknown} [body] - The payload to include in the request body (used for POST or PUT methods).
*
* @return {Promise<T>} - A promise that resolves to the parsed response body as the generic type T,
* or a boolean for PUT or DELETE methods with no content.
*/
protected sendAuthorizedRequest<T>(path: string, params?: Record<string, string>, method?: 'GET' | 'POST' | 'PUT' | 'DELETE', body?: unknown): Promise<T>;
}
/**
* Interface for individual job postings in the `getListOfPostings` response.
*/
interface XingPosting {
/** Unique identifier for the job posting. */
id: number;
/** Type of job posting. */
type: string;
/** Job title or function. */
function: string;
/** Current state of the posting (e.g., "created"). */
state: EXingJobState;
/** Name of the company posting the job. */
company_name: string;
/** URL linking to the company profile, if available. */
company_profile_url?: string;
/** Flag indicating if the job should be published to the company's profile. */
publish_to_company?: boolean;
/** Job salary currency. */
currency?: EXingCurrency;
/** HTML-formatted description of the job. */
description?: string;
/** Discipline or field of the job as text. */
discipline_id_as_text?: string;
/** Unique identifier for the discipline of the job. */
discipline_id?: string;
/** Industry type as text. */
industry_id_as_text?: string;
/** Unique identifier for the job's industry. */
industry_id?: string;
/** Custom job code (if provided). */
job_code?: string;
/** Type of job (e.g., FULL_TIME, PART_TIME). */
job_type?: EXingJobType;
/** ISO 639-1 language code for the job posting. */
language?: string;
/** Job classification or level. */
level?: EXingJobLevel;
/** Order ID associated with this job posting. */
order_id: number;
/** Organization ID of the company posting the job. */
organization_id: number;
/** Type of contact point for the job posting. */
point_of_contact_type?: EXingJobPointOfContactType;
/** URL to the job poster's profile, if available. */
poster_url?: string | null;
/** URL to the published job posting, if available. */
posting_url?: string | null;
/** Indicator if the job is public or private. */
public: boolean;
/** Reply email for applications, if applicable. */
reply_email?: string | null;
/** Method of application submission (e.g., email, URL). */
reply_setting: EXingReplySetting;
/** URL for submitting applications, if applicable. */
reply_url?: string | null;
/** Proposed salary information, if available. */
salary?: string | null;
/** Starting salary range, if applicable. */
salary_range_start?: number | null;
/** End salary range, if applicable. */
salary_range_end?: number | null;
/** Interval of salary payment (e.g., monthly, yearly), if applicable. */
salary_interval?: string | null;
/** Skills required for the job posting. */
skills?: string | null;
/** Classification of the job for student eligibility, if applicable. */
student_classification_as_text?: string | null;
/** Numeric classification of student eligibility, if applicable. */
student_classification?: string | null;
/** Tags associated with the job posting (e.g., keywords). */
tags?: string;
/** Indicator if additional information is available. */
tell_me_more?: boolean;
/** User role associated with posting this job (e.g., EMPLOYEE). */
user_role?: EXingJobUserRole;
/** Street address of the job's location. */
street?: string | null;
/** City of the job location. */
city: string;
/** Region or state of the job location. */
region?: string | null;
/** Country code of the job location (ISO 3166-1 alpha-2). */
country: string;
/** ZIP or postal code of the job location. */
zipcode?: string | null;
}
/**
* Client for XING E-Recruiting API.
*
* The XING E-Recruiting API allows to post job postings on XING Jobs
* as well as monitoring their status and performance.
*/
declare class XingERecruitingApiClient extends XingBaseApiClient {
private getPostingId;
/**
* Get a paginated list of all orders for which the current oAuth user created postings.
*
* @param {XingGetOrdersParameters} [parameters]
*/
getOrders({ ids, status, page, }?: XingGetOrdersParameters): Promise<XingERecruitingPaginatedResponse<XingOrder>>;
/**
* Get a paginated list of all postings created by the current oAuth user.
*
* @param {XingGetPostingsParameters} [parameters]
*/
getPostings({ page, ids, }?: XingGetPostingsParameters): Promise<XingERecruitingPaginatedResponse<XingPosting>>;
/**
* Creates a job posting on the Xing platform.
*
* @param {XingCreatePostingRequest} jobPosting Object containing the details of the job posting to be created.
* @return {Promise<XingCreatePostingResponse>} Response object for the created job posting.
*/
createJobPosting(jobPosting: XingCreatePostingRequest): Promise<XingCreatePostingResponse>;
/**
* Updates an existing job posting on the Xing platform.
*
* @param {number} jobPostingId The job posting id.
* @param{Partial<XingCreatePostingRequest>} jobPosting Payload containing the new data.
* @returns A promise resolving to void if the update is successful.
*/
updateJobPosting(jobPostingId: number, jobPosting: Partial<XingCreatePostingRequest>): Promise<void>;
/**
* Activates a job posting on the Xing platform.
*
* @param {number} jobPostingId Job posting id to activate.
*/
activatePosting(jobPostingId: number): Promise<void>;
/**
* Activates a job posting on the Xing platform.
*
* @param {XingPosting} jobPosting Job posting id to activate.
*/
activatePosting(jobPosting: XingPosting): Promise<void>;
/**
* Archives a job posting on the Xing platform.
*
* @param {number} jobPostingId Job posting id to archive.
*/
archivePosting(jobPostingId: number): Promise<void>;
/**
* Archives a job posting on the Xing platform.
*
* @param {XingPosting} jobPosting Job posting id to archive.
*/
archivePosting(jobPosting: XingPosting): Promise<void>;
/**
* Deactivates a job posting on the Xing platform.
*
* @param {XingPosting} jobPosting Job posting to deactivate.
*/
deactivatePosting(jobPosting: XingPosting): Promise<void>;
/**
* Deactivates a job posting on the Xing platform.
*
* @param {number} jobPostingId Job posting id to deactivate.
*/
deactivatePosting(jobPostingId: number): Promise<void>;
/**
* Deletes a job posting on the Xing platform.
*
* @param {number} jobPostingId Job posting id to be deleted.
*/
deletePosting(jobPostingId: number): Promise<void>;
/**
* Deletes a job posting on the Xing platform.
*
* @param {XingPosting} jobPosting Job posting to be deleted.
*/
deletePosting(jobPosting: XingPosting): Promise<void>;
}
export { EXingCurrency, EXingJobLevel, EXingJobPointOfContactType, EXingJobState, EXingJobType, EXingJobUserRole, EXingOrderStatus, EXingReplySetting, type XingCreatePostingRequest, type XingCreatePostingResponse, XingERecruitingApiClient, type XingERecruitingPaginatedResponse, type XingGetOrdersParameters, type XingGetPostingsParameters, type XingJobDescriptionSectionContent, type XingJobDescriptionTemplate, type XingOrder };