@sharpapi/sharpapi-node-job-positions-database 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,212 @@
1
+ ![SharpAPI GitHub cover](https://sharpapi.com/sharpapi-github-php-bg.jpg "SharpAPI Node.js Client")
2
+
3
+ # Job Positions Database API for Node.js
4
+
5
+ ## 💼 Access comprehensive job positions database — powered by SharpAPI.
6
+
7
+ [![npm version](https://img.shields.io/npm/v/@sharpapi/sharpapi-node-job-positions-database.svg)](https://www.npmjs.com/package/@sharpapi/sharpapi-node-job-positions-database)
8
+ [![License](https://img.shields.io/npm/l/@sharpapi/sharpapi-node-job-positions-database.svg)](https://github.com/sharpapi/sharpapi-node-client/blob/master/LICENSE.md)
9
+
10
+ **SharpAPI Job Positions Database** provides access to a comprehensive database of professional job positions with categories, industries, levels, and related positions. Perfect for HR applications, job boards, and career platforms.
11
+
12
+ ---
13
+
14
+ ## 📋 Table of Contents
15
+
16
+ 1. [Requirements](#requirements)
17
+ 2. [Installation](#installation)
18
+ 3. [Usage](#usage)
19
+ 4. [API Documentation](#api-documentation)
20
+ 5. [Examples](#examples)
21
+ 6. [License](#license)
22
+
23
+ ---
24
+
25
+ ## Requirements
26
+
27
+ - Node.js >= 16.x
28
+ - npm or yarn
29
+
30
+ ---
31
+
32
+ ## Installation
33
+
34
+ ### Step 1. Install the package via npm:
35
+
36
+ ```bash
37
+ npm install @sharpapi/sharpapi-node-job-positions-database
38
+ ```
39
+
40
+ ### Step 2. Get your API key
41
+
42
+ Visit [SharpAPI.com](https://sharpapi.com/) to get your API key.
43
+
44
+ ---
45
+
46
+ ## Usage
47
+
48
+ ```javascript
49
+ const { SharpApiJobPositionsDatabaseService } = require('@sharpapi/sharpapi-node-job-positions-database');
50
+
51
+ const apiKey = process.env.SHARP_API_KEY;
52
+ const service = new SharpApiJobPositionsDatabaseService(apiKey);
53
+
54
+ async function browseJobPositions() {
55
+ try {
56
+ // Get list of all job positions
57
+ const positions = await service.getJobPositionsList();
58
+ console.log(`Found ${positions.length} job positions`);
59
+
60
+ // Search for specific positions
61
+ const results = await service.searchJobPositions('Software Engineer', {
62
+ limit: 10,
63
+ level: 'senior'
64
+ });
65
+
66
+ results.forEach(position => {
67
+ console.log(`${position.title} - ${position.category}`);
68
+ });
69
+ } catch (error) {
70
+ console.error('Error:', error.message);
71
+ }
72
+ }
73
+
74
+ browseJobPositions();
75
+ ```
76
+
77
+ ---
78
+
79
+ ## API Documentation
80
+
81
+ ### Methods
82
+
83
+ #### `getJobPositionsList(): Promise<object>`
84
+ Get complete list of all available job positions.
85
+
86
+ #### `getJobPositionDetails(uuid: string): Promise<object>`
87
+ Get detailed information about a specific job position.
88
+
89
+ #### `searchJobPositions(query: string, options?:object): Promise<object>`
90
+ Search job positions by title or keyword with filters.
91
+
92
+ **Options:**
93
+ - `limit` (number): Maximum results
94
+ - `offset` (number): Pagination offset
95
+ - `category` (string): Filter by category
96
+ - `industry` (string): Filter by industry
97
+ - `level` (string): Filter by job level
98
+
99
+ #### `getJobCategories(): Promise<object>`
100
+ Get all job categories.
101
+
102
+ #### `getIndustries(): Promise<object>`
103
+ Get all industries.
104
+
105
+ #### `getJobLevels(): Promise<object>`
106
+ Get all job levels.
107
+
108
+ #### `getRelatedJobPositions(jobPositionId: string, options?: object): Promise<object>`
109
+ Get related job positions.
110
+
111
+ #### `validateJobPosition(jobPositionTitle: string): Promise<object>`
112
+ Validate if a job position exists.
113
+
114
+ #### `getRecommendedSkills(jobPositionId: string, options?: object): Promise<object>`
115
+ Get recommended skills for a job position.
116
+
117
+ ---
118
+
119
+ ## Examples
120
+
121
+ ### Job Board Integration
122
+
123
+ ```javascript
124
+ const service = new SharpApiJobPositionsDatabaseService(process.env.SHARP_API_KEY);
125
+
126
+ async function buildJobFilters() {
127
+ const [categories, industries, levels] = await Promise.all([
128
+ service.getJobCategories(),
129
+ service.getIndustries(),
130
+ service.getJobLevels()
131
+ ]);
132
+
133
+ return {
134
+ categories: categories.map(c => ({ id: c.id, name: c.name })),
135
+ industries: industries.map(i => ({ id: i.id, name: i.name })),
136
+ levels: levels.map(l => ({ id: l.id, name: l.name }))
137
+ };
138
+ }
139
+
140
+ const filters = await buildJobFilters();
141
+ console.log('Available Filters:', filters);
142
+ ```
143
+
144
+ ### Career Path Recommendations
145
+
146
+ ```javascript
147
+ const service = new SharpApiJobPositionsDatabaseService(process.env.SHARP_API_KEY);
148
+
149
+ async function suggestCareerPath(currentPosition) {
150
+ const related = await service.getRelatedJobPositions(currentPosition, {
151
+ limit: 5
152
+ });
153
+
154
+ console.log('Career Path Suggestions:');
155
+ related.forEach((position, index) => {
156
+ console.log(`${index + 1}. ${position.title}`);
157
+ console.log(` Similarity: ${position.weight}/10`);
158
+ console.log(` Category: ${position.category}`);
159
+ });
160
+
161
+ return related;
162
+ }
163
+
164
+ await suggestCareerPath('software-engineer-id');
165
+ ```
166
+
167
+ ---
168
+
169
+ ## Use Cases
170
+
171
+ - **Job Boards**: Standardized job position listings
172
+ - **ATS Systems**: Job position validation
173
+ - **Career Platforms**: Career path recommendations
174
+ - **HR Applications**: Position database and management
175
+ - **Recruitment Tools**: Position categorization
176
+ - **Skills Mapping**: Position-to-skills relationships
177
+
178
+ ---
179
+
180
+ ## API Endpoint
181
+
182
+ **GET** `/utilities/job_positions_list`
183
+
184
+ For detailed API specifications, refer to:
185
+ - [Postman Documentation](https://documenter.getpostman.com/view/31106842/2sBXVeGsW5)
186
+ - [Product Page](https://sharpapi.com/en/catalog/utility/job-positions-api)
187
+
188
+ ---
189
+
190
+ ## Related Packages
191
+
192
+ - [@sharpapi/sharpapi-node-related-job-positions](https://www.npmjs.com/package/@sharpapi/sharpapi-node-related-job-positions) - AI-powered related positions
193
+ - [@sharpapi/sharpapi-node-skills-database](https://www.npmjs.com/package/@sharpapi/sharpapi-node-skills-database) - Skills database
194
+ - [@sharpapi/sharpapi-node-client](https://www.npmjs.com/package/@sharpapi/sharpapi-node-client) - Full SharpAPI SDK
195
+
196
+ ---
197
+
198
+ ## License
199
+
200
+ This project is licensed under the MIT License. See the [LICENSE.md](LICENSE.md) file for details.
201
+
202
+ ---
203
+
204
+ ## Support
205
+
206
+ - **Documentation**: [SharpAPI.com Documentation](https://sharpapi.com/documentation)
207
+ - **Issues**: [GitHub Issues](https://github.com/sharpapi/sharpapi-node-client/issues)
208
+ - **Email**: contact@sharpapi.com
209
+
210
+ ---
211
+
212
+ **Powered by [SharpAPI](https://sharpapi.com/) - AI-Powered API Workflow Automation**
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@sharpapi/sharpapi-node-job-positions-database",
3
+ "version": "1.0.0",
4
+ "description": "SharpAPI.com Node.js SDK for Job Positions Database API",
5
+ "main": "src/index.js",
6
+ "scripts": {
7
+ "test": "jest"
8
+ },
9
+ "keywords": [
10
+ "sharpapi",
11
+ "api",
12
+ "api integration",
13
+ "restful api",
14
+ "nodejs",
15
+ "software development",
16
+ "job positions",
17
+ "hr tech",
18
+ "job titles",
19
+ "careers"
20
+ ],
21
+ "author": "Dawid Makowski <contact@sharpapi.com>",
22
+ "license": "MIT",
23
+ "dependencies": {
24
+ "@sharpapi/sharpapi-node-core": "file:../sharpapi-node-core"
25
+ },
26
+ "devDependencies": {
27
+ "jest": "^29.7.0"
28
+ },
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/sharpapi/sharpapi-node-job-positions-database.git"
35
+ }
36
+ }
@@ -0,0 +1,172 @@
1
+ const { SharpApiCoreService } = require('@sharpapi/sharpapi-node-core');
2
+
3
+ /**
4
+ * Service for accessing Job Positions Database API using SharpAPI.com
5
+ */
6
+ class SharpApiJobPositionsDatabaseService extends SharpApiCoreService {
7
+ /**
8
+ * Get list of all available job positions
9
+ *
10
+ * @returns {Promise<object>} - List of job positions
11
+ */
12
+ async getJobPositionsList() {
13
+ const response = await this.makeRequest('GET', '/utilities/job_positions_list');
14
+ return response.data;
15
+ }
16
+
17
+ /**
18
+ * Get detailed information about a specific job position by UUID
19
+ *
20
+ * @param {string} uuid - The UUID of the job position
21
+ * @returns {Promise<object>} - Job position information
22
+ */
23
+ async getJobPositionDetails(uuid) {
24
+ const response = await this.makeRequest('GET', `/utilities/job_positions_details/${uuid}`);
25
+ return response.data;
26
+ }
27
+
28
+ /**
29
+ * Get information about a specific job position by ID (alias for getJobPositionDetails)
30
+ *
31
+ * @param {string} jobPositionId - The ID of the job position
32
+ * @returns {Promise<object>} - Job position information
33
+ */
34
+ async getJobPositionById(jobPositionId) {
35
+ return this.getJobPositionDetails(jobPositionId);
36
+ }
37
+
38
+ /**
39
+ * Search for job positions by title or keyword
40
+ *
41
+ * @param {string} query - The search query
42
+ * @param {object} [options] - Additional options for search
43
+ * @param {number} [options.limit=20] - Maximum number of results to return
44
+ * @param {number} [options.offset=0] - Number of results to skip
45
+ * @param {string} [options.category] - Filter by job category
46
+ * @param {string} [options.industry] - Filter by industry
47
+ * @param {string} [options.level] - Filter by job level (entry, mid, senior, etc.)
48
+ * @returns {Promise<object>} - Search results
49
+ */
50
+ async searchJobPositions(query, options = {}) {
51
+ const data = { query, ...options };
52
+ const response = await this.makeRequest('GET', '/utility/job-positions/search', data);
53
+ return response.data;
54
+ }
55
+
56
+ /**
57
+ * Get all job categories
58
+ *
59
+ * @returns {Promise<object>} - List of job categories
60
+ */
61
+ async getJobCategories() {
62
+ const response = await this.makeRequest('GET', '/utility/job-positions/categories');
63
+ return response.data;
64
+ }
65
+
66
+ /**
67
+ * Get all industries
68
+ *
69
+ * @returns {Promise<object>} - List of industries
70
+ */
71
+ async getIndustries() {
72
+ const response = await this.makeRequest('GET', '/utility/job-positions/industries');
73
+ return response.data;
74
+ }
75
+
76
+ /**
77
+ * Get all job levels
78
+ *
79
+ * @returns {Promise<object>} - List of job levels
80
+ */
81
+ async getJobLevels() {
82
+ const response = await this.makeRequest('GET', '/utility/job-positions/levels');
83
+ return response.data;
84
+ }
85
+
86
+ /**
87
+ * Get related job positions for a specific job position
88
+ *
89
+ * @param {string} jobPositionId - The ID of the job position
90
+ * @param {object} [options] - Additional options
91
+ * @param {number} [options.limit=10] - Maximum number of related job positions to return
92
+ * @returns {Promise<object>} - Related job positions
93
+ */
94
+ async getRelatedJobPositions(jobPositionId, options = {}) {
95
+ const data = { ...options };
96
+ const response = await this.makeRequest('GET', `/utility/job-positions/${jobPositionId}/related`, data);
97
+ return response.data;
98
+ }
99
+
100
+ /**
101
+ * Get job positions by category
102
+ *
103
+ * @param {string} categoryId - The ID of the category
104
+ * @param {object} [options] - Additional options
105
+ * @param {number} [options.limit=20] - Maximum number of job positions to return
106
+ * @param {number} [options.offset=0] - Number of job positions to skip
107
+ * @returns {Promise<object>} - Job positions in the category
108
+ */
109
+ async getJobPositionsByCategory(categoryId, options = {}) {
110
+ const data = { ...options };
111
+ const response = await this.makeRequest('GET', `/utility/job-positions/category/${categoryId}`, data);
112
+ return response.data;
113
+ }
114
+
115
+ /**
116
+ * Get job positions by industry
117
+ *
118
+ * @param {string} industryId - The ID of the industry
119
+ * @param {object} [options] - Additional options
120
+ * @param {number} [options.limit=20] - Maximum number of job positions to return
121
+ * @param {number} [options.offset=0] - Number of job positions to skip
122
+ * @returns {Promise<object>} - Job positions in the industry
123
+ */
124
+ async getJobPositionsByIndustry(industryId, options = {}) {
125
+ const data = { ...options };
126
+ const response = await this.makeRequest('GET', `/utility/job-positions/industry/${industryId}`, data);
127
+ return response.data;
128
+ }
129
+
130
+ /**
131
+ * Get job positions by level
132
+ *
133
+ * @param {string} levelId - The ID of the level
134
+ * @param {object} [options] - Additional options
135
+ * @param {number} [options.limit=20] - Maximum number of job positions to return
136
+ * @param {number} [options.offset=0] - Number of job positions to skip
137
+ * @returns {Promise<object>} - Job positions at the level
138
+ */
139
+ async getJobPositionsByLevel(levelId, options = {}) {
140
+ const data = { ...options };
141
+ const response = await this.makeRequest('GET', `/utility/job-positions/level/${levelId}`, data);
142
+ return response.data;
143
+ }
144
+
145
+ /**
146
+ * Validate if a job position exists in the database
147
+ *
148
+ * @param {string} jobPositionTitle - The title of the job position to validate
149
+ * @returns {Promise<object>} - Validation result
150
+ */
151
+ async validateJobPosition(jobPositionTitle) {
152
+ const data = { job_position: jobPositionTitle };
153
+ const response = await this.makeRequest('POST', '/utility/job-positions/validate', data);
154
+ return response.data;
155
+ }
156
+
157
+ /**
158
+ * Get recommended skills for a job position
159
+ *
160
+ * @param {string} jobPositionId - The ID of the job position
161
+ * @param {object} [options] - Additional options
162
+ * @param {number} [options.limit=20] - Maximum number of skills to return
163
+ * @returns {Promise<object>} - Recommended skills
164
+ */
165
+ async getRecommendedSkills(jobPositionId, options = {}) {
166
+ const data = { ...options };
167
+ const response = await this.makeRequest('GET', `/utility/job-positions/${jobPositionId}/skills`, data);
168
+ return response.data;
169
+ }
170
+ }
171
+
172
+ module.exports = { SharpApiJobPositionsDatabaseService };
package/src/index.js ADDED
@@ -0,0 +1,6 @@
1
+ // sharpapi-node-job-positions-database/src/index.js
2
+ const { SharpApiJobPositionsDatabaseService } = require('./SharpApiJobPositionsDatabaseService');
3
+
4
+ module.exports = {
5
+ SharpApiJobPositionsDatabaseService,
6
+ };