Checkout

Start Checkout Process

POST /api/.../workflow

This method allows the caller to check out an item to a patron.

Request Information

Parameters
Name Type Required Description
WorkflowRequest DtoWorkflowRequest Yes Define this parameter in the request body.
DtoWorkflowRequest
Property Type Nullable Description
WorkflowRequestType Int No Required. For a checkout, this must be set to 2.
TxnBranchID Int No Transacting branch ID. This should represent where the request originated from. Typically the same as the logged on branch, but in the case of offline processing it would be the branch that was logged into during offline processing.
TxnUserID Int No Transacting Polaris user ID. This should represent who originally created this request. Typically the same as the logged on user, but in the case of offline processing it would be the user that was logged on during offline processing.
TxnWorkstationID Int No Transacting workstation ID. This should represent where the request originated from. Typically the same as the logged on workstation, but in the case of offline processing it would be the workstation that was logged into during offline processing.
RequestExtension DtoWorkflowRequestExtension No A check out request requires a DtoWorkflowRequestExtension that contains a DtoCheckoutData object.
WorkflowReplies List of DtoWorkflowReply Yes It is possible to pass in a list of replies for automated processing.
DtoWorkflowRequestExtension
Property Type Nullable Description
WorkflowRequestExtensionType Int No For a check out request, the extension type must be a 1 (CheckOutData).
Data Object No This must be an extension data object of type DtoCheckoutData
DtoCheckoutData
Property Type Nullable Description
CheckoutTypeID Int No
  • CHKOUT_NORM = 6
  • CHKOUTNORM_DIFFPAT = 7
  • RENEW_CHKOUT = 8
  • RENEW_PATSTAT = 9
  • CHKOUT_OFFL = 16
  • CHKOUTOFFL_DIFFPAT = 18
  • CHKOUT_EXPRESS = 34
  • CHKOUT_EXPRESS_DIFFPAT = 35
  • CHKOUT_OUTREACH = 36
  • CHKOUT_BBM = 37
  • CHKOUT_INNREACH_VISITINGPATRON = 46
PatronBarcode String No Barcode of patron.
ItemBarcode String No Barcode of item.
OfflineCheckoutDate DateTime Yes Provide a date if this is an offline checkout.
IsSpecialLoan Boolean No If set to true. Use provided special loan settings.
SpecialLoanUnits Int No Required if SpecialLoan is set to true.
  • Days = 1
  • Hours = 2
  • Minutes = 3
Set to 0 if not a special loan.
SpecialLoanUnitsNum Int No Required if SpecialLoan is set to true. Set to 0 if not a special loan.
IsOvernightPermitted Boolean Yes Used for special loans. Specify if overnight loans will be permitted when calculating the due date.
IsBBMBulkCheckout Boolean No Only set to true if processing a 'Borrower by mail' checkout.
IgnorePatronBlocksCheck Boolean No This option is typically used when checking multiple items out to the same patron. If the caller has opted to ignore the patron blocks, the API still needs to verify they have permission to bypass blocks. If they do not have permission, the standard patron blocks dialog will be returned.
IgnoreLoanLimitPromptForMaterialTypeIDs List of Integers No This option is typically used when checking multiple items out to the same patron. The caller may choose to provide a list of material type IDs that may be ignored on future checkouts (within this patron's checkout session). This basically allows them to only display the loan limit exceeded prompt a single time for each material type that is exceeded. The item record material type ID is returned in the prompt message's extension data. WorkflowPromptID's 6 and 33. The caller should store the ID for use in this list.
IgnoreMinimumAgePromptForMaterialTypeIDs List of Integers No This option is typically used when checking multiple items out to the same patron. The caller may choose to provide a list of material type IDs that may be ignored on future checkouts (within this patron's checkout session). This basically allows them to only display the min age prompt a single time for each material type that has a min age the current patron doesn't satisfy. The item record material type ID is returned in the prompt message's extension data. WorkflowPromptID 150. The caller should store the ID for use in this list.
IgnoreItemsOutLimitPrompt Boolean No This option is typically used when checking multiple items out to the same patron. If the caller has opted to ignore the item limits exceeded prompt, the API still needs to verify they have permission to bypass the loan limits block if blocks exist. If they do not have permission, a permission exception will be returned.
InnReach InnReachVisitingPatron Yes If this is an INN-Reach Visiting Patron Check-out, this holds the indentifying information for the patron from the borrowing institution. Required if it's a Visiting Patron check-out, set to null otherwise.
InnReachVisitingPatron
Property Type Nullable Description
PatronID String No Patron's ID from the borrowing institution
PatronName String Yes Patron's name
CentralID Integer No ID of the INN-Reach Central as defined in Polaris (InnReachCentrals table)
AgencyCode String No INN-Reach agency code from the borrowing institution
CentralPatronType Integer No INN-Reach patron type from the borrowing institution
UUID String No GUID returned from INN-Reach verify call which needs to be provided with each check-out transaction
Request body
application/json, text/json
{
    "WorkflowRequestType": 2,
    "TxnBranchID": 3,
    "TxnUserID": 1,
    "TxnWorkstationID": 923,
    "RequestExtension": {
        "WorkflowRequestExtensionType": 1,
        "Data": {
            "CheckoutTypeID": 6,
            "PatronBarcode": "21756003332081",
            "ItemBarcode": "123",
            "OfflineCheckoutDate": null,
            "IsSpecialLoan": false,
            "SpecialLoanUnits": 0,
            "SpecialLoanUnitsNum": 0,
            "IsOvernightPermitted": false,
            "IsBBMBulkCheckout": false,
            "IgnorePatronBlocksCheck": false,
            "IgnoreLoanLimitPromptForMaterialTypeIDs": false,
            "IgnoreMinimumAgePromptForMaterialTypeIDs": [1],
            "IgnoreItemsOutLimitPrompt": false,
            "InnReach": null
        }
    },
    "WorkflowReplies": null
}

Response Information

Example: DtoWorkflowAnswer - Check out placed successfully
application/json, text/json
{
    "WorkflowRequestGuid":"00000000-0000-0000-0000-000000000000",
    "WorkflowRequestType":2,
    "WorkflowStatus":1,
    "Prompt":null,
    "InformationMessages":[
        {
            "Type":1,
            "Title":"",
            "Message":"Checkout successful"
        }
    ],
    "AnswerExtension":{
        "WorkflowAnswerExtensionType":1,
        "Data":{
            "IsEphemeralItem":false,
            "EphemeralItemCount":0,
            "ItemRecordID":2230107,
            "ItemBarcode":"123456",
            "ItemTitle":"Harry Potter and the goblet of fire",
            "AssignedBranchID":3,
            "AssignedBranchName":"Amsterdam Free Library",
            "MaterialTypeID":1,
            "MaterialTypeDescription":"Book",
            "DueDate":"2016-02-02T23:59:59-05:00",
            "ShelfLocationID":0,
            "ShelfLocation":null,
            "Action":"Check Out",
            "CallNumber":"j Fict j Fict Row",
            "LoanUnitsType":1,
            "ItemsOutCount":2,
            "OverdueItemsCount":0,
            "LongOverdueItemsCount":0,
            "CurrentClaimCount":0,
            "CurrentLostCount":0,
            "PatronName":"Philip J Cole",
            "LocalHeldCount":0,
            "HoldRequestsILLHeldCount":0,
            "HoldRequestsLocalTotalCount":1,
            "HoldRequestsILLTotalCount":3,
            "OutstandingFines":8.6000,
            "CreditBalance":0.0000,
            "MediaDispenserServiceUrl": "",
            "MediaLocations":[{
                    "DispenserDescription":"A",
                    "SlotDescription":"4"
                }, {
                    "DispenserDescription":"A",
                    "SlotDescription":"5"
                }
            ]
        }
    },
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Patron is blocked
application/json, text/json
{
    "WorkflowRequestGuid":"342e8fd6-f509-4dc3-ab42-508962098242",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":1,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":3,
        "WorkflowPromptOptions":6,
        "Title":"Patron Blocks",
        "Message":"Patron is blocked.  Do you want to continue with this operation?",
        "PromptExtension":{
            "WorkflowPromptExtensionType":4,
            "Data":{
                "HeldItemBlock":true,"FirstLevelFineBlock":true,
                "UnreadMessageBlock":true,
                "SecondLevelFineBlock":false,
                "OverdueItemBlock":false,
                "ClaimLimitBlock":true,
                "BlockingNoteBlock":false,
                "CollectionAgencyBlock":false,
                "PatronSystemBlock":false,
                "LibraryAssignedBlock":false,
                "FreeTextBlock":false,
                "PatronBlocks":[
                    {
                        "PatronID":299377,
                        "PatronFullName":"Franklin, Jeffrey D",
                        "BlockType":3,
                        "BlockID":104,
                        "BlockDescription":"Patron owes money. Amount due: $9.15"
                    },
                    {
                        "PatronID":299377,
                        "PatronFullName":"Franklin, Jeffrey D",
                        "BlockType":3,
                        "BlockID":105,
                        "BlockDescription":"Patron has exceeded the number of claims allowed at one time"
                    },
                    {
                        "PatronID":299377,
                        "PatronFullName":"Franklin, Jeffrey D",
                        "BlockType":3,
                        "BlockID":108,
                        "BlockDescription":"Patron has unread messages"
                    },
                    {
                        "PatronID":299377,
                        "PatronFullName":"Franklin, Jeffrey D",
                        "BlockType":2,
                        "BlockID":4,
                        "BlockDescription":"Paid user fee at MEC"
                    }
                ],
                "LinkedPatronBlocks":[]
            }
        }
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Item is blocked
application/json, text/json
{
    "WorkflowRequestGuid":"4e979891-31f7-44a4-8476-17234f1729fe",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":7,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":2,
        "WorkflowPromptOptions":6,
        "Title":"Item is Blocked","Message":"Do you want to continue with this operation?",
        "PromptExtension":{
            "WorkflowPromptExtensionType":13,
            "Data":{
                "ItemTitle":"Space, the next twenty-five years",
                "BlockDescriptions":[
                    "Return to Display","This is a free text item block!"
                ]
            }
        }
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Item is non-circulating (restricted)
application/json, text/json
{
    "WorkflowRequestGuid":"c7aacd9b-8450-4d85-84e0-ea9bfbbe3d6f",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":5,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":1,
        "WorkflowPromptOptions":1,
        "Title":"Item is restricted for circulation",
        "Message":"Circulation of this item for patron code Regular is restricted. Do you want to circulate this item?",
        "PromptExtension":null
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Restricted Material (non-circulating based on patron and material type)
application/json, text/json
{
    "WorkflowRequestGuid":"149a12db-93f0-4d8f-a6f5-debbbc126b5a",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":6,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":1,
        "WorkflowPromptOptions":6,
        "Title":"Restricted material",
        "Message":"Patron (Astro Jetson) is restricted from borrowing Equipment. Do you want to continue?",
        "PromptExtension":{
            "WorkflowPromptExtensionType":2,
            "Data":12
        }
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Patron exceeded loan limit
application/json, text/json
{
    "WorkflowRequestGuid":"d524ad07-53e1-458e-8ff7-a72d695de709",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":34,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":1,
        "WorkflowPromptOptions":6,
        "DefaultPromptOption":5,
        "Title":"Exceeded total items out limit","Message":"Patron (Astro Jetson) has exceeded the total items out limit. Patron has a total of 5 items of 3 permitted. Do you want to continue?",
        "PromptExtension":null
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Item is in transit
application/json, text/json
{
    "WorkflowRequestGuid":"bc8887c2-48e8-41c9-aa67-6d0a3d5b5fc3",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":21,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":1,
        "WorkflowPromptOptions":6,
        "DefaultPromptOption":4,
        "Title":"In-transit item",
        "Message":"This item is in-transit to Stillwater Public Library. Do you want to continue with the checkout?",
        "PromptExtension":null
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Item belongs to different branch
application/json, text/json
{
    "WorkflowRequestGuid":"8bd47b36-85ca-4a19-92b8-405ff7fe6788",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":4,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":1,
        "WorkflowPromptOptions":6,
        "DefaultPromptOption":5,
        "Title":"Item assigned branch",
        "Message":"This item is assigned to Argyle Free Library.  Do you want to continue with this transaction?",
        "PromptExtension":null
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Place item in-transit
application/json, text/json
{
    "WorkflowRequestGuid":"8bd47b36-85ca-4a19-92b8-405ff7fe6788",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":15,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":1,
        "WorkflowPromptOptions":1,
        "DefaultPromptOption":2,
        "Title":"Place in-transit",
        "Message":"Do you want to put this item In-Transit to Argyle Free Library (ARG)?",
        "PromptExtension":null
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Item is out to another patron
application/json, text/json
{
    "WorkflowRequestGuid":"1d45e5a7-c758-4b53-8632-c20ee85c10ea",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":23,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":1,
        "WorkflowPromptOptions":6,
        "DefaultPromptOption":5,
        "Title":"Item is out to another patron",
        "Message":"This item is already checked out to another patron. Do you want to continue with the check-out to Astro Jetson?",
        "PromptExtension":null
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Overdue fine (out to different patron)
application/json, text/json
{
    "WorkflowRequestGuid":"790a0a66-3a2f-438d-9f5b-2f164a2420b9",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":13,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":7,
        "WorkflowPromptOptions":5,
        "DefaultPromptOption":7,
        "Title":"Overdue Fine",
        "Message":"",
        "PromptExtension":{
            "WorkflowPromptExtensionType":9,
            "Data":{
                "FineAmount":0.8000,
                "IsCheckingOutToDifferentPatron":true,
                "ItemBarcode":"123",
                "ItemDueDate":"2014-03-25T23:59:59-04:00",
                "ItemRecordID":2254290,
                "ItemTitle":"My girl 2 [videorecording]",
                "PatronBarcode":"21756003332071",
                "PatronBranchID":3,
                "PatronID":358368,
                "PatronName":"Gustopher Young"
            }
        }
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Resolve lost billed item
application/json, text/json
{
    "WorkflowRequestGuid":"76478262-7afc-494c-96c9-2aab85586e1d",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":11,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":5,
        "WorkflowPromptOptions":6,
        "DefaultPromptOption":0,
        "Title":"Resolve lost item",
        "Message":"",
        "PromptExtension":{
            "WorkflowPromptExtensionType":13,
            "Data":{
                "DisplayData":{
                    "PatronID":0,
                    "ItemRecordID":0,
                    "ItemBarcode":"0000601883630",
                    "AssignedBranchID":0,
                    "AssociatedBibRecordID":null,
                    "ReplacementAmount":4.9500,
                    "ReplacementOutstanding":4.9500,
                    "ReplacementPaid":0.0,
                    "ReplacementWaived":0.0,
                    "ProcessingAmount":3.0000,
                    "ProcessingOutstanding":3.0000,
                    "ProcessingPaid":0.0,
                    "ProcessingWaived":0.0,
                    "OverdueAmount":0.0,
                    "OverdueOutstanding":0.0,
                    "OverduePaid":0.0,
                    "OverdueWaived":0.0,
                    "TotalFine":7.9500,
                    "ReplacementActions":[6,-2],
                    "ProcessingActions":[6,-2],
                    "OverdueActions":[-2],
                    "ModifyAmountPermitted":false,
                    "ItemTitle":"Big Dog and Little Dog going for a walk",
                    "PatronBarcode":"21756003332060",
                    "PatronName":"Astro Jetson",
                    "Billed":false,
                    "LostOrDueDate":"2014-04-17T17:06:43.57-04:00",
                    "BilledDate":null,
                    "Caption":"Resolve lost item",
                    "LostItem":true,
                    "OutItem":false,
                    "DeclareLost":false,
                    "CircResolveBilledItem":false,
                    "CircResolveLostItem":true,
                    "ModifyOverdueNotAllowed":true,
                    "ModifyProcessingNotAllowed":false,
                    "ModifyReplacementNotAllowed":false,
                    "CheckoutBriefInfo":null
                },
                "ReplTransAmount":4.9500,
                "ProcTransAmount":3.0000,
                "OvdTransAmount":0.0,
                "ReplCostTxnID":3675034,
                "ProcChargeTxnID":3675035,
                "OVDChargeTxnID":0,
                "HeldItemBlock":false,
                "ChargeOverdue":true,
                "Billed":false,
                "LostItem":false,
                "OutItem":false,
                "CircResolveBilledItem":false,
                "CircResolveLostItem":false,
                "ReplAttachedToCCOrder":false,
                "ProcAttachedToCCOrder":false,
                "OVDAttachedToCCOrder":false,
                "PaymentGateway":5
            }
        }
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Brief item data
application/json, text/json
{
    "WorkflowRequestGuid":"80d4f9f2-5a99-4f3a-b2d6-c12f8b3cca4c",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":55,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":15,
        "WorkflowPromptOptions":6,
        "DefaultPromptOption":5,
        "Title":"Brief Item Entry",
        "Message":"Create a circ on-the-fly item record.",
        "AlternateYesText":"",
        "AlternateNoText":"",
        "AlternateCancelText":"",
        "AlternateContinueText":"",
        "PromptExtension":{
            "WorkflowPromptExtensionType":21,
            "Data":{
                "Barcode":"0000055562",
                "Title":null,
                "Author":null,
                "CallNumberPrefix":null,
                "CallNumberSuffix":null,
                "CallNumber":null,
                "FreeTextBlock":"You are blocked!",
                "OTFBlock":true,
                "MaterialTypeID":7,
                "LoanPeriodCodeID":9,
                "FineCodeID":17,
                "ShelfLocationID":0,
                "ClassificationNumber":"C"
            }
        }
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Checkout charge and overdue entry

CheckoutCharge = base checkout charge + tax (if tax rate is available)

TotalFine = CheckoutCharge + FineAmount

application/json, text/json
{
    "WorkflowRequestGuid":"13b828d6-0f23-4db2-b063-1af0b6043e9a",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":60,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":16,
        "WorkflowPromptOptions":6,
        "DefaultPromptOption":5,
        "Title":"Renew chargeable overdue item",
        "Message":"Cancel the dialog.",
        "AlternateYesText":"",
        "AlternateNoText":"",
        "AlternateCancelText":"",
        "AlternateContinueText":"",
        "PromptExtension":{
            "WorkflowPromptExtensionType":9,
            "Data":{
                "FineAmount":0.5000,
                "IsCheckingOutToDifferentPatron":false,
                "ModifyFineAllowed":true,
                "ItemBarcode":"123",
                "ItemDueDate":"2016-06-29T23:59:00-04:00",
                "ItemRecordID":2254290,
                "ItemTitle":"My girl 2 [videorecording]",
                "PatronBarcode":"21756003332060",
                "PatronBranchID":3,
                "PatronID":358255,
                "PatronName":"Astro \"ruh roh\" Jetson",
                "CheckoutCharge":1.2500,
                "CheckoutTaxAmount":0.02,
                "TotalFine":1.75,
                "CheckoutChargeActions":[1,2,5],
                "TaxRate":0.0222
            }
        }
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowAnswer - Check media dispenser
application/json, text/json
{
    "WorkflowRequestGuid":"4aa0b0f0-ce8c-423a-a1de-0d0d3450b5a0",
    "WorkflowRequestType":2,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":92,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":31,
        "WorkflowPromptOptions":6,
        "DefaultPromptOption":5,
        "Title":"Media Dispenser",
        "Message":"Checking media dispenser...",
        "AlternateYesText":"",
        "AlternateNoText":"",
        "AlternateCancelText":"",
        "AlternateContinueText":"",
        "PromptExtension":{
            "WorkflowPromptExtensionType":32,
            "Data":{
                "ItemBarcode":"0003800222923",
                "PatronBarcode":"21756003332060",
                "PreviousPatronBarcode":null,
                "MediaDispenserServiceUrl":"https://young-w10.polarislibrary.com/Dx2Simulator/ItgDiscXpressService.asmx"
            }
        }
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":6,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
Example: DtoWorkflowReply - Check media dispenser
application/json, text/json
{
    "WorkflowPromptID": 92,
    "WorkflowPromptResult": 5,
    "ReplyValue": null,
    "ReplyExtension":{
        "WorkflowReplyExtensionType": 8, 
        "Data": {
            "MediaLocations":[{
                    "DispenserDescription": "A", 
                    "SlotDescription": "1"
                }
            ]
        }
    }
}
Example: DtoWorkflowAnswer - Patron does not meet age requirement
application/json, text/json
{
   "WorkflowRequestGuid":"2dc456dc-c438-447c-a832-444272c1f9ba",
   "WorkflowRequestType":2,
   "WorkflowStatus":-3,
   "Prompt":{
      "WorkflowPromptID":150,
      "Name":null,
      "Description":null,
      "WorkflowPromptType":1,
      "WorkflowPromptOptions":6,
      "DefaultPromptOption":5,
      "Title":"Minimum age alert",
      "Message":"Patron (Mr. Astro Jetson Jr.) does not meet the minimum age requirements for this material type. Do you want to continue?",
      "PromptExtension":null
   },
   "InformationMessages":[],
   "AnswerExtension":null,
   "CircTranType":6,
   "ReceiptType":0,
   "ReceiptUrl":"",
   "FineEReceiptSent":false
}

HTTP Response Codes

Code Description
200 OK. Success
403 Not permitted.

Required Permissions

Permission IDs found here.

    AccessCirculationControl_Allow




*** Processing the Results *** TEMPORARY DOCUMENATION *** IGNORE ***

API Procedural calls act like a “conversation”. You initiate the conversation by calling the method with a ProcedureStep value of 1 (Start).

Example:
"ProcedureStep": 1

The checkout procedure will process the DtoCheckOutData that was posted to it. It will reply to your checkout request with a DtoCheckOutResult that contains a set of PAPI Values:

Example:
"PAPIProcedure":0,
"PAPIProcedureStep":2,
"PAPIAction":2,
"PAPIActionProcedure":0,
"PAPIPromptType":4,
"PAPIStopType":0,
"PAPIReturnCode":-6101,
"Success":false,
"Message":"Patron is blocked. Do you want to continue with this operation?"

You should always check the PAPIReturnCode. 0 or greater represents a successful call. The procedure completed. A return code of < 0, means the call did not complete or more processing is required. In this case, a -6101 was returned. This tells us the checkout patron was blocked. You may also look at the PAPIProcedureStep that was returned. It is set to 2, which signifies the process stopped on “CheckPatronBlocks”.

Next, look at the PAPIAction value. Given the value 2 (Prompt), it is telling the caller that they need to display a prompt. The Message property contains the prompt text. The PAPIPromptType value is 4, which indicates a Yes/No prompt.

The caller should display a prompt that displays the message and provide “Yes” and “No” options. Because this is a patron block return code, additional information is returned that should be displayed. The PatronBlocks and LinkedPatronBlocks arrays contain additional blocking information. In the native staff client, the following dialog displays:

The caller replies to this checkout response by calling checkout again, but this time the procedure step will be set to 2. The current step is returned in the DtoCheckOutResult:

Example:
"PAPIProcedureStep":2

The answer is set to 1 (yes) or 0 (no).

Example:
        {
          "CircTranType": 6,
          "PatronBarcode": "21756003332022",
          "ItemBarcode": "0004300060946",
          "LoginBranchID": 3,
          "UserID": 923,
          "WorkstationID": 470,
          "OfflineCheckoutDate": null,
          "SpecialLoan": false,
          "SpecialLoanUnits": 0,
          "SpecialLoanUnitsNum": 0,
          "SpecialLoanDueDate": null,
          "BBMBulkCheckout": false,
          "ProcedureStep": 1,
          "Answer": 0,
          "EphemeralItemCount": 0
        }

Continue this process until the conversation is complete. Please note that by not replying, you are simply choosing to discontinue with the checkout operation. It is a best practice to follow-through the process until the conversation is complete.

Reference for Polaris API Procedure values:

public enum PAPIProcedureStatus
{
	Error = -1,
	Exit = 0,
	Continue = 1
}

public enum PAPIProcedure
{
	None = 0,
	CheckIn = 1,
	CheckOut = 2,
	CreateOTFItem = 3,
	PatronRegistration = 4,
	PlaceHoldRequest = 5,
	RenewItemCheckout = 6
}

public enum PAPIProcedureStep
{
	None = 0,
	Start = 1,
	CheckPatronBlocks = 2,
	GetEphemeralItemCount = 3,
	CheckAssignedBranch = 4,
	PlaceItemInTransit = 5,
	PermitOvernightLoan = 6,
	NonCirculatingItemBlock = 7,
	RestrictedPatronCodeBlock = 8,
	CheckItemBlocks = 9,
	CheckOutItemInTransit = 10,
	FloatingCheckIn = 11,
	PlaceInTransit = 12,
	OutToDifferentPatron = 13,
	ResolveLostBilledItem = 14
}

public enum PAPIAction
{
	None = 0,
	Stop = 1,
	Prompt = 2,
	Procedure = 3
}

public enum PAPIStopType
{
	None = 0,
	Exit = 1,
	Error = 2
}

public enum PAPIPromptType
{
	None = 0,
	Warning = 1,
	Continue = 2,
	Count = 3,
	YesNo = 4,
	YesNoCancel = 5,
	Acknowledge = 6,
	ResolveLostBilledItem = 7
}

public enum PAPIPromptResult
{
	None = -1,
	No = 0,
	Yes = 1,
	OK = 2,
	Cancel = 3,
	Abort = 4,
	Retry = 5,
	Ignore = 6
}