Discussion

Pegasystems Inc.
CA
Last activity: 6 Jun 2025 11:01 EDT
DX API Reference
Pega Digital Experience delivers a unified and branded experience across multiple channels. The Pega Digital Experience (DX) API is a collection of model-driven REST API endpoints that allow you to programmatically view, create, and update cases and assignments. This enables developers to create custom front-end experiences for Pega Platform™ applications without having to embed business logic in each individual channel. P
DX API version 2 is primarily focused on view-based authoring. It enables you to manage data views, explore metadata, and retrieve specific fields via data view endpoints.It is important to ensure that applications are compliant with the DX API. Compliance ensures that developers can create suitable front-end components using their preferred UI frameworks, aligning with the center-out architecture approach. Here are some best practices to follow when designing applications with DX APIS:
- Harnesses should use a screen layout as the main container.
- Visibility expressions must only reference when rules.
- Sections should be auto-generated.
- Sections should use one of the following layouts:
- Table
- Dynamic layout
- Repeating dynamic layout (not sourced from data pages)
- Embedded section
- If a flow action involves editable pages (such as named pages, thread-level data pages, or requestor-level data pages), the edited values won’t be available in post-processing data transforms or activities. In these cases, use auto-populated properties (that get data from data pages) and savable data pages during flow action post-processing.
- Always configure applications to use optimistic locking.
- DX API v2 testing requires authorization to generate sample endpoint responses, which means you’ll need an OAuth 2.0 client registration data instance.
DX API reference with sample payload for your reference:
Action | Method | URL | Category | Sample API Request | |
Add a record in the Data table | Post | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data/D_TransactionHistorySavable | Data | { "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 | Patch | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data/D_TransactionHistorySavable | Data | { "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 | DELETE | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data/D_TransactionHistorySavable?dataViewParameters=%7B%22pyGUID%22%3A%22c81983f1-37cc-46bd-a936-ab296daf9eec%22%7D | Data | {"pyGUID":"c81983f1-37cc-46bd-a936-ab296daf9eec"} | |
Datatable Query without parameters | Post | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_TransactionHistoryList | Data | { "paging": { "pageNumber": 1, "pageSize": 1 }, "useExtendedTimeout": true, "includeTotalCount": true } |
|
Datatable Query without parameters | Post | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_TransactionHistoryList | Data | { "paging": { "pageNumber": 1, "pageSize": 1 }, "dataViewParameters": { "AccountHolderName": "John Doe" }, "useExtendedTimeout": true, "includeTotalCount": true } |
|
Datatable dynamic filter search | Post | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_TransactionHistoryList | Data | { "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 | Post | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_TransactionHistoryList | Data | { "dataViewParameters": {}, "paging": { "pageNumber": 1, "pageSize": 46 }, "query": { "sortBy": [ { "field": "AccountHolderName", "type": "ASC" } ] } } |
|
Datatable dynamic GroupBy on UI | Post | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_TransactionHistoryList | Data | { "query": { "select": [ { "field": "TransactionDescription" }, { "aggregation": "TransactionDescriptionCOUNT" }, { "field": "pyGUID" } ], "sortBy": [ { "field": "TransactionDescription", "type": "ASC" } ], "aggregations": { "TransactionDescriptionCOUNT": { "field": "TransactionDescription", "summaryFunction": "COUNT" } } }, "dataViewParameters": {} } |
|
Datatable dynamic Combine Column | NA | NA | At run time | ||
Create Case | POST | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases?viewType=page | Case | { "caseTypeID": "ABC-AppName-Work-DXExample", "content": {}, "processID": "pyStartCase" } |
|
Create Case - Page | POST | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases?viewType=none&pageName=none | Case | { "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 | POST | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases?viewType=none&pageName=none | Case | { "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 | PATCH | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/assignments/{AssignmentKey}/actions/{ViewName}?viewType=form | Assignment | 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 | GET | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/assignments/{AssignmentKey}?viewType=page |
Assignment
|
||
Case Summary | GET | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/views/pyCaseSummary | Case | ||
Screenflow - Next | PATCH | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/assignments/{AssignmentKey}/actions/Create?viewType=page | Assignment | { "content": { "FullLegalName": "test", "NewMailingAddress": "test", "NewEmailAddress": "test@gmailcom", "NewPrimaryPhoneNumber": "", "ReasonForAddressChange": "" }, "pageInstructions": [] } |
|
Screenflow - Previous | PATCH | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/assignments/{AssignmentKey}/navigation_steps/previous?viewType=page | Assignment | ||
FillForm with AI | PATCH | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/assignments/{AssignmentKey}/actions/Create/refresh?fillFormWithAI=true | Assignment | { "content": { "FullLegalName": "", "NewMailingAddress": "", "NewPrimaryPhoneNumber": "", "NewEmailAddress": "", "ReasonForAddressChange": "" }, "pageInstructions": [] } |
|
GET | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/actions/pyUpdateCaseDetails?excludeAdditionalActions=true&viewType=form | Case | NA | ||
Details Tab | GET | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/views/pyDetailsTabContent | Case | NA | |
Audit History | POST | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_pyWorkHistory | Data | { "dataViewParameters": { "CaseInstanceKey": "ABC-AppName-WORK A-1002" } } |
|
Pulse | GET | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/views/pyCasePulseOnly | Case | NA | |
CaseFeed | GET | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/feeds/pyCaseFeed?filterFor={CasInseKey}&feedClass={CaseClassName}&filterBy=&pageSize=10&olderThan= | Feeds | ||
Attachments (Step1) | POST | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/attachments/upload | Attachments | appendUniqueIdToFileName: true file: (binary) |
|
Attachments (Step2) | POSt | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/attachments | Attachments | { "attachments": [ { "type": "File", "category": "File", "ID": "60b079d2-eb1d-404d-a6dd-c61d7607561c", "filename": "AlertLog_Dec27.txt" } ] } |
|
GetAttachment | GET | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/attachments?includeThumbnail=false | Attachments | ||
Add a Follower | POST | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/followers | Case | { "users": [ { "ID": "operatorID" } ] } |
|
Delete a follower | DELETE | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/cases/{CasInseKey}/followers/operatorID | Case | ||
Follow Cases | POST | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_pyMyFollowedCases | Data | { "dataViewParameters": {}, "paging": { "pageNumber": 1, "pageSize": 101 }, "query": { "select": [ { "field": "pyID" }, { "field": "pyLabel" }, { "field": "pyStatusWork" }, { "field": "pxUrgencyWork" }, { "field": "pxUpdateDateTime" }, { "field": "pzInsKey" }, { "field": "pxObjClass" } ] } } |
|
My Worklist | POST | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_pyMyWorkList | Data | { "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 | GET | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/recents?maxResultsToFetch=15 | Recents | ||
Notifications | GET | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/data_views/D_pyGetCurrentUserNotifications | Data | ||
LandingPages | GET | https://{LabInstanceURL}/prweb/app/retail-banking/api/application/v2/pages/pyWorklist?pageClass=Data-Portal | Pages | Examples: Home - https://lab-07237-bos.lab.pega.com/prweb/app/retail-banking/api/applica… Dashboard - https://lab-07237-bos.lab.pega.com/prweb/app/retail-banking/api/applica… Explore Data - https://lab-07237-bos.lab.pega.com/prweb/app/retail-banking/api/applica… |