UNPKG

xing-api-client

Version:

A client library for interacting with the Xing API

1,084 lines (1,059 loc) 35.4 kB
/** * 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 };