Versions Compared

Key

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

Submitted

Approved

Status

Status
colourGreen
titleDraftin progress

Impact

Status
colourBlueRed
titlemediumhigh

Arch Ticket

Jira Legacy
serverSystem Jira
serverId01505d01-b853-3c2e-90f1-ee9b165564fc
keyUXPROD-4663

Prod ticket

Jira Legacy
serverSystem Jira
serverId01505d01-b853-3c2e-90f1-ee9b165564fc
keyARCH-178

...

Drawio
mVer2
zoom1
simple0
inComment0
custContentId150962206
pageId30244892
lbox1
diagramDisplayNameVolaris-LCUserRegistration-Workflow.drawio
contentVer2
revision2
baseUrlhttps://folio-org.atlassian.net/wiki
diagramNameVolaris-LCUserRegistration-Workflow.drawio
pCenter0
width1206.5
links
tbstyle
height766.5

Swimlane diagram (V2)

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.

Expand
titleSwimlane V1
Drawio
mVer2
zoom1
simple0
inComment0
custContentId151453729
pageId30244892
lbox1
diagramDisplayNameVolaris-LCRegistration-Swimlane.drawio
contentVer2
revision2
baseUrlhttps://folio-org.atlassian.net/wiki
diagramNameVolaris-LCRegistration-Swimlane.drawio
pCenter0
width1340.5
links
tbstyle
height2360.9999999999995
Drawio
mVer2
zoom1
simple0
inComment0
custContentId151453729371392524
pageId30244892
lbox1
diagramDisplayNameVolaris-LCRegistrationLoC-preregistration-SwimlaneV2.drawio
contentVer21
revision21
baseUrlhttps://folio-org.atlassian.net/wiki
diagramNameVolaris-LCRegistrationLoC-preregistration-SwimlaneV2.drawio
pCenter0
width1340.51240
links
tbstyle
height2360.99999999999952381

Non-functional Requirements

  1. Manageability

    1. The solution should provide the ability to configure specific LoC fields without affecting other Libraries

  2. Interoperability

    1. The solution should provide external API for 3rd party applications to create patrons in FOLIO

  3. Security

    1. The solution should provide an authorization mechanism through FOLIO edge module API keys mechanism

Assumptions

  • Locate verifies the patron’s email address before starting pre-registration in FOLIO

  • Locate can define and represent in UI the current status of patron’s registration in FOLIO (expired or not)

Target Architecture

Context Diagram

...

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:
          description: A JSON array of user names
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ExpiredPatronAccount"
        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:
    ExpiredPatronAccount:
      type: object
      description: Information on expired patron accoun
      properties:
        externalSystemId:
          description: External System ID
          type: string
        firstName:
          description: First Name
          type: string
        preferredFirstName:
          description: Preferred First Name
          type: string
        middleName:
          description: Middle Name
          type: string
        lastName:
          description: Last Name
          type: string
        email:
          description: Email Address
          type: string
        expirationDate:
          description: Expiration Date
          type: string
          format: date
    PatronAccount:
      type: object
      description: Information for patron registration for web-form
      required:
        - generalInfo
        - address0address
        - contactInfo
        - userType
      properties:
        generalInfo:
          description: General info
          type: object
          required:
            - firstName
            - lastName
          properties:
            externalSystemId:
              description: External System ID
              type: string
            firstName:
              description: First Name
              type: string
            preferredFirstName:
              description: Preferred First Name
              type: string
            middleName:
              description: Middle Name
              type: string
            lastName:
              description: Last Name
              type: string

        address0address:
          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

        contactInfo:
          description: Contact info
          type: object
          required:
            - phone
            - email
          properties:
            phone:
              description: Phone Number
              type: string
            mobilePhone:
              description: Mobile 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

    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"

...