No description
- C# 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .gitea/workflows | ||
| Controllers | ||
| images | ||
| Models | ||
| pacerdocumentation | ||
| Properties | ||
| Services | ||
| .gitattributes | ||
| .gitignore | ||
| appsettings.Development.json | ||
| appsettings.json | ||
| feedback | ||
| PacerShim.csproj | ||
| PacerShim.http | ||
| PacerShim.sln | ||
| Program.cs | ||
| README.md | ||
Pacer API Shim
This is a shim between the AMMS timer job and the PACER API.
Architecture
Work Plan
How it Works
It will intercept the traffic ment to go to PACER, acting as a shim both handling the MFA login and shaping the data to what the current timerjob expects.
Progress
Concerns
- Do we have the current credentails?
- Will we use existing server or stand up a new one?
- Which version/s of .net existing server?
- Does the server use proxy settings for internet access?
- Do we know which fields and API endpoints the timerjob is trying to find from PACER
- Validate a self signed certificate allow the impersonation of PACER?
End Points Discovered on Pacer
End Points Stubbed out
Pacer Developer Resources
Request Flow
flowchart TB
TJ["Timer Job / AMMS"] -- POST /login --> LOGIN{"IsLive?"}
LOGIN -- false --> STUBTOKEN["Return 200 stub-token<br>no PACER call"]
LOGIN -- true --> REALLOGIN["Login to PACER at<br>qa-login.uscourts.gov<br>Return real token"]
LOGIN --> LOGINLOG["Log: method + path<br>no body"]
TJ -- "API Request<br>POST cases/find, parties/find<br>POST cases/download, parties/download<br>GET cases/download/status/{id}, parties/download/status/{id}<br>GET cases/download/{id}, parties/download/{id}<br>GET cases/reports, parties/reports<br>DELETE cases/reports/{id}, parties/reports/{id}" --> ISLIVE{"IsLive?"}
ISLIVE -- false --> STUBLOG["Log: method + path + body"]
STUBLOG --> RETURN503["Return 503"] & LOGFILE[("requests.log<br>rolls to .old at 10MB")]
ISLIVE -- true --> LIVELOG["Log: method + path"]
LIVELOG --> PACERLOGIN["Login to PACER"] & LOGFILE
PACERLOGIN --> OUTLOG["Log: outbound URL + body"]
OUTLOG --> FORWARD["Forward request to<br>qa-pcl.uscourts.gov"]
FORWARD --> PACERLOGOUT["Logout from PACER"]
PACERLOGOUT --> RESPONSELOG["Log: PACER status + response body"]
RESPONSELOG --> RESPONSE["Return PACER response"] & LOGFILE
TJ -- POST /logout --> LOGOUT{"IsLive?"}
LOGOUT -- false --> STUB200["Return 200<br>no PACER call"]
LOGOUT -- true --> REALLOGOUT["Logout from PACER"]
LOGOUT --> LOGOUTLOG["Log: method + path<br>no body"]
LOGINLOG --> LOGFILE
LOGOUTLOG --> LOGFILE
OUTLOG --> LOGFILE
flowchart TD
ADMIN[Admin]
ADMIN -->|GET /admin/live?key=| LIVESTATUS[Returns current IsLive state]
ADMIN -->|POST /admin/live/toggle?key=| TOGGLE[Flips IsLive true/false]
ADMIN -->|GET /admin/logs?key=| LOGS[Returns requests.log contents]
ADMIN -->|GET /admin/demo/cases?key=| DEMO["Fetch real PACER cases<br>Bypasses IsLive — always hits PACER"]
ADMIN -->|GET /test?key=| TEST[Test PACER login/logout sequence]



