Supercharge Your Digital Channels: The Ultimate Guide to Pega Constellation DX APIs

Enjoying this article, please refer to the link for more articles - Constellation 101

Why

Modern enterprise applications need to deliver seamless, scalable digital experiences across diverse channels and devices. A key challenge is enabling external systems and front-end applications to interact with Pega’s powerful backend—managing cases, data records, assignments, and more—without direct access to the platform UI. How can developers efficiently perform core operations such as creating, updating, searching, and managing cases, data, and assignments using standardized APIs?

Solution Overview

Pega’s DX APIs (Digital Experience APIs) provide a robust, RESTful interface for integrating Pega capabilities into any digital channel or custom front-end. By leveraging DX APIs, developers can:

  • Create, update, and delete data records in Pega data tables using POST, PATCH, and DELETE methods.
  • Query and filter data dynamically, supporting searches, sorting, paging, and aggregation directly through API requests.
  • Manage cases and assignments, including case creation, updating case details, navigating screenflows, and finishing assignments.
  • Interact with attachments, followers, notifications, and more, providing full lifecycle support for case management.
  • Retrieve personalized worklists, recent items, and landing pages, enabling tailored experiences for end users.

These APIs enable headless and low-code development, allowing organizations to build modern, channel-agnostic solutions that integrate seamlessly with Pega’s backend processes and data.

Example Use Cases Illustrated in This Article

  • Add/Edit/Delete a Data Record: Easily manage transactional or reference data through simple API calls.
  • Query Data Tables: Execute complex searches, filters, sorting, and grouping for reporting and analytics.
  • Case Management: Create new cases, update them, and track progress using assignment APIs.
  • Attachment Handling: Upload and retrieve files associated with cases.
  • User Experience Enhancements: Fetch notifications, recent items, landing pages, and user-specific worklists.

Each sample request demonstrates how DX APIs can be used to power a wide range of digital experiences, from simple CRUD operations to sophisticated, dynamic user interfaces— without relying on Pega’s UI.

Ready to accelerate your digital transformation? Explore the sample requests and discover how DX APIs can unlock new possibilities for your Pega applications!

Add a record in the Data table

  • Method: Post
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data/D_TransactionHistorySavable
  • Category: Data
    Sample API Request:
{
  "data": {
    "AccountHolderName": "TEst",
    "AccountNumber": "Test",
    "BranchLocation": "Test",
    "EmployeeName": "Test",
    "TransactionDate": "2025-05-06T04:00:00.000Z",
    "TransactionDescription": "Test",
    "TransactionID": "Test",
    "TransactionPurpose": "TEst",
    "TransactionAmount": 234,
    "TransactionType": ""
  },
  "pageInstructions": []
}

Edit a record in the Data table

  • Method: Patch
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data/D_TransactionHistorySavable
  • Category: Data
    Sample API Request:
 {
   "data": {
     "EmployeeName": "john Doe",
     "TransactionDate": "2025-04-09T15:33:46.663Z",
     "TransactionDescription": " savings account",
     "TransactionID": "TXN001",
     "TransactionPurpose": "Savings",
     "TransactionType": "Deposit",
     "TransactionAmount": 1500.75,
     "pyGUID": "05d4c7af-6f6c-46f8-9953-16c71f6fb8b1"
   },
   "pageInstructions": []
 }

Delete a record in the Data table

  • Method: DELETE
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data/D_TransactionHistorySavable?dataViewParameters=%7B%22pyGUID%22%3A%22c81983f1-37cc-46bd-a936-ab296daf9eec%22%7D
  • Category: Data
    Sample API Request:
{"pyGUID":"c81983f1-37cc-46bd-a936-ab296daf9eec"}

Datatable Query without parameters

  • Method: Post
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_TransactionHistoryList
  • Category: Data
    Sample API Request:
{
  "paging": {
    "pageNumber": 1,
    "pageSize": 1
  },
  "useExtendedTimeout": true,
  "includeTotalCount": true
}

Datatable Query without parameters

  • Method: Post
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_TransactionHistoryList
  • Category: Data
    Sample API Request:
{
  "paging": {
    "pageNumber": 1,
    "pageSize": 1
  },
  "dataViewParameters": {
    "AccountHolderName": "John Doe"
  },
  "useExtendedTimeout": true,
  "includeTotalCount": true
}

Datatable dynamic filter search

  • Method: Post
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_TransactionHistoryList
  • Category: Data
    Sample API Request:
{
  "dataViewParameters": {},
  "paging": {
    "pageNumber": 1,
    "pageSize": 1
  },
  "query": {
    "filter": {
      "logic": "T1",
      "filterConditions": {
        "T1": {
          "comparator": "CONTAINS",
          "lhs": {
            "field": "TransactionDescription"
          },
          "rhs": {
            "value": "rom ATM"
          },
          "ignoreCase": true
        }
      }
    }
  }
}

Datatable dynamic sort on UI

  • Method: Post
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_TransactionHistoryList
  • Category: Data
    Sample API Request:
{
  "dataViewParameters": {},
  "paging": {
    "pageNumber": 1,
    "pageSize": 46
  },
  "query": {
    "sortBy": [
      {
        "field": "AccountHolderName",
        "type": "ASC"
      }
    ]
  }
}

Datatable dynamic GroupBy on UI

  • Method: Post
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_TransactionHistoryList
  • Category: Data
    Sample API Request:
{
  "query": {
    "select": [
      {
        "field": "TransactionDescription"
      },
      {
        "aggregation": "TransactionDescriptionCOUNT"
      },
      {
        "field": "pyGUID"
      }
    ],
    "sortBy": [
      {
        "field": "TransactionDescription",
        "type": "ASC"
      }
    ],
    "aggregations": {
      "TransactionDescriptionCOUNT": {
        "field": "TransactionDescription",
        "summaryFunction": "COUNT"
      }
    }
  },
  "dataViewParameters": {}
}

Datatable dynamic Combine Column

  • Method: NA
  • URL: NA
  • Sample API Request: At run time

Create Case

  • Method: POST
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases?viewType=page
  • Category: Case
    Sample API Request:
{
  "caseTypeID": "ABC-AppName-Work-DXExample",
  "content": {},
  "processID": "pyStartCase"
}

Create Case - Page

  • Method: POST
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases?viewType=none&pageName=none
  • Category: Case
    Sample API Request:
{
   "caseTypeID": {ClassName},
   "content": {
  },
    "pageInstructions" :
     [
        {
            "instruction" : "UPDATE",
            "target" : "ClientInfo",
            "content" : {
                    "ClientID" : "S-50798",
                    "SuperClientID" : "90021",
                    "ClientRequestedEffectiveDate" : "20240522",
                    "SubmittedBy" : {
                        "pyFullName" : "Ramesh Sangili",
                        "pyEmail1" : "[email protected]"
                    }
            }
        }
    ]
}

Create Case - PageList

  • Method: POST
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases?viewType=none&pageName=none
  • Category: Case
    Sample API Request:
{
   "caseTypeID": {ClassName},
   "content": {
  },
    "pageInstructions" :
     [
        {
            "instruction" : "UPDATE",
            "target" : "ChangeRequest",
            "content" : {
                    "ClientID" : "S-50798",
                    "SuperClientID" : "90021",
                    "ClientRequestedEffectiveDate" : "20240522",
                    "SubmittedBy" : {
                        "pyFullName" : "Ramesh Sangili",
                        "pyEmail1" : "[email protected]"
                    }
                    "AccountList" :
                    [
                        {
                            "AccountName" : "Account1",
                            "AccountID" : "85105030202007",
                            "AccountNumber" : "50242092701"
                        },
                        {
                            "AccountName" : "Account2",
                            "AccountID" : "95481548480120",
                            "AccountNumber" : "54629009361"
                        }
                    ]
            }
        }
    ]
}

Finish Assignment

  • Method: PATCH
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/assignments/{AssignmentKey}/actions/{ViewName}?viewType=form
  • Category: Assignment
    Sample API Request:
RequestHeader:
"etag:"20250512T112435.421 GMT"
Request payload:
{
  ""content"": {
    ""FullLegalName"": ""test"",
    ""NewMailingAddress"": ""test"",
    ""NewEmailAddress"": ""test@gmailcom"",
    ""NewPrimaryPhoneNumber"": """",
    ""ReasonForAddressChange"": """",
    ""TransactionSinglePage"": {
      ""pyGUID"": ""1821d052-f5cb-470d-bdf9-4e933a72743e""
    }
  },
  ""pageInstructions": []
}

Open Assignment

  • Method: GET
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/assignments/{AssignmentKey}?viewType=page
  • Category: Assignment

Case Summary

  • Method: GET
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/views/pyCaseSummary
  • Category: Case

Screenflow - Next

  • Method: PATCH
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/assignments/{AssignmentKey}/actions/Create?viewType=page
  • Category: Assignment
    Sample API Request:
{
  "content": {
    "FullLegalName": "test",
    "NewMailingAddress": "test",
    "NewEmailAddress": "test@gmailcom",
    "NewPrimaryPhoneNumber": "",
    "ReasonForAddressChange": ""
  },
  "pageInstructions": []
}

Screenflow - Previous

  • Method: PATCH
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/assignments/{AssignmentKey}/navigation_steps/previous?viewType=page
  • Category: Assignment

FillForm with AI

  • Method: PATCH
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/assignments/{AssignmentKey}/actions/Create/refresh?fillFormWithAI=true
  • Category: Assignment
    Sample API Request:
{
  "content": {
    "FullLegalName": "",
    "NewMailingAddress": "",
    "NewPrimaryPhoneNumber": "",
    "NewEmailAddress": "",
    "ReasonForAddressChange": ""
  },
  "pageInstructions": []
}

Optional Actions

  • Method: GET
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/actions/pyUpdateCaseDetails?excludeAdditionalActions=true&viewType=form
  • Category: Case
  • Sample API Request: NA

Details Tab

  • Method: GET
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/views/pyDetailsTabContent
  • Category: Case
  • Sample API Request: NA

Audit History

  • Method: POST
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_pyWorkHistory
  • Category: Data
    Sample API Request:
{
  "dataViewParameters": {
    "CaseInstanceKey": "ABC-AppName-WORK A-1002"
  }
}

Pulse

  • Method: GET
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/views/pyCasePulseOnly
  • Category: Case
  • Sample API Request: NA

CaseFeed

  • Method: GET
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/feeds/pyCaseFeed?filterFor={CasInseKey}&feedClass={CaseClassName}&filterBy=&pageSize=10&olderThan=
  • Category: Feeds

Attachments (Step1)

  • Method: POST
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/attachments/upload
  • Category: Attachments
  • Sample API Request: appendUniqueIdToFileName: true
    file: (binary)

Attachments (Step2)

  • Method: POSt
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/attachments
  • Category: Attachments
    Sample API Request:
{
  "attachments": [
    {
      "type": "File",
      "category": "File",
      "ID": "60b079d2-eb1d-404d-a6dd-c61d7607561c",
      "filename": "AlertLog_Dec27.txt"
    }
  ]
}

GetAttachment

  • Method: GET
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/attachments?includeThumbnail=false
  • Category: Attachments

Add a Follower

  • Method: POST
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/followers
  • Category: Case
    Sample API Request:
{
  "users": [
    {
      "ID": "operatorID"
    }
  ]
}

Delete a follower

  • Method: DELETE
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/followers/operatorID
  • Category: Case

Follow Cases

  • Method: POST
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_pyMyFollowedCases
  • Category: Data
    Sample API Request:
{
  "dataViewParameters": {},
  "paging": {
    "pageNumber": 1,
    "pageSize": 101
  },
  "query": {
    "select": [
      {
        "field": "pyID"
      },
      {
        "field": "pyLabel"
      },
      {
        "field": "pyStatusWork"
      },
      {
        "field": "pxUrgencyWork"
      },
      {
        "field": "pxUpdateDateTime"
      },
      {
        "field": "pzInsKey"
      },
      {
        "field": "pxObjClass"
      }
    ]
  }
}

My Worklist

  • Method: POST
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_pyMyWorkList
  • Category: Data
    Sample API Request:
{
  "dataViewParameters": {},
  "includeTotalCount": true,
  "paging": {
    "pageNumber": 1,
    "pageSize": 3
  },
  "query": {
    "select": [
      {
        "field": "pxAssignedOperatorID"
      },
      {
        "field": "pzInsKey"
      },
      {
        "field": "pyLabel"
      },
      {
        "field": "pxRefObjectKey"
      },
      {
        "field": "pxUrgencyAssign"
      },
      {
        "field": "pxRefObjectClass"
      },
      {
        "field": "pyAssignmentStatus"
      },
      {
        "field": "pxTaskLabel"
      },
      {
        "field": "pxProcessName"
      },
      {
        "field": "pxIsMultiStep"
      },
      {
        "field": "pxRefObjectInsName"
      }
    ]
  }
}

Recents

  • Method: GET
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/recents?maxResultsToFetch=15
  • Category: Recents

Notifications

  • Method: GET
  • URL: https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_pyGetCurrentUserNotifications
  • Category: Data

LandingPages