@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 +212 -0
- package/package.json +36 -0
- package/src/SharpApiJobPositionsDatabaseService.js +172 -0
- package/src/index.js +6 -0
package/README.md
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
# Job Positions Database API for Node.js
|
|
4
|
+
|
|
5
|
+
## 💼 Access comprehensive job positions database — powered by SharpAPI.
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/@sharpapi/sharpapi-node-job-positions-database)
|
|
8
|
+
[](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 };
|