Changelog
Disclaimer: This is unofficial, community-created documentation for Epicor Prophet 21 APIs. It is not affiliated with, endorsed by, or supported by Epicor Software Corporation. All product names, trademarks, and registered trademarks are property of their respective owners. Use at your own risk.
All notable changes to this documentation project are listed below, grouped by date. This project uses Conventional Commits.
2026-04-04
- docs: Expand consumer key authentication documentation — verified consumer key + username works for Interactive API sessions, added SOA Admin configuration fields, JWT token claims, API-specific behavior table, scope behavior, Python and C# code examples — @mrwuss
- feat: Add
consumer_usernameto P21Config andload_config()for consumer key auth support - chore: Scrub all personal and company-specific data from repository history via git-filter-repo
2026-03-06
- feat: Add Production & Labor API documentation — TimeEntry service for recording labor hours against production orders, ProductionOrder service with full field definitions (54 header fields, assembly lines, components, labor entries, completions, routing), Labor/LaborProcess services for labor code maintenance, 24 production-related Transaction API services discovered, 13 Interactive API windows verified working — @mrwuss
- feat: Add Python example scripts for production/labor — service discovery, TimeEntry definition, labor hour recording, ProductionOrder definition (
scripts/production/) - feat: Add C# example code for production/labor — mirrors Python examples (
examples/csharp/Production/) - docs: Update API Selection Guide with production/labor use cases and decision table entries
- docs: Update Transaction API with production & labor services table
- docs: Update Interactive API with production & labor windows table
2026-02-25
-
feat: Add C# code examples alongside Python across all documentation — tabbed code blocks (Python/C#) in generated HTML with global language sync and localStorage persistence, 23 C# console app examples mirroring every Python script, shared C# client library (
examples/csharp/Common/) with auth, config, and HttpClient wrapper — @mrwuss -
fix: Correct Interactive API
ResultStatusenum mapping —None=0, Success=1, Failure=2, Blocked=3(was incorrectly0=Failure, 2=Blocked, 3=Dialog), verified against source (ResultWrapper.cs) and live API — PR #26 - docs: Update Data Structures Reference to show integer status types with numeric values
- docs: Document
/toolsendpoint workaround for non-message-box response windows —GET /toolsdiscovers buttons,POST /toolsclicks them (verified onw_inventory_scan_lookup) - docs: Update Event Data format documentation — confirmed KV-list format
[{"Key": "...", "Value": "..."}] - fix: Document P21 25.2 breaking change —
DatawindowNamenow required in Interactive API change requests (3-parameterChangeDatamethod no longer works, must use 4-parameter form). Affects Item, PO Receiving Group, Delivery List, Group Pick Ticket, and likely other windows. Updated all code examples and batch processing patterns. Source: community forum reports. - fix: Rewrite
06_complex_workflow.pyfrom v1 to v2 — endpoints, payload format (ListnotChangeRequests),DatawindowNamecasing, integer status checks, v2 save format - fix: Fix
get_opened_window_id()in reusable client to handle KV-list Event Data format[{"Key": "windowid", "Value": "..."}] - fix: Fix Error Handling doc — Blocked status is integer
3(not string), Event Data uses KV-list format
2026-02-17
- docs: Add standalone Inventory REST API documentation — moved from Entity API doc, added verified PUT/POST behavior, multi-company inventory workflow (GET → Append → PUT), error examples, automation patterns — Sibin Francis (@sibinfrancisaj) via PR #25, verified and restructured by @mrwuss
- fix: Update inv_loc write access known issue — PUT can append new inv_loc records via Inventory REST API (partially resolved)
2026-02-16
- feat: Add Postman Collection for all P21 APIs — pre-configured requests for Auth, OData, Transaction, Interactive, and Entity APIs with auto-capture test scripts — NextTWis (@NextTWis) via PR #24
- fix: Correct API endpoints in Postman collection — verified all URLs against live server, fixed Entity/Interactive/Transaction paths and payloads — @mrwuss
2026-02-13
- docs: Add Inventory REST API documentation to Entity API guide — verified endpoints, caveats, extended properties — Sibin Francis (@sibinfrancisaj) via PR #23
- fix: Disable Jekyll rendering and add root URL redirect to HTML docs — @mrwuss
2026-02-12
- feat: Add reusable P21 API client (
scripts/common/client.py) with sync/async support, namespace helpers for all 4 APIs, and auto token refresh — Claude Jones (@RadAJones) via PR #16 - fix: Address CodeRabbit + live API testing feedback on client — duplicate parser removal, query param fixes (
?id=vs?windowId=), entity address guards, response window forwarding — @mrwuss - docs: Add XML token responses section, query parameter testing results, and cross-reference updates across Auth, Interactive, Entity, and Error Handling docs — @mrwuss
- docs: Fix Entity API address limitations, add SOAP/mobile endpoints and error codes — @mrwuss
- feat: Add sidebar navigation with page index and on-page table of contents to all HTML docs — @mrwuss
- docs: Expand Transaction API with commands endpoint, async limits, and special scenarios — @mrwuss
- docs: Expand Interactive API with session params, data structures, and missing endpoints — @mrwuss
- docs: Fix OData pagination guidance — page size defaults and performance — @mrwuss
2026-02-11
- docs: Add complete field listings for all Entity API templates — @mrwuss
- docs: Rewrite Entity API docs based on verified live testing — confirmed working, composite keys, address limitations — @mrwuss
- docs: Add OData Dataservice Permissions prerequisites and fix OData version (v3, not v4) — @mrwuss
2026-02-09
- docs: Add production learnings from 700+ bulk Interactive API operations — session batching, error recovery, page expiration patterns — @mrwuss via PR #11
2026-01-20
- docs: Add Interactive API v1 vs v2 differences — endpoint comparison, migration guide — @mrwuss via PR #9
- chore: Cleanup repo — reorganize HTML to
docs/html/, fix broken paths, restore Known Issues — @mrwuss
2026-01-19
- docs: Add working endpoint for responding to P21 dialogs — @mrwuss
2026-01-02
- docs: Add row selection bug workaround and
inv_locexample for Interactive API — @mrwuss - docs: Add Interactive API v1 vs v2 differences — @mrwuss
2025-12-27
- docs: Add lessons learned from Cube Writer project — session pool contamination patterns — @mrwuss via PR #8
2025-12-26
- docs: Add disclaimer to all documentation pages — @mrwuss
- docs: Add SalesPricePage dropdown codes reference — @mrwuss via PR #1
2025-12-25 — Initial Release
- feat: Initial project setup with full documentation for all 4 P21 APIs — @mrwuss
- docs: Authentication — token endpoints (V1/V2), credentials vs consumer keys, API scopes, token refresh
- docs: API Selection Guide — decision flowchart and comparison table
- docs: OData API — query syntax, filtering, pagination, example scripts
- docs: Transaction API — service discovery, bulk operations, async patterns, example scripts
- docs: Interactive API — session management, window operations, response handling, example scripts
- docs: Entity API — CRUD operations on customers, vendors, contacts, addresses
- docs: Error Handling — HTTP status codes, API-specific errors, Python patterns
- feat: GitHub Pages support with card-based landing page
- feat: HTML generation script with print/PDF support
- feat: Community contribution templates (CONTRIBUTING.md, issue templates)
Contributors
| Contributor | GitHub | Contributions |
|---|---|---|
| @mrwuss | @mrwuss | Project creator, all documentation, HTML generation, maintenance |
| Claude Jones | @RadAJones | Reusable P21 API client with sync/async support (PR #16) |
| Sibin Francis | @sibinfrancisaj | Inventory REST API documentation (PR #23) |
| NextTWis | @NextTWis | Postman Collection for P21 API verification (PR #24) |