linkedapi 1.0.1__tar.gz → 1.0.2__tar.gz

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.
Files changed (86) hide show
  1. {linkedapi-1.0.1 → linkedapi-1.0.2}/PKG-INFO +1 -1
  2. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/__init__.py +7 -1
  3. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/client.py +6 -0
  4. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/errors.py +2 -0
  5. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/__init__.py +5 -0
  6. linkedapi-1.0.2/linkedapi/operations/fetch_job.py +23 -0
  7. linkedapi-1.0.2/linkedapi/operations/search_jobs.py +15 -0
  8. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/__init__.py +28 -0
  9. linkedapi-1.0.2/linkedapi/types/jobs.py +131 -0
  10. {linkedapi-1.0.1 → linkedapi-1.0.2}/pyproject.toml +1 -1
  11. {linkedapi-1.0.1 → linkedapi-1.0.2}/tests/test_errors.py +1 -0
  12. {linkedapi-1.0.1 → linkedapi-1.0.2}/tests/test_operations.py +7 -1
  13. {linkedapi-1.0.1 → linkedapi-1.0.2}/.github/workflows/publish.yaml +0 -0
  14. {linkedapi-1.0.1 → linkedapi-1.0.2}/.gitignore +0 -0
  15. {linkedapi-1.0.1 → linkedapi-1.0.2}/LICENSE +0 -0
  16. {linkedapi-1.0.1 → linkedapi-1.0.2}/README.md +0 -0
  17. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/admin/__init__.py +0 -0
  18. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/admin/accounts.py +0 -0
  19. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/admin/admin.py +0 -0
  20. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/admin/http_client.py +0 -0
  21. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/admin/limits.py +0 -0
  22. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/admin/subscription.py +0 -0
  23. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/config.py +0 -0
  24. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/core/__init__.py +0 -0
  25. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/core/operation.py +0 -0
  26. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/core/polling.py +0 -0
  27. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/http/__init__.py +0 -0
  28. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/http/base.py +0 -0
  29. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/http/linked_api_http_client.py +0 -0
  30. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/mappers/__init__.py +0 -0
  31. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/mappers/array.py +0 -0
  32. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/mappers/base.py +0 -0
  33. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/mappers/simple.py +0 -0
  34. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/mappers/then.py +0 -0
  35. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/mappers/void.py +0 -0
  36. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/check_connection_status.py +0 -0
  37. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/comment_on_post.py +0 -0
  38. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/create_post.py +0 -0
  39. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/custom_workflow.py +0 -0
  40. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/fetch_company.py +0 -0
  41. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/fetch_person.py +0 -0
  42. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/fetch_post.py +0 -0
  43. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/nv_fetch_company.py +0 -0
  44. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/nv_fetch_person.py +0 -0
  45. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/nv_search_companies.py +0 -0
  46. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/nv_search_people.py +0 -0
  47. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/nv_send_message.py +0 -0
  48. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/nv_sync_conversation.py +0 -0
  49. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/react_to_post.py +0 -0
  50. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/remove_connection.py +0 -0
  51. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/retrieve_connections.py +0 -0
  52. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/retrieve_pending_requests.py +0 -0
  53. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/retrieve_performance.py +0 -0
  54. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/retrieve_ssi.py +0 -0
  55. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/search_companies.py +0 -0
  56. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/search_people.py +0 -0
  57. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/send_connection_request.py +0 -0
  58. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/send_message.py +0 -0
  59. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/sync_conversation.py +0 -0
  60. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/operations/withdraw_connection_request.py +0 -0
  61. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/py.typed +0 -0
  62. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/account.py +0 -0
  63. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/admin/__init__.py +0 -0
  64. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/admin/accounts.py +0 -0
  65. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/admin/config.py +0 -0
  66. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/admin/limits.py +0 -0
  67. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/admin/subscription.py +0 -0
  68. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/base.py +0 -0
  69. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/company.py +0 -0
  70. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/connection.py +0 -0
  71. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/message.py +0 -0
  72. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/params.py +0 -0
  73. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/person.py +0 -0
  74. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/post.py +0 -0
  75. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/responses.py +0 -0
  76. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/search_companies.py +0 -0
  77. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/search_people.py +0 -0
  78. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/statistics.py +0 -0
  79. {linkedapi-1.0.1 → linkedapi-1.0.2}/linkedapi/types/workflow.py +0 -0
  80. {linkedapi-1.0.1 → linkedapi-1.0.2}/tests/conftest.py +0 -0
  81. {linkedapi-1.0.1 → linkedapi-1.0.2}/tests/test_admin.py +0 -0
  82. {linkedapi-1.0.1 → linkedapi-1.0.2}/tests/test_direct_methods.py +0 -0
  83. {linkedapi-1.0.1 → linkedapi-1.0.2}/tests/test_http_client.py +0 -0
  84. {linkedapi-1.0.1 → linkedapi-1.0.2}/tests/test_mappers.py +0 -0
  85. {linkedapi-1.0.1 → linkedapi-1.0.2}/tests/test_models.py +0 -0
  86. {linkedapi-1.0.1 → linkedapi-1.0.2}/tests/test_polling.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: linkedapi
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: Official synchronous Python SDK for Linked API.
5
5
  Project-URL: Homepage, https://linkedapi.io
6
6
  Project-URL: Repository, https://github.com/Linked-API/linkedapi-python
@@ -34,6 +34,8 @@ from linkedapi.operations import (
34
34
  CustomWorkflow,
35
35
  FetchCompany,
36
36
  FetchCompanyMapper,
37
+ FetchJob,
38
+ FetchJobMapper,
37
39
  FetchPerson,
38
40
  FetchPersonMapper,
39
41
  FetchPost,
@@ -53,6 +55,7 @@ from linkedapi.operations import (
53
55
  RetrievePerformance,
54
56
  RetrieveSSI,
55
57
  SearchCompanies,
58
+ SearchJobs,
56
59
  SearchPeople,
57
60
  SendConnectionRequest,
58
61
  SendMessage,
@@ -62,7 +65,7 @@ from linkedapi.operations import (
62
65
  from linkedapi.types import * # noqa: F403
63
66
  from linkedapi.types import __all__ as _types_all
64
67
 
65
- __version__ = "1.0.0"
68
+ __version__ = "1.0.2"
66
69
  PredefinedOperation = Operation
67
70
 
68
71
  __all__ = [
@@ -80,6 +83,8 @@ __all__ = [
80
83
  "CustomWorkflow",
81
84
  "FetchCompany",
82
85
  "FetchCompanyMapper",
86
+ "FetchJob",
87
+ "FetchJobMapper",
83
88
  "FetchPerson",
84
89
  "FetchPersonMapper",
85
90
  "FetchPost",
@@ -114,6 +119,7 @@ __all__ = [
114
119
  "RetrievePerformance",
115
120
  "RetrieveSSI",
116
121
  "SearchCompanies",
122
+ "SearchJobs",
117
123
  "SearchPeople",
118
124
  "SendConnectionRequest",
119
125
  "SendMessage",
@@ -13,6 +13,7 @@ from linkedapi.operations import (
13
13
  CreatePost,
14
14
  CustomWorkflow,
15
15
  FetchCompany,
16
+ FetchJob,
16
17
  FetchPerson,
17
18
  FetchPost,
18
19
  NvFetchCompany,
@@ -28,6 +29,7 @@ from linkedapi.operations import (
28
29
  RetrievePerformance,
29
30
  RetrieveSSI,
30
31
  SearchCompanies,
32
+ SearchJobs,
31
33
  SearchPeople,
32
34
  SendConnectionRequest,
33
35
  SendMessage,
@@ -60,9 +62,11 @@ class LinkedApi:
60
62
  self.remove_connection = RemoveConnection(self.http_client)
61
63
  self.search_companies = SearchCompanies(self.http_client)
62
64
  self.search_people = SearchPeople(self.http_client)
65
+ self.search_jobs = SearchJobs(self.http_client)
63
66
  self.fetch_company = FetchCompany(self.http_client)
64
67
  self.fetch_person = FetchPerson(self.http_client)
65
68
  self.fetch_post = FetchPost(self.http_client)
69
+ self.fetch_job = FetchJob(self.http_client)
66
70
  self.react_to_post = ReactToPost(self.http_client)
67
71
  self.comment_on_post = CommentOnPost(self.http_client)
68
72
  self.create_post = CreatePost(self.http_client)
@@ -87,9 +91,11 @@ class LinkedApi:
87
91
  self.remove_connection,
88
92
  self.search_companies,
89
93
  self.search_people,
94
+ self.search_jobs,
90
95
  self.fetch_company,
91
96
  self.fetch_person,
92
97
  self.fetch_post,
98
+ self.fetch_job,
93
99
  self.react_to_post,
94
100
  self.comment_on_post,
95
101
  self.create_post,
@@ -16,6 +16,7 @@ LinkedApiActionErrorType = Literal[
16
16
  "searchingNotAllowed",
17
17
  "companyNotFound",
18
18
  "postNotFound",
19
+ "jobNotFound",
19
20
  "commentingNotAllowed",
20
21
  "noPostingPermission",
21
22
  "noSalesNavigator",
@@ -35,6 +36,7 @@ LINKED_API_ACTION_ERROR_TYPES: tuple[str, ...] = (
35
36
  "searchingNotAllowed",
36
37
  "companyNotFound",
37
38
  "postNotFound",
39
+ "jobNotFound",
38
40
  "commentingNotAllowed",
39
41
  "noPostingPermission",
40
42
  "noSalesNavigator",
@@ -3,6 +3,7 @@ from linkedapi.operations.comment_on_post import CommentOnPost
3
3
  from linkedapi.operations.create_post import CreatePost
4
4
  from linkedapi.operations.custom_workflow import CustomWorkflow
5
5
  from linkedapi.operations.fetch_company import FetchCompany, FetchCompanyMapper
6
+ from linkedapi.operations.fetch_job import FetchJob, FetchJobMapper
6
7
  from linkedapi.operations.fetch_person import FetchPerson, FetchPersonMapper
7
8
  from linkedapi.operations.fetch_post import FetchPost, FetchPostMapper
8
9
  from linkedapi.operations.nv_fetch_company import NvFetchCompany, NvFetchCompanyMapper
@@ -18,6 +19,7 @@ from linkedapi.operations.retrieve_pending_requests import RetrievePendingReques
18
19
  from linkedapi.operations.retrieve_performance import RetrievePerformance
19
20
  from linkedapi.operations.retrieve_ssi import RetrieveSSI
20
21
  from linkedapi.operations.search_companies import SearchCompanies
22
+ from linkedapi.operations.search_jobs import SearchJobs
21
23
  from linkedapi.operations.search_people import SearchPeople
22
24
  from linkedapi.operations.send_connection_request import SendConnectionRequest
23
25
  from linkedapi.operations.send_message import SendMessage
@@ -31,6 +33,8 @@ __all__ = [
31
33
  "CustomWorkflow",
32
34
  "FetchCompany",
33
35
  "FetchCompanyMapper",
36
+ "FetchJob",
37
+ "FetchJobMapper",
34
38
  "FetchPerson",
35
39
  "FetchPersonMapper",
36
40
  "FetchPost",
@@ -50,6 +54,7 @@ __all__ = [
50
54
  "RetrievePerformance",
51
55
  "RetrieveSSI",
52
56
  "SearchCompanies",
57
+ "SearchJobs",
53
58
  "SearchPeople",
54
59
  "SendConnectionRequest",
55
60
  "SendMessage",
@@ -0,0 +1,23 @@
1
+ from __future__ import annotations
2
+
3
+ from linkedapi.core import Operation
4
+ from linkedapi.mappers import ThenWorkflowMapper
5
+ from linkedapi.types import FetchJobParams, Job
6
+
7
+
8
+ class FetchJobMapper(ThenWorkflowMapper[FetchJobParams, Job]):
9
+ def __init__(self) -> None:
10
+ super().__init__(
11
+ action_configs=[],
12
+ response_mappings=[],
13
+ base_action_type="st.openJob",
14
+ default_params={"basicInfo": True},
15
+ result_model=Job,
16
+ )
17
+
18
+
19
+ class FetchJob(Operation[FetchJobParams, Job]):
20
+ """Fetch a LinkedIn job."""
21
+
22
+ operation_name = "fetchJob"
23
+ mapper = FetchJobMapper()
@@ -0,0 +1,15 @@
1
+ from __future__ import annotations
2
+
3
+ from linkedapi.core import Operation
4
+ from linkedapi.mappers import ArrayWorkflowMapper
5
+ from linkedapi.types import SearchJobResult, SearchJobsParams
6
+
7
+
8
+ class SearchJobs(Operation[SearchJobsParams, list[SearchJobResult]]):
9
+ """Search jobs on standard LinkedIn."""
10
+
11
+ operation_name = "searchJobs"
12
+ mapper = ArrayWorkflowMapper[SearchJobsParams, SearchJobResult](
13
+ "st.searchJobs",
14
+ SearchJobResult,
15
+ )
@@ -83,6 +83,21 @@ from linkedapi.types.connection import (
83
83
  SendConnectionRequestParams,
84
84
  WithdrawConnectionRequestParams,
85
85
  )
86
+ from linkedapi.types.jobs import (
87
+ FetchJobParams,
88
+ FetchJobResult,
89
+ Job,
90
+ JobCurrency,
91
+ JobDatePosted,
92
+ JobEmploymentType,
93
+ JobExperienceLevel,
94
+ JobSalary,
95
+ JobWorkplaceType,
96
+ SalaryPeriod,
97
+ SearchJobResult,
98
+ SearchJobsFilter,
99
+ SearchJobsParams,
100
+ )
86
101
  from linkedapi.types.message import (
87
102
  ConversationPollRequest,
88
103
  ConversationPollResult,
@@ -223,6 +238,8 @@ __all__ = [
223
238
  "EmploymentType",
224
239
  "FetchCompanyParams",
225
240
  "FetchCompanyResult",
241
+ "FetchJobParams",
242
+ "FetchJobResult",
226
243
  "FetchPersonParams",
227
244
  "FetchPersonResult",
228
245
  "FetchPostParams",
@@ -230,6 +247,13 @@ __all__ = [
230
247
  "GetConnectionSessionParams",
231
248
  "GetLimitsParams",
232
249
  "GetLimitsUsageParams",
250
+ "Job",
251
+ "JobCurrency",
252
+ "JobDatePosted",
253
+ "JobEmploymentType",
254
+ "JobExperienceLevel",
255
+ "JobSalary",
256
+ "JobWorkplaceType",
233
257
  "LanguageProficiency",
234
258
  "Limit",
235
259
  "LimitCategory",
@@ -298,10 +322,14 @@ __all__ = [
298
322
  "RetrievePendingRequestsResult",
299
323
  "RetrievePerformanceResult",
300
324
  "RetrieveSSIResult",
325
+ "SalaryPeriod",
301
326
  "SearchCompaniesFilter",
302
327
  "SearchCompaniesParams",
303
328
  "SearchCompanyResult",
304
329
  "SearchCompanySize",
330
+ "SearchJobResult",
331
+ "SearchJobsFilter",
332
+ "SearchJobsParams",
305
333
  "SearchPeopleFilter",
306
334
  "SearchPeopleParams",
307
335
  "SearchPeopleResult",
@@ -0,0 +1,131 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Literal, TypeAlias
4
+
5
+ from linkedapi.types.base import LinkedApiModel
6
+ from linkedapi.types.params import BaseActionParams, LimitParams
7
+
8
+ JobDatePosted = Literal["anyTime", "past24Hours", "pastWeek", "pastMonth"]
9
+ JobExperienceLevel = Literal[
10
+ "internship",
11
+ "entryLevel",
12
+ "associate",
13
+ "midSeniorLevel",
14
+ "director",
15
+ "executive",
16
+ ]
17
+ JobEmploymentType = Literal[
18
+ "fullTime",
19
+ "partTime",
20
+ "contract",
21
+ "temporary",
22
+ "volunteer",
23
+ "internship",
24
+ "other",
25
+ ]
26
+ JobWorkplaceType = Literal["onSite", "remote", "hybrid"]
27
+ SalaryPeriod = Literal["yearly", "monthly", "hourly"]
28
+ JobCurrency = Literal[
29
+ "usd",
30
+ "eur",
31
+ "gbp",
32
+ "inr",
33
+ "cad",
34
+ "aud",
35
+ "nzd",
36
+ "hkd",
37
+ "sgd",
38
+ "jpy",
39
+ "cny",
40
+ "chf",
41
+ "sek",
42
+ "nok",
43
+ "dkk",
44
+ "pln",
45
+ "czk",
46
+ "huf",
47
+ "ron",
48
+ "brl",
49
+ "mxn",
50
+ "ars",
51
+ "zar",
52
+ "aed",
53
+ "sar",
54
+ "ils",
55
+ "try",
56
+ "rub",
57
+ "uah",
58
+ "krw",
59
+ "thb",
60
+ "idr",
61
+ "myr",
62
+ "php",
63
+ "vnd",
64
+ "ngn",
65
+ "twd",
66
+ ]
67
+
68
+
69
+ class JobSalary(LinkedApiModel):
70
+ currency: JobCurrency | None = None
71
+ min_amount: float | None = None
72
+ max_amount: float | None = None
73
+ period: SalaryPeriod | None = None
74
+
75
+
76
+ class SearchJobsFilter(LinkedApiModel):
77
+ location: str | None = None
78
+ date_posted: JobDatePosted | None = None
79
+ experience_levels: list[JobExperienceLevel] | None = None
80
+ employment_types: list[JobEmploymentType] | None = None
81
+ workplace_types: list[JobWorkplaceType] | None = None
82
+ companies: list[str] | None = None
83
+ industries: list[str] | None = None
84
+ job_functions: list[str] | None = None
85
+ easy_apply: bool | None = None
86
+ has_verifications: bool | None = None
87
+ under_10_applicants: bool | None = None
88
+ in_your_network: bool | None = None
89
+ fair_chance_employer: bool | None = None
90
+
91
+
92
+ class SearchJobsParams(BaseActionParams, LimitParams):
93
+ term: str | None = None
94
+ filter: SearchJobsFilter | None = None
95
+ custom_search_url: str | None = None
96
+
97
+
98
+ class SearchJobResult(LinkedApiModel):
99
+ job_id: str | None = None
100
+ job_url: str | None = None
101
+ title: str | None = None
102
+ company_name: str | None = None
103
+ location: str | None = None
104
+ workplace_type: str | None = None
105
+ salary: JobSalary | None = None
106
+ easy_apply: bool | None = None
107
+ is_promoted: bool | None = None
108
+
109
+
110
+ class FetchJobParams(BaseActionParams):
111
+ job_url: str
112
+
113
+
114
+ class Job(LinkedApiModel):
115
+ job_id: str | None = None
116
+ job_url: str | None = None
117
+ title: str | None = None
118
+ company_name: str | None = None
119
+ company_url: str | None = None
120
+ location: str | None = None
121
+ posted_date: str | None = None
122
+ applicants_count: int | None = None
123
+ workplace_type: str | None = None
124
+ employment_type: str | None = None
125
+ salary: JobSalary | None = None
126
+ description: str | None = None
127
+ apply_url: str | None = None
128
+ easy_apply: bool | None = None
129
+
130
+
131
+ FetchJobResult: TypeAlias = Job
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "linkedapi"
7
- version = "1.0.1"
7
+ version = "1.0.2"
8
8
  description = "Official synchronous Python SDK for Linked API."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -42,6 +42,7 @@ def test_error_type_sets_match_node_contract() -> None:
42
42
  "searchingNotAllowed",
43
43
  "companyNotFound",
44
44
  "postNotFound",
45
+ "jobNotFound",
45
46
  "commentingNotAllowed",
46
47
  "noPostingPermission",
47
48
  "noSalesNavigator",
@@ -20,10 +20,12 @@ def test_linked_api_exposes_all_predefined_operations() -> None:
20
20
  "fetch_company",
21
21
  "nv_fetch_company",
22
22
  "fetch_post",
23
+ "fetch_job",
23
24
  "search_people",
24
25
  "nv_search_people",
25
26
  "search_companies",
26
27
  "nv_search_companies",
28
+ "search_jobs",
27
29
  "send_connection_request",
28
30
  "check_connection_status",
29
31
  "withdraw_connection_request",
@@ -46,7 +48,7 @@ def test_linked_api_exposes_all_predefined_operations() -> None:
46
48
  assert hasattr(operation, "execute")
47
49
  assert hasattr(operation, "result")
48
50
  assert hasattr(operation, "cancel")
49
- assert len(linkedapi.operations) == 25
51
+ assert len(linkedapi.operations) == 27
50
52
 
51
53
 
52
54
  def test_operation_mappers_match_node_contract() -> None:
@@ -56,6 +58,10 @@ def test_operation_mappers_match_node_contract() -> None:
56
58
  assert linkedapi.fetch_person.mapper.default_params == {"basicInfo": True}
57
59
  assert isinstance(linkedapi.search_people.mapper, ArrayWorkflowMapper)
58
60
  assert linkedapi.search_people.mapper.base_action_type == "st.searchPeople"
61
+ assert isinstance(linkedapi.search_jobs.mapper, ArrayWorkflowMapper)
62
+ assert linkedapi.search_jobs.mapper.base_action_type == "st.searchJobs"
63
+ assert linkedapi.fetch_job.mapper.base_action_type == "st.openJob"
64
+ assert linkedapi.fetch_job.mapper.default_params == {"basicInfo": True}
59
65
  assert isinstance(linkedapi.send_connection_request.mapper, VoidWorkflowMapper)
60
66
  assert linkedapi.send_connection_request.mapper.action_type == "st.sendConnectionRequest"
61
67
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes