PlainID · Guide

The Policy Simulator,
in plain steps.

A standalone tool that visually shows what access a user is granted, based on the policies you've configured in PlainID's authorization console (PAP). Point it at a PDP, describe a user, and see the decision in real time.

Full PlainID Policy Simulator interface
The Simulator — request builder on the left, resolved Assets View in the centre, asset details on the right.
01

What it does

The Simulator calculates access decisions live, using your input parameters, any external data gathered by the PIP, and the policies attached to your scope. It visualizes two PlainID PDP endpoints.

Asset Resolution

An open-ended question for one user — returns every asset they're allowed to reach and the actions they can take, for a given application. (Formerly "User Access Token.")

Policy Resolution

Returns the logical data filtering and/or the list of allowed data items for that user in a specific table.

02

Getting access

Run it as a hosted SaaS tenant, or pull the Docker image and run it locally.

Option A — SaaS

Just open the hosted app: simulator.operations-ext.plainid.cloud/app

Option B — Local (Docker)

Pull the image plainid/runtime-simulator:latest from PlainID's Docker Hub. Default container port is 8080.

# Run it, mapping host port 5003 → container 8080
docker run -p 5003:8080 -e ENABLE_LOG_FILE=true -idt plainid/runtime-simulator:latest

# Then open
localhost:5003
ENABLE_LOG_FILE
Defaults to false (logs go to the console). Set to true to write logs to files under /home/node/app/logs.
Getting a 404 pulling the image? You may not be authorized yet. Email support@plainid.com or open a ticket on the PlainID service desk and ask for your Docker Hub username to be granted access.
03

Connect a PDP

Point the Simulator at either the cloud-based PDP or a locally hosted PAA. Open the Settings (gear) icon and fill in three required fields.

PDP mandatory parameters settings panel
Settings → PDP Mandatory Params: Base URL, Client ID, and Client Secret.
  1. Base URL. Where requests are sent.
  2. Client ID. Identifies your scope.
  3. Client Secret. The key for that scope.
  4. Click Save.

Picking the right Base URL

Cloud PDP

Use the tenant base URL, e.g. demo.us1.plainid.io

PAA-based PDP

Point at the specific agent and include /api, e.g. 10.0.136.148:8010/api

A malformed Base URL makes every runtime call fail. Strip trailing paths and slashes.
global-services.us1.plainid.io    ✗ global-services.us1.plainid.io/app

Where to find Client ID & Secret

In your PlainID tenant: Environment Settings → Scopes → select (or create) a scope. The Client ID lives here. For the secret, click Manage Keys on the same page and generate a new key.

Always generate a new key rather than regenerating an existing one — regenerating breaks any integration already using it, forcing a reconfiguration.
04

Build a request

Choose what you're asking, who you're asking about, then optionally layer on context.

Request builder with response type and identity fields
Choose a Response Type, then supply a JWT or UID (and a table name for Policy Resolution).
  1. Pick a Response TypeAsset Resolution or Policy Resolution.
  2. Choose the identity source — paste a JWT or enter a UID.
  3. For Policy Resolution, also supply the target table's fully qualified name.
  4. (Optional) open Advanced to add context, attributes, environment, and time.
  5. Click Run Report.
JWT vs UID. They're mutually exclusive and JWT wins. If you paste a JWT, the UID auto-fills from it. If it doesn't auto-fill, type any string into UID — it's required but its content doesn't matter.

What's under "Advanced"

Advanced parameters expanded
The Advanced panel: Context Data, Identity Attributes, Environment Data, Time Zone, and Date & Time.
Context DataPasses identity context data for this request.
Identity AttributesSupports dynamic group calculation or attribute-based conditions. If a PIP is defined on the tenant, attributes can also be fetched from external sources.
Environment DataPasses information needed for asset rules and request conditions.
Time Zone + Date & TimeSets the timestamp on the request, used to evaluate time-based conditions.
IPUsed to evaluate IP-based conditions.
05

Read the response

For an Asset Resolution response, results are split across three tabs. (Policy Resolution fields differ slightly.)

Identity Info tab of the response
The three result tabs. Identity Info shows the template and the attribute list used in the calculation.
Identity InfoThe identity data gathered for the calculation — from the JWT, the request itself, or external sources. Shows the identity template and its attribute list.
Assets ViewEvery asset the user can reach. Per asset: the action, asset ID, templates, attribute list, and the policies that granted that specific asset + action combination.
Policies ListThe full set of policies applied to this identity to build the access decision.

Filtering the Assets View

Use the Search by Asset ID, Action or Template box to narrow a long asset list. Filter by Asset Template, Asset ID, or Action, then add or clear filters with the chips. Selecting an asset opens its Details and Policies on the right.

Assets View filtered with details panel
Assets View filtered to the patients template; the Details pane lists the asset's attributes.

Policies List

The Policies List names every policy that contributed to the decision — useful for confirming why a user got the access they did.

Policies list tab
Policies List — each entry is a policy that helped build the access decision.
06

Request & raw JSON

Two tabs let you inspect exactly what went to the PDP and what came back — handy for reproducing a call in Postman or custom code.

Raw request JSON panel
The Request view — the exact authorization payload sent to the PDP.
RequestShows the authorization request sent to the PDP — context data, environment, entity attributes, client ID/secret, JWT, entity ID, table name, and remote IP. Click Close to dismiss.
ResponseShows the raw JSON returned by the PDP — paths, attributes, resource types, actions and permissions. Click Close to dismiss.
Raw response JSON panel
The Response view — the raw JSON the PDP returned, including paths, actions and permissions.
Use the Request view to copy the exact payload when you want to mimic the call elsewhere.