Page Properties | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Context
Patron registration data flows to FOLIO from a web-based patron registration form into the Users app to create new User records. These Users will be considered distance patrons and will have no or limited circulation privileges. When these patrons come onsite, their patron group may change, enabling access to circulation privileges, Reading Rooms, and physical card issuing that features a profile picture.
Getting a library account starts with "reader registration". The first step is filling out online form (current form). FOLIO needs to collect the data from pre-registration form and create limited User records for new patrons. Many people (from researchers to tourists) want a physical Library of Congress library card. A card is not required to visit the Library, but it is needed to enter the public reading rooms and is a souvenir.
Library of Congress need this feature but it will likely be useful for other libraries (especially public and national). The solution should be designed in such a way that it would be useful to any library with this need.
Requirements
Functional Requirements
As described in prod ticket:
Jira Legacy | ||||||
---|---|---|---|---|---|---|
|
Non-functional Requirements
Manageability
The solution should provide the ability to configure specific LoC fields without affecting other Libraries
Interoperability
The solution should provide external API for 3rd party applications to create patrons in FOLIO
Security
The solution should provide an authorization mechanism through FOLIO edge module API keys mechanism
Target Architecture
Context Diagram
Drawio | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Container Diagram
The solution should be imlemented as new edge-API in edge-patron
module to provide access for external application.
Drawio | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Edge API Contract
Macro openapi | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
openapi: 3.0.3 info: title: Patron creation description: Edge API for creation of patron account through web-form version: 1.0.0 servers: - url: 'https://github.com/folio-org/mod-patron' paths: /patron/account: post: description: Create Patron Account operationId: createPatron tags: - patron requestBody: $ref: "#/components/requestBodies/PatronAccountRequest" responses: 201: $ref: "#/components/requestBodies/PatronAccountRequest" 404: $ref: '#/components/responses/NotFound' 400: $ref: '#/components/responses/BadRequest' 500: $ref: '#/components/responses/InternalServerError' components: schemas: PatronAccount: type: object description: Information for patron registration for web-form required: - generalInfo - address0 - contactInfo - preferences - userType properties: generalInfo: description: General info type: object required: - firstName - lastName properties: title: description: Title type: string firstName: description: First Name type: string middleName: description: Middle Name type: string lastName: description: Last Name type: string address0: description: Current address/Address 0 type: object properties: addressLine0: description: Current Address/Address line 0 type: string addressLine1: description: Current Address/Address line 1 type: string city: description: City type: string province: description: State/Province type: string zip: description: Zip/Postal Code type: string country: description: Country type: string address1: description: Address on Photo ID/Address 1 (optional) type: object properties: addressLine0: description: Current Address/Address line 0 type: string addressLine1: description: Current Address/Address line 1 type: string city: description: City type: string province: description: State/Province type: string zip: description: Zip/Postal Code type: string country: description: Country type: string contactInfo: description: Contact info type: object required: - homePhone - email properties: homePhone: description: Home Phone type: string mobilePhone: description: Mobile Phone type: string localPhone: description: Local Phone type: string email: description: Email Address type: string preferences: type: object description: Preferences properties: serviceEmailAlertsEnabled: description: I would like to receive email communications from the Library of Congress about service requests and alerts, research information, and surveys related to doing research at the Library. type: boolean default: false programEmailAlertsEnabled: description: I would like to receive email communications from the Library of Congress about other Library programs (concerts, exhibits, lectures, etc.), customer surveys, and other services available to the general public. type: boolean default: false supportEmailAlertsEnabled: description: I would like to receive email communications from the Library of Congress about how I might support the Library. type: boolean default: false userType: description: User Type type: object required: - age - use properties: age: description: Age type: integer use: default: Use (Academic/personal) type: string enum: [ "ACADEMIC", "PERSONAL" ] academicStatus: description: Academic Status (required if "use" is ACADEMIC) institution: description: Academic Institution (required if "use" is ACADEMIC) Error: description: "An error" type: object properties: message: type: string minLength: 1 description: "Error message text" type: type: string description: "Error message type" code: type: string description: "Error message code" additionalProperties: false required: - message requestBodies: PatronAccountRequest: content: application/json: schema: $ref: "#/components/schemas/PatronAccount" responses: PatronAccountResponse: description: SuccessfulResult content: application/json: schema: $ref: "#/components/schemas/PatronAccount" NotFound: description: Resource not found content: application/json: schema: $ref: "#/components/schemas/Error" BadRequest: description: Bad request content: application/json: schema: $ref: "#/components/schemas/Error" InternalServerError: description: Internal server error content: application/json: schema: $ref: "#/components/schemas/Error" |
Configuration Settings
The solution should provide a UI screen to map values for externally created patron accounts to correct FOLIO values:
Patron group: FOLIO User should be able to select existing patron group for new patrons
Expiration date: FOLIO User should be able to select the existing patron group for new patrons
For user type and status the solution should provide related defaults described in prod ticket
The solution should provide a UI setting for the one-time operation to create LoC-required custom fields. The list of custom fields is attached to
Jira Legacy server System JIRA serverId 01505d01-b853-3c2e-90f1-ee9b165564fc key UXPROD-4663