Add or Update Bibliographic Record

Start Add or Update Bib Record Process

POST /api/.../workflow

This method allows the caller to add a new or update an existing bibliographic record. When used for update, if the MARC21 collection is not passed in, only the 'Display in PAC', 'Do not overlay' and 'Owner' columns will be updated.

The API will load the existing bib record and update.

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 add or update bib record, this must be set to 13.
TxnBranchID Int No Transacting branch ID.
TxnUserID Int No Transacting Polaris user ID.
TxnWorkstationID Int No Transacting workstation ID.
RequestExtension DtoWorkflowRequestExtension No An update bib record request requires a DtoAddOrUpdateBibRecordExtensionData 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 an add or update bib record request, the extension type must be a 12 (AddOrUpdateBibRecordData).
Data Object No This must be an extension data object of type DtoAddOrUpdateBibRecordExtensionData
DtoAddOrUpdateBibRecordExtensionData
Property Type Nullable Required Description
BibRecordIDIntNoNoBibliographic record ID. Only required if updating an existing bibliographic record.
IsTemplateBooleanNoYesIs this a bib template record? Default: false
IsNewRecordBooleanNoYesIs this a new bib record? Default: false
DisplayInPACBooleanNoNo
DoNotOverlayBooleanNoNo
RecordOwnerIDIntNoNo
RecordStatusIDIntNoNo
MARC21CollectionMARC21CollectionNoNo

Example: Update only header data

Request body
application/json, text/json
{
    "WorkflowRequestType":13,
    "TxnBranchID":"3",
    "TxnUserID":"1",
    "TxnWorkstationID":"1242",
    "WorkflowReplies":null,
    "RequestExtension":{
        "WorkflowRequestExtensionType":12,
        "Data":{
            "BibRecordID":"1126739",
            "IsTemplate":false,
            "IsNewRecord":false,
            "DisplayInPAC":false,
            "DoNotOverlay":false,
            "RecordOwnerID":"1",
            "RecordStatusID":1,
            "MARC21Collection":null
        }
    }
}
Response Information
<== Answer from server - If 'Display in PAC' is false
Server would like caller to prompt for more input. Display information is provided.
{
    "WorkflowRequestGuid":"7fc0c2b3-2ba8-42fa-81a6-9fb088fac31f",
    "WorkflowRequestType":13,
    "WorkflowStatus":-3,
    "Prompt":{
        "WorkflowPromptID":66,
        "Name":null,
        "Description":null,
        "WorkflowPromptType":1,
        "WorkflowPromptOptions":6,
        "DefaultPromptOption":5,
        "Title":"Display in PAC",
        "Message":"This record will no longer display in the online catalog. Do you want to continue saving ?",
        "AlternateMessage":"",
        "AlternateYesText":"",
        "AlternateNoText":"",
        "AlternateCancelText":"",
        "AlternateContinueText":"",
        "PromptExtension":null
    },
    "InformationMessages":[],
    "AnswerExtension":null,
    "CircTranType":0,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}
==> Caller sends a reply to the server indicating they want to continue (PromptResult=5).
PUT /api/.../workflow/7fc0c2b3-2ba8-42fa-81a6-9fb088fac31f
{
    "WorkflowPromptID": 66,
    "WorkflowPromptResult": 5,
    "ReplyValue": null,
    "ReplyExtension": null
}
Example: DtoWorkflowAnswer - The bibliographic record has been updated.
application/json, text/json
{
    "WorkflowRequestGuid":"7fc0c2b3-2ba8-42fa-81a6-9fb088fac31f",
    "WorkflowRequestType":13,
    "WorkflowStatus":1,
    "Prompt":null,
    "InformationMessages":[{
        "Type":1,
        "Title":"",
        "Message":"The bibliographic record has been updated."
    }],
    "AnswerExtension":null,
    "CircTranType":0,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}

Example: Update marc data

(For an update marc data process that suppresses some of the bibliographic record specific prompts, see Update MARC Record.)

Request body
application/json, text/json
{
  "WorkflowRequestType": 13,
  "TxnBranchID": "3",
  "TxnUserID": "1",
  "TxnWorkstationID": "1242",
  "WorkflowReplies": null,
  "RequestExtension": {
    "WorkflowRequestExtensionType": 12,
    "Data": {
      "BibRecordID": "1126739",
      "IsTemplate": false,
      "IsNewRecord": false,
      "DisplayInPAC": true,
      "DoNotOverlay": false,
      "RecordOwnerID": "1",
      "RecordStatusID": 1,
      "MARC21Collection": {
        "records": [
          {
            "id": 0,
            "leader": "|||||cam a22|||||uu 4500",
            "controlfields": [
              {
                "tag": "001",
                "data": "1126739",
                "position": 1
              },
              {
                "tag": "003",
                "data": "PolarisTest",
                "position": 2
              },
              {
                "tag": "005",
                "data": "20210123172217.0",
                "position": 3
              },
              {
                "tag": "008",
                "data": "171108|||||||||||||||||||||||||| |||||||",
                "position": 4
              }
            ],
            "datafields": [
              {
                "tag": "245",
                "ind1": "1",
                "ind2": "0",
                "subfields": [
                  {
                    "code": "a",
                    "data": "Test OTF Title 1000"
                  }
                ],
                "position": 5
              }
            ]
          }
        ]
      }
    }
  }
}
Response Information
Example: DtoWorkflowAnswer - The bibliographic record has been updated.
application/json, text/json
{
    "WorkflowRequestGuid":"00000000-0000-0000-0000-000000000000",
    "WorkflowRequestType":13,
    "WorkflowStatus":1,
    "Prompt":null,
    "InformationMessages":[{
        "Type":1,
        "Title":"",
        "Message":"The bibliographic record has been updated."
    }],
    "AnswerExtension":null,
    "CircTranType":0,
    "ReceiptType":0,
    "ReceiptUrl":"",
    "FineEReceiptSent":false
}

Possible Responses

Example: DtoWorkflowAnswer - Duplicate records found.
application/json, text/json
{
  "WorkflowRequestGuid": "e090eaf9-2abe-438e-ad1a-c0ef5db94e15",
  "WorkflowRequestType": 13,
  "WorkflowStatus": -3,
  "Prompt": {
    "WorkflowPromptID": 87,
    "Name": null,
    "Description": null,
    "WorkflowPromptType": 26,
    "WorkflowPromptOptions": 2,
    "DefaultPromptOption": 3,
    "Title": "Bibliographic Record Duplicate Detection Results",
    "Message": "",
    "AlternateMessage": "",
    "AlternateYesText": "Replace",
    "AlternateNoText": "Continue",
    "AlternateCancelText": "",
    "AlternateContinueText": "",
    "PromptExtension": {
      "WorkflowPromptExtensionType": 30,
      "Data": {
        "BibRecordID": 1331401,
        "Title": "Frog Face and the three boys",
        "Author": "Trembath, Don, 1963-",
        "PrimaryMARCTOMID": 1,
        "MARCTOMDescription": "Book",
        "NumberOfLinkedItems": 0,
        "RecordStatusID": 1,
        "RecordStatusDescription": "Final",
        "LaunchedFromSavingRecord": true,
        "DeletedRecord": false,
        "TitleNewRecord": "",
        "AuthorNewRecord": "",
        "OwnerNewRecord": "",
        "OwnerNewRecordID": 1,
        "BibReplacementRecords": [
          {
            "RecordID": 1331392,
            "RecordStatusID": 1,
            "RecordStatusDescription": "Final",
            "OwnerID": 1,
            "OwnerName": "RD-GIZMO 7.3 Development System",
            "Author": "Trembath, Don, 1963-",
            "Title": "Frog Face and the three boys",
            "FormatID": 1,
            "FormatDescription": "Book",
            "NumberOfLinkedItems": 3,
            "Reason": "LCCN;ISBN;Author/Title;Title/260 $c;Just Title and;Title/LCCN",
            "DoNotOverlay": true
          },
          {
            "RecordID": 1331393,
            "RecordStatusID": 1,
            "RecordStatusDescription": "Final",
            "OwnerID": 1,
            "OwnerName": "RD-GIZMO 7.3 Development System",
            "Author": "Trembath, Don, 1963-",
            "Title": "Frog Face and the three boys",
            "FormatID": 1,
            "FormatDescription": "Book",
            "NumberOfLinkedItems": 0,
            "Reason": "LCCN;ISBN;Author/Title;Title/260 $c;Just Title and;Title/LCCN",
            "DoNotOverlay": false
          }
        ],
        "CheckBibModifyPermission": false,
        "MaintainControlNumberEnabled": false
      }
    }
  },
  "InformationMessages": [],
  "AnswerExtension": null,
  "CircTranType": 0,
  "ReceiptType": 0,
  "ReceiptUrl": "",
  "FineEReceiptSent": false
}
Reply options for the duplicate records prompt are:
  • Yes - 2 (Replace)
  • No - 3 (Continue)
  • Cancel - 4 (Cancel)
If replace records (Yes=2) is selected, the ReplaceRecordsReplyData (WorkflowReplyExtensionType=18) object is used in the reply extension:
application/json, text/json
{
    "WorkflowPromptID": 87,
    "WorkflowPromptResult": 2,
    "ReplyValue": null,
    "ReplyExtension": {
        "WorkflowReplyExtensionType": 18,
        "Data": {
            "RecordToMaintainID": 0,
            "RecordIDs": [1331393]
        }
    }
}

If a new bib record is being added and duplicates exist, the caller may choose to maintain an existing records ID by supplying 'RecordToMaintainID'.


Example: DtoWorkflowAnswer - Errors Found With Records To Replace.
application/json, text/json
{
  "WorkflowRequestGuid": "344b6791-a299-4557-aa5e-702a523ad161",
  "WorkflowRequestType": 13,
  "WorkflowStatus": -3,
  "Prompt": {
    "WorkflowPromptID": 148,
    "Name": null,
    "Description": null,
    "WorkflowPromptType": 50,
    "WorkflowPromptOptions": 6,
    "DefaultPromptOption": 5,
    "Title": "Errors Found With Records To Replace",
    "Message": "No selected records can be replaced. Do you want to continue?",
    "AlternateMessage": "",
    "AlternateYesText": "",
    "AlternateNoText": "",
    "AlternateCancelText": "",
    "AlternateContinueText": "",
    "PromptExtension": {
      "WorkflowPromptExtensionType": 44,
      "Data": {
        "ShowCheckbox": false,
        "CheckboxText": null,
        "IsChecked": false,
        "Columns": [
          {
            "Name": "Record ID",
            "Key": "RecordID",
            "Type": "Text"
          },
          {
            "Name": "Reason",
            "Key": "Reason",
            "Type": "Text"
          }
        ],
        "Data": [
          {
            "RecordID": 1331392,
            "Title": "Frog Face and the three boys",
            "Reason": "Bibliographic record 1331392 has been protected from overlay and cannot be replaced."
          }
        ],
        "ObjectType": 2,
        "ObjectIDPropertyName": "RecordID"
      }
    }
  },
  "InformationMessages": [],
  "AnswerExtension": null,
  "CircTranType": 0,
  "ReceiptType": 0,
  "ReceiptUrl": "",
  "FineEReceiptSent": false
}

Possible Steps and Related Prompts or Blocks

Prompts - DtoWorkflowAnswer.Prompt
Step WorkflowPromptID WorkflowPromptType WorkflowPromptOptions Title
ProcessDisplayInPAC 66 (NoDisplayInPAC) 2 (Text) 6 (ContinueCancel) "Display in PAC"
CheckMARC21RecordStructureAndRequiredFields 66 (NoDisplayInPAC) 45 (BibMARCFormatError) 8 (Ok) "MARC Validation Results"
AutoAuthCreate 66 (NoDisplayInPAC) 44 (BibRemoteDBError) 8 (Ok) "Remote Automatic Authority Control"
CheckHeadings 85 (CheckHeadingsAssistant) 24 (CheckHeadingsAssistant) 6 (ContinueCancel) "Check Headings Assistant"
CheckMARC21FormatOnSave 86 (CheckMARC21FormatOnSave) 25 (CheckMARC21FormatOnSave) 6 (ContinueCancel) if validation issues can be ignored. Otherwise, 8 (Ok) "MARC Validation Results"
CheckForDuplicateBibs 87 (BibDuplicateDetectionResults) 26 (BibDuplicateDetectionResults) 2 (YesNoCancel) - replace, continue or cancel "Bibliographic Record Duplicate Detection Results"
VerifyBibRecordsToReplace 148 (BibReplaceRecordErrorsFound) 50 (Table) 2 (YesNoCancel) - replace, continue or cancel "Errors Found With Records To Replace"
RemoveLinkedItemOTFBlock 121 (RemoveOTFBlocks) 2 (Text) 1 (YesNo) "Remove on-the-fly blocks"
Blocks - DtoWorkflowAnswer.WorkflowStatus = -2 (ErrorOccurred)
Step InformationMessages.Type InformationMessages.Title InformationMessages.Message
ConfirmSave 2 (Failure) n/a "An error occurred determining whether the bib is an existing, provisional record."
ValidateHeaderFields 2 (Failure) n/a "Owning organization does not exist."
ValidateHeaderFields 5 (ErrorAcknowledgement) "Resource entity errors were found" html formatted validation and structual issues
CheckLeader005AndRecordStatus 5 (ErrorAcknowledgement) "Save record error" "You cannot create a bibliographic record with the LDR/05 = d (deleted).
Select another value in LDR/05 and save the record."
CheckDigitalMediaTOM 5 (ErrorAcknowledgement) "Save record error"/td> "You cannot change the Type of Material (TOM) for this bibliographic record because it is linked to one or more digital resources."

HTTP Response Codes

Code Description
200 OK. Success

Required Permissions

Permission IDs found here.

    AccessCatalogingSubsystem_Allow
    BibliographicRecords_Access
    BibliographicRecords_Create: If owner branch is changed
    BibliographicRecords_Modify