{"id":23122715,"url":"https://github.com/folio-org/mod-patron","last_synced_at":"2026-01-08T12:09:36.806Z","repository":{"id":32578978,"uuid":"134316643","full_name":"folio-org/mod-patron","owner":"folio-org","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-07T09:45:12.000Z","size":636,"stargazers_count":2,"open_issues_count":1,"forks_count":2,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-07-20T00:11:24.765Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/folio-org.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-05-21T19:39:16.000Z","updated_at":"2025-04-25T14:50:55.000Z","dependencies_parsed_at":"2023-02-14T19:31:08.306Z","dependency_job_id":"5da23bec-8510-457b-8bec-5f728640119c","html_url":"https://github.com/folio-org/mod-patron","commit_stats":null,"previous_names":[],"tags_count":48,"template":false,"template_full_name":null,"purl":"pkg:github/folio-org/mod-patron","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fmod-patron","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fmod-patron/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fmod-patron/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fmod-patron/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/folio-org","download_url":"https://codeload.github.com/folio-org/mod-patron/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fmod-patron/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271302378,"owners_count":24736015,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-17T07:29:59.752Z","updated_at":"2025-12-24T16:07:51.774Z","avatar_url":"https://github.com/folio-org.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mod-patron\n\nCopyright (C) 2018-2023 The Open Library Foundation\n\nThis software is distributed under the terms of the Apache License,\nVersion 2.0. See the file \"[LICENSE](LICENSE)\" for more information.\n\n## Introduction\n\nMicroservice to allow 3rd party discovery services to perform FOLIO patron\nactions via the discovery service's UI.\n\n## Configuration\n\nSome of the features of mod-patron may rely on specific configurations. mod-patron stores such configurations in its own \ndatabase using local settings API with interface: `patron.settings`. The module provides CRUD API for managing it.\n\n### Configuration using `patron.settings` interface\n\nRequired parameters:\n* `key`\n* `scope`\n* `value`\n\n### Supported configuration settings\n\n| Configuration name                           | Key                                   | Scope        | Value                                                           | Description                                                                            |\n|----------------------------------------------|---------------------------------------|--------------|-----------------------------------------------------------------|----------------------------------------------------------------------------------------|\n| Multi-Item Requesting Feature enable/disable | `isMultiItemRequestingFeatureEnabled` | `mod-patron` | Object with property name `enabled` and value `true` or `false` | Allows to query batch request details using `GET /patron/account/{accountId}` endpoint |\n\n\nMulti-Item Requesting Feature configuration example:\n\nRequest body that can be used to enable the Multi-Item Requesting Feature using `POST /patron/settings` endpoint:\n\n```json\n{\n  \"id\": \"65de6432-be11-48ba-9686-a65101634040\",\n  \"scope\": \"mod-patron\",\n  \"key\": \"isMultiItemRequestingFeatureEnabled\",\n  \"value\": {\n    \"enabled\": \"true\"\n  },\n  \"_version\": 1\n}\n```\n\nWhen modifying the configuration setting using `PUT /patron/settings/{id}`, ensure that the `value` property is a valid JSON object\nand `_version` property is provided with the correct version number.\n\n## Additional information\nThe endpoint GET '/patron/account/{accountId}' has optional query parameter 'sortBy'\nthat indicates the order of records within the lists of holds, charges, loans.\nThe value of 'sortBy' parameter is appended as a part of a CQL query that's evaluated\nduring separate corresponding calls to retrieve holds, charges and loans.\nOften, a given value of 'sortBy' will only work with one type of record (holds, loans,\nor charges), e.g. item.title works for holds, but not loans/charges.  The expectation is\nthat when using the 'sortBy' parameter, separate calls will be made for retrieving\nholds, loans, and charges.  In cases where multiple 'include*' parameters are 'true' and\n'sortBy' is used, it's possible (if not probable) that some of those lists will not be sorted\nas desired.\n\nExamples of requests: \n   - get holds sorted by item.title field \n     in ascending order: /patron/account/{accountId}?includeHold=true\u0026\u0026sortBy=item.title/sort.ascending\n   - get charges sorted by title field \n     in ascending order: /patron/account/{accountId}?includeCharges=true\u0026\u0026sortBy=title/sort.ascending\n   - get loans sorted by loanDate field\n     in ascending order: /patron/account/{accountId}?includeCharges=true\u0026\u0026sortBy=loanDate/sort.ascending  \n### Issue tracker\n\nSee project [MODPATRON](https://issues.folio.org/browse/MODPATRON)\nat the [FOLIO issue tracker](https://dev.folio.org/guidelines/issue-tracker).\n\n### Other documentation\n\nOther [modules](https://dev.folio.org/source-code/#server-side) are described,\nwith further FOLIO Developer documentation at [dev.folio.org](https://dev.folio.org/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffolio-org%2Fmod-patron","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffolio-org%2Fmod-patron","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffolio-org%2Fmod-patron/lists"}