loxo-cli 0.2.2__tar.gz → 0.2.3__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 (59) hide show
  1. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/CHANGELOG.md +11 -0
  2. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/PKG-INFO +1 -1
  3. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/pyproject.toml +1 -1
  4. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/commands/activities.py +6 -3
  5. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_cmd_activities.py +25 -0
  6. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/uv.lock +1 -1
  7. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/.github/workflows/ci.yml +0 -0
  8. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/.github/workflows/publish.yml +0 -0
  9. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/.gitignore +0 -0
  10. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/LICENSE +0 -0
  11. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/README.md +0 -0
  12. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/__init__.py +0 -0
  13. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/__main__.py +0 -0
  14. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/client.py +0 -0
  15. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/commands/__init__.py +0 -0
  16. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/commands/_app.py +0 -0
  17. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/commands/_helpers.py +0 -0
  18. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/commands/api.py +0 -0
  19. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/commands/candidates.py +0 -0
  20. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/commands/companies.py +0 -0
  21. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/commands/configure.py +0 -0
  22. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/commands/deals.py +0 -0
  23. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/commands/jobs.py +0 -0
  24. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/commands/people.py +0 -0
  25. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/commands/ref.py +0 -0
  26. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/commands/webhooks.py +0 -0
  27. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/config.py +0 -0
  28. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/errors.py +0 -0
  29. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/models/__init__.py +0 -0
  30. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/models/base.py +0 -0
  31. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/models/candidate.py +0 -0
  32. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/models/company.py +0 -0
  33. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/models/deal.py +0 -0
  34. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/models/job.py +0 -0
  35. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/models/person.py +0 -0
  36. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/models/reference.py +0 -0
  37. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/models/webhook.py +0 -0
  38. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/output.py +0 -0
  39. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/src/loxo_cli/pagination.py +0 -0
  40. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/conftest.py +0 -0
  41. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_app_state.py +0 -0
  42. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_client.py +0 -0
  43. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_cmd_api.py +0 -0
  44. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_cmd_candidates.py +0 -0
  45. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_cmd_companies.py +0 -0
  46. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_cmd_configure.py +0 -0
  47. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_cmd_deals.py +0 -0
  48. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_cmd_jobs.py +0 -0
  49. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_cmd_people.py +0 -0
  50. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_cmd_ref.py +0 -0
  51. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_cmd_webhooks.py +0 -0
  52. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_config.py +0 -0
  53. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_error_exit_codes.py +0 -0
  54. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_errors.py +0 -0
  55. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_helpers.py +0 -0
  56. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_models.py +0 -0
  57. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_output.py +0 -0
  58. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_pagination.py +0 -0
  59. {loxo_cli-0.2.2 → loxo_cli-0.2.3}/tests/test_smoke.py +0 -0
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.2.3]
4
+
5
+ ### Changed
6
+
7
+ - `loxo activities list` drops the `--job-id` filter and gains `--company-id`.
8
+ Loxo's `person_events` endpoint rejects `job_id` as a query parameter (HTTP
9
+ 422 `Invalid parameters: [:job_id]`), so the flag never worked. `person_id`
10
+ and `company_id` are the only server-side filters the endpoint accepts.
11
+ (`activities add --job-id` is unaffected — there `job_id` is a request-body
12
+ field, not a query parameter.)
13
+
3
14
  ## [0.2.2]
4
15
 
5
16
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: loxo-cli
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: Unofficial command-line interface for the Loxo recruiting ATS/CRM API
5
5
  Project-URL: Homepage, https://github.com/alphaomegateam/loxo-cli
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "loxo-cli"
3
- version = "0.2.2"
3
+ version = "0.2.3"
4
4
  description = "Unofficial command-line interface for the Loxo recruiting ATS/CRM API"
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -16,16 +16,19 @@ activities_app = typer.Typer(
16
16
  def list_activities(
17
17
  ctx: typer.Context,
18
18
  person_id: Optional[int] = typer.Option(None, "--person-id"),
19
- job_id: Optional[int] = typer.Option(None, "--job-id"),
19
+ company_id: Optional[int] = typer.Option(None, "--company-id"),
20
20
  all_pages: bool = typer.Option(False, "--all"),
21
21
  per_page: int = typer.Option(50, "--per-page"),
22
22
  ) -> None:
23
+ # Loxo's person_events endpoint only accepts person_id / company_id as
24
+ # server-side filters. job_id is not a valid query param (returns 422), so
25
+ # it is intentionally not exposed here — filter by person or company instead.
23
26
  state = ctx.obj
24
27
  params: dict = {}
25
28
  if person_id is not None:
26
29
  params["person_id"] = person_id
27
- if job_id is not None:
28
- params["job_id"] = job_id
30
+ if company_id is not None:
31
+ params["company_id"] = company_id
29
32
  client = state.client()
30
33
  if all_pages:
31
34
  rows = list(
@@ -21,6 +21,31 @@ def test_activities_list():
21
21
  assert json.loads(result.stdout)[0]["notes"] == "called"
22
22
 
23
23
 
24
+ @respx.mock
25
+ def test_activities_list_filters_by_person_and_company():
26
+ route = respx.get("https://app.loxo.co/api/acme/person_events").mock(
27
+ return_value=httpx.Response(200, json={"scroll_id": None, "person_events": []})
28
+ )
29
+ result = runner.invoke(
30
+ app,
31
+ ["--json", "activities", "list", "--person-id", "50", "--company-id", "7"],
32
+ env=ENV,
33
+ )
34
+ assert result.exit_code == 0
35
+ assert dict(route.calls.last.request.url.params) == {
36
+ "person_id": "50",
37
+ "company_id": "7",
38
+ "per_page": "50",
39
+ }
40
+
41
+
42
+ def test_activities_list_has_no_job_id_option():
43
+ # job_id is not a valid person_events query param (Loxo returns 422), so the
44
+ # list command must not advertise a --job-id filter.
45
+ result = runner.invoke(app, ["activities", "list", "--help"], env=ENV)
46
+ assert "--job-id" not in result.stdout
47
+
48
+
24
49
  @respx.mock
25
50
  def test_activities_add_wraps_person_event():
26
51
  captured = {}
@@ -274,7 +274,7 @@ wheels = [
274
274
 
275
275
  [[package]]
276
276
  name = "loxo-cli"
277
- version = "0.2.2"
277
+ version = "0.2.3"
278
278
  source = { editable = "." }
279
279
  dependencies = [
280
280
  { name = "click" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes