folio.drew.edu | api notes

endpoints                                                                         
/accounts
/alternative-title-types
/audit-data/circulation/logs
/call-number-types
/cancellation-reason-storage/cancellation-reasons
/circulation/loans
/contributor-name-types
/contributor-types
/data-import
/fixed-due-date-schedule-storage/fixed-due-date-schedules
/holdings-sources
/holdings-storage/holdings
/holdings-types
/identifier-types
/instance-note-types
/instance-relationship-types
/instance-storage/instance-relationships
/instance-storage/instances
/instance-types
/inventory-storage/bound-with-parts
/invoice-storage/invoice-lines
/invoice-storage/invoices
/item-storage/items
/loan-types
/location-units/campuses
/location-units/institutions
/location-units/libraries
/locations
/lost-item-fees-policies
/material-types
/metadata-provider/jobLogEntries/{jobExecutionId}
/orders-storage/po-lines
/overdue-fines-policies
/perms/permissions
/perms/users
/perms/users/[permissionUsers.id]/permissions
/request-storage/requests
/scheduled-notice-storage/scheduled-notices
/search/instances/ids
/source-storage/records
/users

perl scripts
DiscogsAtDrew-add2DoYo.pl
DiscogsAtDrew-edit.pl
deleteAllPerInstanceId.pl
get-okapi-token.pl
locationBasedShelfList.pl
ncipBorrowingCleanup.pl

projects
BuildingWebApps.pdf
DiscogsAtDrew
IJoL
Rapido

tables
accounts
alternativeTitleTypes
boundWithParts
callNumberTypes
cancellationReasons
contributorNameTypes
contributorTypes
entries
fixedDueDateSchedules
holdingsRecords
holdingsRecordsSources
holdingsTypes
identifierTypes
ids
instanceNoteTypes
instanceRelationshipTypes
instanceRelationships
instanceTypes
instances
invoiceLines
invoices
items
loans
loantypes
locations
loccamps
locinsts
loclibs
logRecords
lostItemFeePolicies
mtypes
overdueFinePolicies
permissionNames
permissionUsers
permissions
poLines
records
requests
scheduledNotices
uploadDefinitions
users

UI apps

1st get a token
every API call requires an X-Okapi-Token which is specific to a particular username within your tenant
to get a token POST to /authn/login* like so:

curl -i -s -X POST -H 'Content-type: application/json' -H 'X-Okapi-Tenant: $tenantId' -d '{"username":"$username", "password":"$password"}' $yourFOLIOurl/authn/login
curl will return something that looks like this
HTTP/2 201
date: Mon, 02 Oct 2023 20:03:54 GMT
content-type: application/json
server: nginx
x-okapi-token: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhcGlhZG1pbiIsInR5cGUiOiJsZWdhY3ktYWNjZXNzIiwidXNlcl9pZCI6IjdiMjcwMDY5LTY...
refreshtoken: eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..ikmWU6th2ks8Hpkz.hBwnR8ajz5iY7-6UiVZA3N1Y-MTgJnx0Lf4AUn87Yxh3WRO...

{
  "okapiToken" : "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhcGlhZG1pbiIsInR5cGUiOiJsZWdhY3ktYWNjZXNzIiwidXNlcl9pZCI6IjdiMjcwMDY5LTY...",
  "refreshToken" : "eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..ikmWU6th2ks8Hpkz.hBwnR8ajz5iY7-6UiVZA3N1Y-MTgJnx0Lf4AUn87Yxh3WRO..."
}
I use this Perl script, get-okapi-token.pl, to parse the token out of the above response and save to use whenever I need it.
You'll have to update the token the next time your FOLIO is updated.
* this is going to change with the release of Poppy
accounts
  • mod-feesfines
  • /accounts
  • amount
  • remaining
  • status
    • name : Open or Closed
  • paymentStatus
    • name : Outstanding, Paid partially, Paid fully, Waived partially, Waived fully, Transferred partially, Transferred fully, Refunded partially, Refunded fully, Credited fully, Credited partially, Cancelled item returned, Cancelled item renewed, Cancelled item declared lost, Cancelled as error, or Suspended claim returned
  • feeFineType
  • feeFineOwner
  • title
  • callNumber
  • barcode
  • materialType
  • location
  • metadata
    • createdDate
    • createdByUserId
    • updatedDate
    • updatedByUserId
  • dueDate
  • returnedDate
  • loanId =~ loans.id
  • userId
  • itemId
  • materialTypeId
  • feeFineId
  • ownerId
  • id
  • holdingsRecordId
  • instanceId
  • contributors
    • name
  • loanPolicyId
  • overdueFinePolicyId
  • lostItemFeePolicyId

alternativeTitleTypes
  • mod-inventory-storage
  • /alternative-title-types
  • FOLIO's reference data suggests that these should include "Uniform title" (aka 130, 240, or 730) and the options listed for the 2nd indicator of 246...
    • No type specified
    • Portion of title
    • Parallel title
    • Distinctive title
    • Other title
    • Cover title
    • Added title page title
    • Caption title
    • Running title
    • Spine title
    ...but I think that it would be good to add options that are relevant to other title fields (210, 222, 242, 243, 247, or 740)…
    • Abbreviated title
    • Abbreviated key title
    • Collective uniform title
    • Former title
    • Key title
    • Translation of title
    • Uncontrolled related/analytical title
    …so that is what I did

boundWithParts
callNumberTypes !!! not to be confused with classificationTypes which are associated with instances !!!
cancellationReasons
contributorNameTypes
contributorTypes
entries
fixedDueDateSchedules
holdingsRecords
holdingsRecordsSources
holdingsTypes

this is used to indicate whether an eResource is

  • open access,
  • perpetual access,
  • or subscription

identifierTypes
ids

e.g. GET /search/instances/ids?query=title="lutheran%20quarterly*"

note that while this is not case-sensitive it does, unlike the UI, require punctuation to be included in the query: e.g.
/search/instances/ids?query=contributors=kean%20thomas%20h* did not work
/search/instances/ids?query=contributors=kean,%20thomas%20h* did work

also note that this endpoint does not respect a limit - if there's anything to get you get it all


instanceNoteTypes
instanceRelationshipTypes
instanceRelationships
instanceTypes
instances
invoiceLines
  • mod-invoice-storage
  • /invoice-storage/invoice-lines
    • id
    • accountNumber
    • adjustments
    • adjustmentsTotal
    • description
    • fundDistributions
      • code
      • fundId
      • distributionType
      • expenseClassId
      • value
    • invoiceId
    • invoiceLineNumber
    • invoiceLineStatus
    • poLineId
    • quantity
    • releaseEncumbrance
    • subTotal
    • total
    • referenceNumbers
    • metadata
      • createdDate
      • createdByUserId
      • updatedDate
      • updatedByUserId:

invoices
  • mod-invoice-storage
  • /invoice-storage/invoices
    • id
    • adjustments
    • adjustmentsTotal
    • approvedBy
    • approvalDate
    • batchGroupId
    • chkSubscriptionOverlap
    • currency
    • enclosureNeeded
    • exchangeRate
    • exportToAccounting
    • folioInvoiceNo
    • invoiceDate
    • paymentDate
    • paymentMethod
    • status
    • source
    • subTotal
    • total
    • vendorInvoiceNo
    • voucherNumber
    • poNumbers
    • vendorId
    • acqUnitIds
    • metadata
      • createdDate
      • createdByUserId
      • updatedDate
      • updatedByUserId

items
loans
  • mod-circulation
  • /circulation/loans
    • id ~= accounts.loanId; scheduledNotices.loanId
    • userId =~ users.id
    • itemId =~ items.id; requests.itemId
    • itemEffectiveLocationIdAtCheckOut
    • status
      • name
    • loanDate
    • dueDate
    • returnDate
    • systemReturnDate
    • action
    • loanPolicyId
    • checkoutServicePointId
    • checkinServicePointId
    • overdueFinePolicyId
    • lostItemPolicyId
    • metadata
      • createdDate
      • createdByUserId
      • updatedDate
      • updatedByUserId
    • patronGroupAtCheckout
      • id
      • name
    • item
      • id
      • holdingsRecordId
      • instanceId
      • title
      • barcode
      • contributors
        • name
      • callNumber
      • callNumberComponents
        • callNumber
      • status
        • name
        • date
      • location
        • name
      • materialType
        • name
    • checkinServicePoint
      • name
      • code
      • discoveryDisplayName
      • description
      • shelvingLagTime
      • pickupLocation
    • checkoutServicePoint
      • name
      • code
      • discoveryDisplayName
      • description
      • shelvingLagTime
      • pickupLocation
    • borrower
      • firstName
      • lastName
      • middleName
      • barcode
    • loanPolicy
      • name
    • overdueFinePolicy
      • name
    • lostItemPolicy
      • name
    • feesAndFines
      • amountRemainingToPay

loantypes
locations
loccamps
locinsts
loclibs
logRecords
  • mod-audit
  • /audit-data/circulation/logs
    • id
    • userBarcode
    • items
      • itemBarcode
      • itemId
      • instanceId
      • holdingId
      • loanId
    • object ("N/A", "Fee/Fine", "Item Block", "Loan", "Manual Block", "Notice", "Patron Block", "Request", or "CheckIn/CheckOut")
    • action ("Age to lost", "Anonymize", "Billed", "Cancelled", "Cancelled as error", "Changed due date", "Check in", "Check out", "Checked in", "Checked out", "Checked out through override", "Claimed returned", "Closed loan", "Created", "Created through override", "Credited fully", "Declared lost", "Deleted", "Edited", "Expired", "Marked as missing", "Modified", "Moved", "Paid fully", "Paid partially", "Patron blocked from requesting", "Pickup expired", "Queue position reordered", "Recall requested", "Refunded fully", "Refunded partially", "Renewed", "Renewed through override", "Request status changed", "Send", "Send error", "Patron info added", "Staff info added", "Staff information only added", "Transferred fully", "Transferred partially", "Waived fully", or "Waived partially")
    • date
    • servicePointId
    • source
    • linkToIds
      • userId (and/or ... requestId, feeFineId, templateId, noticePolicyId ... ?)

lostItemFeePolicies
  • mod-feesfines
  • /lost-item-fees-policies
    • name
    • description
    • itemAgedLostOverdue
      • duration
      • intervalId
    • patronBilledAfterAgedLost
      • duration
      • intervalId
    • recalledItemAgedLostOverdue
      • duration
      • intervalId
    • patronBilledAfterRecalledItemAgedLost
      • duration
      • intervalId
    • chargeAmountItem
      • chargeType
      • amount
    • lostItemProcessingFee
    • chargeAmountItemPatron
    • chargeAmountItemSystem
    • lostItemChargeFeeFine
      • duration
      • intervalId
    • returnedLostItemProcessingFee
    • replacedLostItemProcessingFee
    • replacementProcessingFee
    • replacementAllowed
    • lostItemReturned
    • metadata
      • createdDate
      • createdByUserId
      • updatedDate
      • updatedByUserId
    • id

mtypes
overdueFinePolicies
  • mod-feesfines
  • /overdue-fines-policies
    • name
    • description
    • overdueFine
      • quantity
      • intervalId
    • countClosed
    • maxOverdueFine
    • forgiveOverdueFine
    • gracePeriodRecall
    • maxOverdueRecallFine
    • metadata
      • createdDate
      • createdByUserId
      • updatedDate
      • updatedByUserId
    • id

permissionNames
permissionUsers
permissions
  • mod-permissions
  • /perms/permissions
    • permissions
      • permissionName
      • displayName
      • id
      • description
      • tags
      • subPermissions
      • childOf
      • grantedTo
      • mutable
      • visible
      • dummy
      • deprecated
      • moduleName
      • moduleVersion

poLines
  • mod-orders-storage
  • /orders-storage/po-lines
    • id
    • edition
    • checkinItems
    • acquisitionMethod
    • automaticExport
    • alerts
    • claims
    • collection
    • contributors
      • contributor
      • contributorNameTypeId
    • cost
      • listUnitPrice
      • currency
      • additionalCost
      • discountType
      • quantityPhysical
      • poLineEstimatedPrice
    • description
    • details
      • productIds
        • productId
        • productIdType
    • fundDistribution
      • code
      • fundId
      • expenseClassId
      • distributionType
      • value
    • instanceId
    • isPackage
    • locations
    • orderFormat
    • paymentStatus
    • physical
      • createInventory
      • materialType
      • materialSupplier
      • volumes
    • poLineNumber
    • publicationDate
    • publisher
    • purchaseOrderId
    • receiptDate
    • receiptStatus
    • reportingCodes
    • rush
    • source
    • titleOrPackage
    • vendorDetail
      • instructions
      • vendorAccount
      • referenceNumbers
    • metadata
      • createdDate
      • createdByUserId
      • updatedDate
      • updatedByUserId

records
  • mod-source-record-storage
  • /source-storage/records
        "records" : [ {
          "id" : "00002755-f29b-4e6b-b5e8-0c445dbcf857",
          "snapshotId" : "86c283d0-7149-4501-8530-1577bea8bd53",
          "matchedId" : "00002755-f29b-4e6b-b5e8-0c445dbcf857",
          "generation" : 0,
          "recordType" : "MARC_BIB",
          "rawRecord" : {
            "id" : "00002755-f29b-4e6b-b5e8-0c445dbcf857",
            "content" : "01540cam a2200409 i 4500001000800000005001700008008004100025010001600066020003800082020003800120035001800158035002000176035002200196035002100218035002900239049001400268040003300282050002500315082001500340092002400355100002500379245012300404264006000527300005700587336002600644337002800670338002700698500002400725500007700749504005100826600005200877700002800929948002700957035002100984035002901005999009601034\u001Ea293434\u001E19961211174918.0\u001E951207s1996    dcua     bc   001 0 eng  \u001E  \u001Fa   95049654\u001E  \u001Fa1560986247\u001Fqcloth\u001Fqalkaline paper\u001E  \u001Fa1560986239\u001Fqpaper\u001Fqalkaline paper\u001E  \u001Fa(ckey)a293434\u001E  \u001Fa(Sirsi) a293434\u001E  \u001Fa(Sirsi) l95049654\u001E  \u001Fa(Sirsi) ADC-7586\u001E00\u001FiLCMARC/AUB-2279/VDEBBINK\u001E  \u001FaDRUM\u001FlNEW\u001E  \u001FaDLC\u001Fbeng\u001Ferda\u001FcDLC\u001FdDLC\u001FdMvI\u001E00\u001FaN6537.D4464\u001FbA4 1996\u001E00\u001Fa759.13\u001F220\u001E  \u001Fa759.13\u001FbD519Y H682a\u001E1 \u001FaHobbs, Susan,\u001Fd1945-\u001E14\u001FaThe art of Thomas Wilmer Dewing :\u001Fbbeauty reconfigured /\u001FcSusan A. Hobbs with a contribution by Barbara Dayer Gallati.\u001E 1\u001FaWashington, DC :\u001FbSmithsonian Institution Press,\u001Fc1996.\u001E  \u001Faxv, 224 pages :\u001Fbillustrations (some color) ;\u001Fc29 cm\u001E  \u001Fatext\u001Fbtxt\u001F2rdacontent\u001E  \u001Faunmediated\u001Fbn\u001F2rdamedia\u001E  \u001Favolume\u001Fbnc\u001F2rdacarrier\u001E  \u001FaExhibition catalog.\u001E  \u001Fa\"The Brooklyn Museum in association with Smithsonian Institution Press.\"\u001E  \u001FaIncludes bibliographical references and index.\u001E10\u001FaDewing, Thomas Wilmer,\u001Fd1851-1938\u001FxExhibitions.\u001E1 \u001FaGallati, Barbara Dayer.\u001E  \u001Fa02/28/1997\u001Fb03/27/1998\u001E  \u001Fa(Sirsi) ADC-7586\u001E00\u001FiLCMARC/AUB-2279/VDEBBINK\u001E  \u001Fa759.13 D519Y H682a\u001FwDEWEY\u001Fc1\u001Fi31144004397963\u001FlSTACKS\u001FmDREWLIB\u001Fp$75.00\u001FrY\u001FsY\u001FtBOOK\u001Fu9/3/1997\u001E\u001D"
          },
          "parsedRecord" : {
            "id" : "00002755-f29b-4e6b-b5e8-0c445dbcf857",
            "content" : {
              "fields" : [ {
                "001" : "in00000797779"
              }, {
                "008" : "951207s1996    dcua     bc   001 0 eng  "
              }, {
                "005" : "20230319031605.1"
              }, {
                "010" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "   95049654"
                  } ]
                }
              }, {
                "020" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "1560986247"
                  }, {
                    "q" : "cloth"
                  }, {
                    "q" : "alkaline paper"
                  } ]
                }
              }, {
                "020" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "1560986239"
                  }, {
                    "q" : "paper"
                  }, {
                    "q" : "alkaline paper"
                  } ]
                }
              }, {
                "035" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "(ckey)a293434"
                  } ]
                }
              }, {
                "035" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "(Sirsi) a293434"
                  } ]
                }
              }, {
                "035" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "(Sirsi) l95049654"
                  } ]
                }
              }, {
                "035" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "(Sirsi) ADC-7586"
                  } ]
                }
              }, {
                "035" : {
                  "ind1" : "0",
                  "ind2" : "0",
                  "subfields" : [ {
                    "i" : "LCMARC/AUB-2279/VDEBBINK"
                  } ]
                }
              }, {
                "035" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "a293434"
                  } ]
                }
              }, {
                "049" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "DRUM"
                  }, {
                    "l" : "NEW"
                  } ]
                }
              }, {
                "040" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "DLC"
                  }, {
                    "b" : "eng"
                  }, {
                    "e" : "rda"
                  }, {
                    "c" : "DLC"
                  }, {
                    "d" : "DLC"
                  }, {
                    "d" : "MvI"
                  } ]
                }
              }, {
                "050" : {
                  "ind1" : "0",
                  "ind2" : "0",
                  "subfields" : [ {
                    "a" : "N6537.D4464"
                  }, {
                    "b" : "A4 1996"
                  } ]
                }
              }, {
                "082" : {
                  "ind1" : "0",
                  "ind2" : "0",
                  "subfields" : [ {
                    "a" : "759.13"
                  }, {
                    "2" : "20"
                  } ]
                }
              }, {
                "092" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "759.13"
                  }, {
                    "b" : "D519Y H682a"
                  } ]
                }
              }, {
                "100" : {
                  "ind1" : "1",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "Hobbs, Susan,"
                  }, {
                    "d" : "1945-"
                  } ]
                }
              }, {
                "245" : {
                  "ind1" : "1",
                  "ind2" : "4",
                  "subfields" : [ {
                    "a" : "The art of Thomas Wilmer Dewing :"
                  }, {
                    "b" : "beauty reconfigured /"
                  }, {
                    "c" : "Susan A. Hobbs with a contribution by Barbara Dayer Gallati."
                  } ]
                }
              }, {
                "264" : {
                  "ind1" : " ",
                  "ind2" : "1",
                  "subfields" : [ {
                    "a" : "Washington, DC :"
                  }, {
                    "b" : "Smithsonian Institution Press,"
                  }, {
                    "c" : "1996."
                  } ]
                }
              }, {
                "300" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "xv, 224 pages :"
                  }, {
                    "b" : "illustrations (some color) ;"
                  }, {
                    "c" : "29 cm"
                  } ]
                }
              }, {
                "336" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "text"
                  }, {
                    "b" : "txt"
                  }, {
                    "2" : "rdacontent"
                  } ]
                }
              }, {
                "337" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "unmediated"
                  }, {
                    "b" : "n"
                  }, {
                    "2" : "rdamedia"
                  } ]
                }
              }, {
                "338" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "volume"
                  }, {
                    "b" : "nc"
                  }, {
                    "2" : "rdacarrier"
                  } ]
                }
              }, {
                "500" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "Exhibition catalog."
                  } ]
                }
              }, {
                "500" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "\"The Brooklyn Museum in association with Smithsonian Institution Press.\""
                  } ]
                }
              }, {
                "504" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "Includes bibliographical references and index."
                  } ]
                }
              }, {
                "600" : {
                  "ind1" : "1",
                  "ind2" : "0",
                  "subfields" : [ {
                    "a" : "Dewing, Thomas Wilmer,"
                  }, {
                    "d" : "1851-1938"
                  }, {
                    "x" : "Exhibitions."
                  } ]
                }
              }, {
                "700" : {
                  "ind1" : "1",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "Gallati, Barbara Dayer."
                  } ]
                }
              }, {
                "948" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "02/28/1997"
                  }, {
                    "b" : "03/27/1998"
                  } ]
                }
              }, {
                "035" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "(Sirsi) ADC-7586"
                  } ]
                }
              }, {
                "035" : {
                  "ind1" : "0",
                  "ind2" : "0",
                  "subfields" : [ {
                    "i" : "LCMARC/AUB-2279/VDEBBINK"
                  } ]
                }
              }, {
                "999" : {
                  "ind1" : " ",
                  "ind2" : " ",
                  "subfields" : [ {
                    "a" : "759.13 D519Y H682a"
                  }, {
                    "w" : "DEWEY"
                  }, {
                    "c" : "1"
                  }, {
                    "i" : "31144004397963"
                  }, {
                    "l" : "STACKS"
                  }, {
                    "m" : "DREWLIB"
                  }, {
                    "p" : "$75.00"
                  }, {
                    "r" : "Y"
                  }, {
                    "s" : "Y"
                  }, {
                    "t" : "BOOK"
                  }, {
                    "u" : "9/3/1997"
                  } ]
                }
              }, {
                "999" : {
                  "ind1" : "f",
                  "ind2" : "f",
                  "subfields" : [ {
                    "s" : "00002755-f29b-4e6b-b5e8-0c445dbcf857"
                  }, {
                    "i" : "fd011f23-1fa4-4fce-9826-c49afef20415"
                  } ]
                }
              } ],
              "leader" : "01661cam a2200433 i 4500"
            }
          },
          "deleted" : false,
          "order" : 0,
          "externalIdsHolder" : {
            "instanceId" : "fd011f23-1fa4-4fce-9826-c49afef20415",
            "instanceHrid" : "in00000797779"
          },
          "additionalInfo" : {
            "suppressDiscovery" : false
          },
          "state" : "ACTUAL",
          "leaderRecordStatus" : "c",
          "metadata" : {
            "createdDate" : "2023-03-19T03:16:04.866+00:00",
            "createdByUserId" : "308a01e4-1108-4ea3-aa25-8b1b32cf7643",
            "updatedDate" : "2023-03-19T03:16:05.136+00:00",
            "updatedByUserId" : "308a01e4-1108-4ea3-aa25-8b1b32cf7643"
          }
        } ],
        

    to get a record for a given instanceId: /source-storage/records/$instanceId/formatted?idType=INSTANCE

    to delete an instance's record:

    $record = `curl -s -X GET $headers $baseURL/source-storage/records/$instanceId/formatted?idType=INSTANCE`;
    $hash = decode_json $record;
    $recordId = $hash->{'id'};
    $delete = `curl -s -X DELETE $headers $baseURL/source-storage/records/$recordId`;
    

    here is an example of how to pull data out of a record

    		$records = `curl -s -X GET -G $headers -d 'idType=INSTANCE' $baseURL/source-storage/records/$instanceId/formatted`;
    		$hash = decode_json $records;
    		for ( @{$hash->{'parsedRecord'}{'content'}{'fields'}} ) {
    			for ( @{$_->{'999'}{'subfields'}} ) {
    				$a = $_->{'a'};
    				$t = $_->{'t'};
    			}
    		}
    

requests
scheduledNotices
uploadDefinitions
  1. POST -d '{"fileDefinitions":[ { "name":"filename.mrc" } ]}' /data-import/uploadDefinitions
    this returns an uploadDefinition which includes two UUIDs that are required by the next step

  2. POST -d '@filename.mrc' /data-import/uploadDefinitions/$uploadDefinitionId/files/$fileDefinitionId
    this actually uploads the file to a folder named ./storage/upload/$uploadDefinitionId/$fileDefinitionId
    before the third step it is necessary to add jobProfileInfo to the uploadDefinition - this can be done using regex like so

    $uploadDefinition =~ s/^\{/\{\n "uploadDefinition" : \{/;
    $jobProfileInfo = qq[\n\ },\n "jobProfileInfo": { "id": "e34d7b92-9b83-11eb-a8b3-0242ac130003", "name": "Default - Create instance and SRS MARC Bib", "dataType": "MARC" }];
    $metadataRegex = qq[,\n "metadata" : .+\n.+\n.+\n.+\n.+\n.+];
    $uploadDefinition =~ s/$metadataRegex/$jobProfileInfo/;

  3. POST -d '$uploadDefinition' /data-import/uploadDefinitions/$uploadDefinitionId/processFiles

    • id
    • metaJobExecutionId
    • status
    • createdDate
    • fileDefinitions
      • id
      • sourcePath
      • name
      • status
      • jobExecutionId
      • uploadDefinitionId
      • createDate
      • uploadedDate
    • metadata
      • createdDate
      • createdByUserId
      • updatedDate
      • updatedByUserId

users
  • mod-users
  • /users
    • username
    • id ~= loans.userId; permissionUsers.userId; scheduledNotices.recipientUserId
    • externalSystemId
    • barcode =~ requests.requester.barcode
    • active (true or false)
    • patronGroup
    • departments
    • proxyFor
    • personal
      • lastName
      • firstName
      • middleName
      • email
      • phone
      • addresses
        • countryId
        • addressLine1
        • addressLine2
        • city
        • region (aka state)
        • postalCode
        • addressTypeId
        • primaryAddress (true or false)
      • preferredContactTypeId
    • enrollmentDate
    • expirationDate
    • createdDate
    • updatedDate
    • metadata
      • createdDate
      • createdByUserId
      • updatedDate
      • updatedByUserId
    • tags
      • tagList