Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Workflow diagram

Drawio
mVer2
zoom1
simple0
zoominComment10
inCommentcustContentId0150962206
pageId30244892
custContentIdlbox1509622061
diagramDisplayNameVolaris-LCUserRegistration-Workflow.drawiolbox1
contentVer1
revision1
baseUrlhttps://folio-org.atlassian.net/wiki
diagramNameVolaris-LCUserRegistration-Workflow.drawio
pCenter0
width1206.5
links
tbstyle
height766.5

...

The process of remote registration for LC is based on the interaction of a patron with a pre-registration form through Locate UI. To support the flow Locate should be able to verify the patron’s email address.

Drawio
lbox
mVer2
zoom1
simple0
zoominComment10
inCommentcustContentId0151453729
pageId30244892
custContentIdlbox1514537291
diagramDisplayNameVolaris-LCRegistration-Swimlane.drawio
1contentVer2
revision2
baseUrlhttps://folio-org.atlassian.net/wiki
diagramNameVolaris-LCRegistration-Swimlane.drawio
pCenter0
width1340.5
links
tbstyle
height2360.9999999999995

...

Macro openapi
sourceTypeMacroBody
attachmentPageId
syntaxSwagger / OpenAPI
attachmentId
url
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/{email}:
    get:
      description: Get patron account by email
      tags:
        - patron
      parameters:
        - in: path
          name: email
          schema:
            type: string
          required: true
      responses:
        201:
          $ref: "#/components/requestBodies/PatronAccountRequest"
        404:
          $ref: '#/components/responses/NotFound'
    put:
      description: Update Patron Account by email
      operationId: updatePatronByEmail
      tags:
        - patron
      parameters:
        - in: path
          name: email
          schema:
            type: string
          required: true
      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'
  /patron/account:
    get:
      description: Get Expired records
      operationId: getExpiredRecords
      tags:
        - patron
      parameters:
        - in: query
          name: expired
          description: flag to fetch expired records
          required: true
      responses:
        201:
          #TODOdescription: Don'tA needJSON toarray returnof alluser fieldsnames
for expired record           descriptioncontent:
A JSON array of user names           content:
            applicationapplication/json:
              schema:
                type: array
                items:
                  $ref: "#/components/requestBodiesschemas/PatronAccountRequestExpiredPatronAccount"
        404:
          $ref: '#/components/responses/NotFound'
        400:
          $ref: '#/components/responses/BadRequest'
        500:
          $ref: '#/components/responses/InternalServerError'
    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:
    PatronAccountExpiredPatronAccount:
      #TODOtype: Removeobject
fields according to latest updates from LoCdescription: Information on expired patron accoun
 type: object    properties:
  description: Information for patron registration for web-formexternalSystemId:
      required:    description: External System ID
 - generalInfo        type: -string
address0        firstName:
- contactInfo         -description: preferencesFirst Name
       - userType  type:  string
  properties:         generalInfopreferredFirstName:
          description: Preferred GeneralFirst infoName
          type: string
   object     middleName:
     required:     description: Middle Name
     - firstName    type: string
       - lastName:
          propertiesdescription: Last Name
          externalSystemIdtype: string
        email:
     description: External System ID  description: Email Address
          type: string
        expirationDate:
   title:       description: Expiration Date
      description: Title   type: string
          typeformat: stringdate
    PatronAccount:
       firstNametype: object
      description: Information for patron registration for web-form
description: First Name    required:
        - generalInfo
type: string       - address0
    middleName:    - contactInfo
        - description:preferences
Middle Name       - userType
      typeproperties:
string        generalInfo:
    lastName:      description: General info
      description: Last Name  type: object
           typerequired: string
         address0:   -     firstName
  description: Current address/Address 0       - lastName
  type: object           properties:
            addressLine0externalSystemId:
              description: CurrentExternal Address/Address line 0System ID
              type: string
            addressLine1firstName:
              description: CurrentFirst Address/AddressName
line 1               type: string
            citypreferredFirstName:
              description: Preferred First CityName
              type: string
            provincemiddleName:
              description: State/ProvinceMiddle Name
              type: string
            ziplastName:
              description: Zip/PostalLast CodeName
              type: string

        address0:
  country:        description: Current address/Address 0
   description: Country      type: object
       type: string  properties:
       address1:     addressLine0:
     description: Address on Photo ID/Address 1 (optional)   description: Current Address/Address line 0
   type: object          type: properties:string
            addressLine0addressLine1:
              description: Current Address/Address line 01
              type: string
            addressLine1city:
              description: CurrentCity
Address/Address line 1               type: string
            cityprovince:
              description: CityState/Province
              type: string
            provincezip:
              description: StateZip/ProvincePostal Code
              type: string
            zipcountry:
              description: Zip/PostalCountry
Code               type: string

           country:
 address1:
            description: CountryAddress on Photo ID/Address 1 (optional)
          type: object
string          contactInfoproperties:
          description: Contact infoaddressLine0:
          type: object   description: Current Address/Address line 0
            required:  type: string
            addressLine1:
 - homePhone             description: Current Address/Address line 1
  - email           propertiestype: string
           homePhone city:
              description: HomeCity
Phone               type: string
            mobilePhoneprovince:
              description: Mobile PhoneState/Province
              type: string
            localPhonezip:
              description: LocalZip/Postal PhoneCode
              type: string
            emailcountry:
              description: EmailCountry
Address
              type: string

        preferencescontactInfo:
          typedescription: objectContact info
          descriptiontype: Preferencesobject
          propertiesrequired:
            serviceEmailAlertsEnabled:- phone
            - description:email
I would like to receive email communications from the Library of Congress aboutproperties:
service requests and alerts, research information, and surveys related to doing research atphone:
the Library.             description: Phone type:Number
boolean               defaulttype: falsestring
            programEmailAlertsEnabledmobilePhone:
              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.Mobile Phone
                 type: booleanstring
              default: false
    email:
       supportEmailAlertsEnabled:               description: Email IAddress
would like to receive email communications from the Library of Congress about how I mighttype: supportstring
the
Library.        preferences:
      type: boolean   type: object
          defaultdescription: falsePreferences
          userTypeproperties:
          description: User TypeserviceEmailAlertsEnabled:
          type: object   description: I would like to receive email communications required:from the Library of Congress about service requests and alerts, research information, and -surveys agerelated to doing research at the Library.
      - use       type:  boolean
 properties:             agedefault: false
             descriptionprogramEmailAlertsEnabled: Age
              typedescription: integerI would like to receive email communications from the Library of Congress about use:other Library programs (concerts, exhibits, lectures, etc.), customer surveys, and other services available to the default:general Use (Academic/personal)
public.
              type: string boolean
              default: false
    enum: [ "ACADEMIC", "PERSONAL" ]    supportEmailAlertsEnabled:
        academicStatus:      description: I would like to receive email communications from description:the AcademicLibrary Statusof (requiredCongress ifabout "use"how isI ACADEMIC)might support the Library.
         institution:     type: boolean
        description: Academic Institution (required if "use" isdefault: ACADEMIC)false

    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"

  1. Configuration Settings

    1. The solution should provide a UI screen to map values for externally created patron accounts to correct FOLIO values:

      1. Patron group: FOLIO User should be able to select existing patron group for new patrons

      2. Expiration date: FOLIO User should be able to select the existing patron group for new patrons

      3. For user type and status the solution should provide related defaults described in prod ticket

    2. 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
      serverSystem Jira
      serverId01505d01-b853-3c2e-90f1-ee9b165564fc
      keyUXPROD-4663