[API] ; Base URL of your Okapi instance base_url = https://localhost:9130 ; Credentials for connecting VuFind to Okapi; note that this account will need to ; have several specific permissions enabled. For more details, see: ; https://vufind.org/wiki/configuration:ils:folio username = diku_admin password = admin tenant = diku ; If set to true, the driver will log all GET requests as debug messages; if false ; (the default), it will only log POSTs to reduce noise. debug_get_requests = false ; Set this to a file path writeable by VuFind to capture API inputs and outputs in ; JSON format suitable for use in test classes. Be sure to sanitize the collected ; data and remove any real/sensitive data before including it in tests! ; ATTENTION: This feature will only work when VuFind is in development mode. See ; https://vufind.org/wiki/development:troubleshooting#turn_on_development_mode ; for instructions on enabling development mode. ;json_log_file = "/usr/local/vufind/local/cache/folio.json" ; If set to true, the driver will use the legacy /authn/login method instead of the ; more secure /auth/login-with-expiry method introduced in the Poppy release. legacy_authentication = true [IDs] ; Which FOLIO ID is VuFind using as its internal bibliographic ID? ; Options: ; - instance (FOLIO instance ID -- the default) ; - hrid (FOLIO human-readable ID) type = instance ; This section controls how we authenticate FOLIO users. There are two possible ; ways of authenticating users: logging them in to Okapi, or looking them up in ; the user module with a CQL query. Depending on how your users are managed, you ; may want to use either of these approaches, or a combination thereof. ; ; If you set okapi_login to true and leave the username_field and password_field ; at their default values, user credentials will be used to do a direct Okapi ; lookup, and then their identifier from Okapi will be used to retrieve full user ; details. ; ; If you set okapi_login to false, the username_field and password_field settings ; will determine the CQL query used to look up the user in the user module. This ; can be especially useful if you use a VuFind authentication that lets you load ; user attributes from your institutional directory into the VuFind database. For ; example, you can use the authentication logic to pre-fill the cat_username and ; cat_password fields with a user's barcode and institutional ID, and then you can ; configure this driver to use those two credentials to look up the user in FOLIO. ; When selecting these criteria, keep in mind that if there is ever a mismatch ; between what is in the database and what is in FOLIO, the user will be prompted ; to provide connection credentials. You should make sure you choose credentials ; that cannot be easily guessed, and you will want to modify the myresearch/ ; cataloglogin.phtml template in your theme to properly label the form fields. ; ; If you want to do an Okapi login, but you do not want to use the Okapi username ; as the user's primary login credential, you can set username_field to the ; desired primary value and set okapi_login to true. The code will use the ; username_field value to look up the user's username, and then try to log in to ; Okapi using the retrieved username and the user-provided password. [User] ; The field to look up the user using the cat_username field from the VuFind ; database. ; ; Supported values: ; - username ; - id ; - externalSystemId ; - barcode ; - personal.lastName ; - personal.email ; - personal.phone ; - personal.mobilePhone ; - personal.dateOfBirth ; ; See https://github.com/folio-org/mod-users/blob/master/ramls/userdata.json ; for more details. username_field = username ; The field to look up the user using the cat_password field from the VuFind ; database (set to false to skip a secondary identifier in the lookup; you MUST ; set this to false when okapi_login = true). See username_field above for ; supported values. password_field = false ; If this CQL statement is uncommented, it will be used to look up users in ; Okapi. It may include the following placeholders, which will be replaced ; dynamically with appropriate values: ; %%username%% = The user's cat_username value (CQL-escaped) ; %%password%% = The user's cat_password value (CQL-escaped) ; %%username_field%% = The username_field config setting (above) ; %%password_field%% = The password_field config setting (above) ;cql = '%%username_field%% == "%%username%%" and %%password_field%% == "%%password%%"' ; Should we try to log the user into the Okapi API (true) or just look them ; up in the database using [API] credentials above (false). If set to true, ; username_field must be username, and password_field must be false. okapi_login = true ; Should we override the Okapi token created using [API] credentials with the ; user's credentials after they log in? (Only valid if okapi_login = true) use_user_token = false ; This section controls hold behavior; note that you must also ensure that Holds are ; enabled in the [Catalog] section of config.ini in order to take advantage of these ; settings. Additional notes about some of these settings are available in the wiki: ; https://vufind.org/wiki/configuration:ils:holds [Holds] ; HMACKeys - A list of hold form element names that will be analyzed for consistency ; during hold form processing. Most users should not need to change this setting. HMACKeys = holdings_id:item_id:status:level ; defaultRequiredDate - A colon-separated list used to set the default "not required ; after" date for holds in the format days:months:years ; e.g. 0:1:0 will set a "not required after" date of 1 month from the current date defaultRequiredDate = 0:1:0 ; extraHoldFields - A colon-separated list used to display extra visible fields in the ; place holds form. Supported values are "comments", "requiredByDate", ; "pickUpLocation", "proxiedUsers" and "requestGroup" extraHoldFields = requiredByDate:pickUpLocation ; By default, a "Hold" type request is placed when an item is unavailable and a Page ; when an item is available. This setting overrides the default behavior for ; unavailable items and for all title-level requests. Legal values: "Page", "Hold" or ; "Recall" ;default_request = Hold ; It is possible that the default_request method will not work in every situation, ; e.g. if circulation rules prevent certain request types on certain item types or ; statuses; if you uncomment one or more of the values below, alternate request ; types will be attempted in the order listed if the initial request fails. ;fallback_request_type[] = Page ;fallback_request_type[] = Hold ;fallback_request_type[] = Recall ; Hide the place hold/recall/page link when an item is in the configured ; list of locations. This can either match the full location name exactly or ; do a regex match depending on how you set the excludeHoldLocationsCompareMode ; setting. Ideally, this would not be needed and FOLIO would include an ; indicator of whether or not an item is holdable with item details. ; See https://issues.folio.org/browse/UXPROD-2422. ; Checks against the location's Discovery Display Name in FOLIO. ; If no Discovery Display Name is configured, checks against name. ; Legal excludeHoldLocationsCompareMode settings: exact, regex; see examples below. ;excludeHoldLocationsCompareMode = exact ; Exact mode examples ;excludeHoldLocations[] = "24 Hour Reserve" ;excludeHoldLocations[] = "Reference Collection" ; Regex mode example ;excludeHoldLocations[] = "/.*RESERVE.*/i" ; When a request is cancelled through VuFind, use this cancellation reason ID. Most users ; will not have to change this ID unless they have replaced the cancellation reason ; reference data in mod-circulation-storage, or would prefer to use a cancellation ; reason other than "Cancelled at patron's request". To find the IDs of available ; cancellation reasons configured for your FOLIO instance, issue a GET request to ; /cancellation-reason-storage/cancellation-reasons cancellation_reason = 75187e8d-e25a-47a7-89ad-23ba612338de ; Optional help texts that can be displayed on the hold form. Displayed as is; ; HTML tags can be used, and everything needs to be properly escaped. ;helpText[*] = "Default help text used if not overridden." ;helpText[en-gb] = "Help text for British English localization." ; This folowing settings associate status text found in FOLIO with specific VuFind ; statuses. All possible Folio status messages for holds are found at: ; https://github.com/folio-org/mod-circulation-storage/blob/master/ramls/request.json ; FOLIO statuses indicating available-for-pickup items available[] = "Open - Awaiting pickup" ; FOLIO statuses indicating in-transit items in_transit[] = "Open - In transit" in_transit[] = "Open - Awaiting delivery" [Holdings] ; This setting controls the sort order used when retrieving items from FOLIO for the ; holdings display; it should be a space-separated prioritized list of item record ; fields. You can omit it to accept FOLIO's default sort order. ;folio_sort = "volume enumeration chronology" ; This optional setting re-sorts holdings using a natural sort algorithm on the ; specified field of the VuFind holdings output, which can be useful when FOLIO's ; native sort produces suboptimal results. If omitted, the order the data was ; retrieved from FOLIO will be retained. ;vufind_sort = "enumchron" [CourseReserves] ; If set to true, the course number will be prefixed on the course name; if false, ; only the name will be displayed: displayCourseCodes = false ; If set to true, finding course reserves will include FOLIO instance records ; even if they are suppressed from discovery; if false, the suppressed records ; are excluded. includeSuppressed = false [Availability] ; The Folio ILS driver needs to make several calls to obtain availability status. ; Indicate with showDueDate whether an additional call should be made to obtain the ; dueDate for checked out items and set the maxNumberItems to a value that provides ; you with a suitable tradeoff between number of API calls and load times. showDueDate = true maxNumberItems = 5 ; dueDates will be shown in Universal Time Format, e.g. 06 Jul 2022 14:59, set showTime ; to false to show 06 Jul 2022 only showTime = false