Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
3d36430
Add the generated PDP data refresh models
zeevmoney Oct 1, 2026
0a3d5ee
Factor the caller-attributed deprecation warning out of deprecated()
zeevmoney Oct 1, 2026
08c7e1a
Sort the stub's imported names case-insensitively, as ruff does
zeevmoney Oct 1, 2026
0b6b21d
Add list_detailed() to role assignments, resource instances and tuples
zeevmoney Oct 1, 2026
bb77336
Deprecate the detailed_key argument of resource_instances.list()
zeevmoney Oct 1, 2026
8d28867
Add permit.api.pdps.refresh() to refresh every PDP's data
zeevmoney Oct 1, 2026
fcdd13c
Send a context with get_user_permissions()
zeevmoney Oct 1, 2026
dc8ee7c
Record the requests the tests send, for the API coverage report
zeevmoney Oct 1, 2026
4cda612
Add the API coverage report, its spec snapshots and allowlist
zeevmoney Oct 1, 2026
272137d
Run the API coverage report on every pull request
zeevmoney Oct 1, 2026
aa3a01b
Check API coverage against the live spec every week
zeevmoney Oct 1, 2026
1e30237
Document the API coverage report in CONTRIBUTING.md
zeevmoney Oct 1, 2026
e03e89d
Fail the coverage report on a snapshot source file it cannot read
zeevmoney Oct 1, 2026
d685fcb
Test the detailed lists end to end
zeevmoney Oct 1, 2026
d5b2a58
Test pdps.refresh() end to end
zeevmoney Oct 1, 2026
cd6ebad
Test get_user_permissions() with a context end to end
zeevmoney Oct 1, 2026
780f6b1
Show the end-to-end column for every operation in the coverage report
zeevmoney Oct 1, 2026
779ede5
Merge the detailed lists, pdps.refresh() and user-permissions context
zeevmoney Oct 1, 2026
10d38f5
Merge the API coverage report and its CI jobs
zeevmoney Oct 1, 2026
b563eb8
Allowlist the proxy-mode detailed-list routes as SDK-only
zeevmoney Oct 1, 2026
11b1057
Name the coverage report's script correctly in the recorder docstring
zeevmoney Oct 1, 2026
fb0dffc
Say when a new method's test makes a coverage allowlist entry stale
zeevmoney Oct 1, 2026
87eea4e
List the request recorder's variable among the e2e jobs' settings
zeevmoney Oct 1, 2026
327a031
Update the request count beside the coverage report's sentinel
zeevmoney Oct 1, 2026
63189d9
Say a PDP-proxied role assignment list keeps one value per filter
zeevmoney Oct 1, 2026
7f19eb9
List every error pdps.refresh() can raise in its docstring
zeevmoney Oct 1, 2026
7a51d66
Name the blocking-client context e2e test for what it checks
zeevmoney Oct 1, 2026
c73820b
Fail the script tests when the PDP snapshot is not the pinned image's
zeevmoney Oct 1, 2026
684c198
Test the "not run" cell of every coverage report table
zeevmoney Oct 1, 2026
ce9e417
Test both edges of the e2e column's 2xx-or-3xx success range
zeevmoney Oct 1, 2026
c66ecbb
Type the coverage report's parsed JSON as object, not Any
zeevmoney Oct 1, 2026
497a61f
Test the coverage report's default minimums at their edges
zeevmoney Oct 1, 2026
6089cac
Merge the tenant membership branch into the API coverage branch
zeevmoney Oct 1, 2026
d19c2fe
Regenerate ApproveMessage, whose field the API renamed to detail
zeevmoney Oct 1, 2026
ef5a791
Delete the detailed lists' test tuple without a tenant
zeevmoney Oct 1, 2026
7608f18
Merge the base branch's RBAC e2e polling fix
zeevmoney Oct 2, 2026
e70746b
Merge the review fixes from the base branch
zeevmoney Oct 2, 2026
b46dd66
Merge the base branch's backported e2e and schema fixes
zeevmoney Oct 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,176 changes: 2,176 additions & 0 deletions .github/api-specs/control-plane.json

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions .github/api-specs/control-plane.source.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"fetched": "2026-10-01",
"operations": 263,
"source": "https://api.permit.io/v2/openapi.json"
}
306 changes: 306 additions & 0 deletions .github/api-specs/pdp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,306 @@
{
"info": {
"title": "Permit.io PDP",
"version": "0.2.0"
},
"openapi": "3.1.0",
"paths": {
"/allowed": {
"post": {
"operationId": "is_allowed_allowed_post",
"summary": "Is Allowed",
"tags": [
"Authorization API"
]
}
},
"/allowed/all-tenants": {
"post": {
"operationId": "is_allowed_all_tenants_allowed_all_tenants_post",
"summary": "Is Allowed All Tenants",
"tags": [
"Authorization API"
]
}
},
"/allowed/bulk": {
"post": {
"operationId": "is_allowed_bulk_allowed_bulk_post",
"summary": "Is Allowed Bulk",
"tags": [
"Authorization API"
]
}
},
"/allowed_url": {
"post": {
"operationId": "is_allowed_url_allowed_url_post",
"summary": "Is Allowed Url",
"tags": [
"Authorization API"
]
}
},
"/authorized_users": {
"post": {
"operationId": "authorized_users_authorized_users_post",
"summary": "Authorized Users",
"tags": [
"Authorization API"
]
}
},
"/callbacks": {
"get": {
"operationId": "list_callbacks_callbacks_get",
"summary": "List Callbacks",
"tags": [
"Callbacks"
]
},
"post": {
"operationId": "register_callback_callbacks_post",
"summary": "Register Callback",
"tags": [
"Callbacks"
]
}
},
"/callbacks/{key}": {
"delete": {
"operationId": "get_callback_by_key_callbacks__key__delete",
"summary": "Get Callback By Key",
"tags": [
"Callbacks"
]
},
"get": {
"operationId": "get_callback_by_key_callbacks__key__get",
"summary": "Get Callback By Key",
"tags": [
"Callbacks"
]
}
},
"/data-updater/trigger": {
"post": {
"operationId": "trigger_data_update_data_updater_trigger_post",
"summary": "Trigger a full base-data reload",
"tags": [
"Data Updater"
]
}
},
"/facts/relationship_tuples": {
"post": {
"operationId": "create_relationship_tuple_facts_relationship_tuples_post",
"summary": "Create Relationship Tuple",
"tags": [
"Local Facts API"
]
}
},
"/facts/resource_instances": {
"post": {
"operationId": "create_resource_instance_facts_resource_instances_post",
"summary": "Create Resource Instance",
"tags": [
"Local Facts API"
]
}
},
"/facts/resource_instances/{instance_id}": {
"patch": {
"operationId": "update_resource_instance_facts_resource_instances__instance_id__patch",
"summary": "Update Resource Instance",
"tags": [
"Local Facts API"
]
}
},
"/facts/role_assignments": {
"delete": {
"operationId": "delete_role_assignment_facts_role_assignments_delete",
"summary": "Delete Role Assignment",
"tags": [
"Local Facts API"
]
},
"post": {
"operationId": "create_role_assignment_facts_role_assignments_post",
"summary": "Create Role Assignment",
"tags": [
"Local Facts API"
]
}
},
"/facts/tenants": {
"post": {
"operationId": "create_tenant_facts_tenants_post",
"summary": "Create Tenant",
"tags": [
"Local Facts API"
]
}
},
"/facts/users": {
"post": {
"operationId": "create_user_facts_users_post",
"summary": "Create User",
"tags": [
"Local Facts API"
]
}
},
"/facts/users/{user_id}": {
"patch": {
"operationId": "update_user_facts_users__user_id__patch",
"summary": "Update User",
"tags": [
"Local Facts API"
]
},
"put": {
"operationId": "sync_user_facts_users__user_id__put",
"summary": "Sync User",
"tags": [
"Local Facts API"
]
}
},
"/facts/users/{user_id}/roles": {
"delete": {
"operationId": "unassign_user_role_facts_users__user_id__roles_delete",
"summary": "Unassign User Role",
"tags": [
"Local Facts API"
]
},
"post": {
"operationId": "assign_user_role_facts_users__user_id__roles_post",
"summary": "Assign User Role",
"tags": [
"Local Facts API"
]
}
},
"/healthchecks/opa/healthy": {
"get": {
"operationId": "health_opa_healthcheck_healthchecks_opa_healthy_get",
"summary": "Proxy healthy healthcheck - OPAL_OPA_HEALTH_CHECK_POLICY_ENABLED must be set to True",
"tags": [
"Cloud API Proxy"
]
}
},
"/healthchecks/opa/ready": {
"get": {
"operationId": "ready_opa_healthcheck_healthchecks_opa_ready_get",
"summary": "Proxy ready healthcheck - OPAL_OPA_HEALTH_CHECK_POLICY_ENABLED must be set to True",
"tags": [
"Cloud API Proxy"
]
}
},
"/healthchecks/opa/system": {
"get": {
"operationId": "system_opa_healthcheck_healthchecks_opa_system_get",
"summary": "Proxy system data - OPAL_OPA_HEALTH_CHECK_POLICY_ENABLED must be set to True",
"tags": [
"Cloud API Proxy"
]
}
},
"/kong": {
"post": {
"operationId": "is_allowed_kong_kong_post",
"summary": "Is Allowed Kong",
"tags": [
"Authorization API"
]
}
},
"/local/role_assignments": {
"get": {
"operationId": "list_role_assignments_local_role_assignments_get",
"summary": "List Role Assignments",
"tags": [
"Local Queries"
]
}
},
"/nginx_allowed": {
"post": {
"operationId": "is_allowed_nginx_nginx_allowed_post",
"summary": "Is Allowed Nginx",
"tags": [
"Authorization API"
]
}
},
"/opal-server/connectivity": {
"get": {
"operationId": "get_connectivity_status_opal_server_connectivity_get",
"summary": "Get OPAL server connectivity status",
"tags": [
"OPAL Server Connectivity"
]
}
},
"/opal-server/connectivity/disable": {
"post": {
"operationId": "disable_connectivity_opal_server_connectivity_disable_post",
"summary": "Disable OPAL server connectivity",
"tags": [
"OPAL Server Connectivity"
]
}
},
"/opal-server/connectivity/enable": {
"post": {
"operationId": "enable_connectivity_opal_server_connectivity_enable_post",
"summary": "Enable OPAL server connectivity",
"tags": [
"OPAL Server Connectivity"
]
}
},
"/policy-store/config": {
"get": {
"deprecated": true,
"operationId": "get_policy_store_details_policy_store_config_get",
"summary": "Get Policy Store Details",
"tags": [
"Policy Store"
]
}
},
"/policy-updater/trigger": {
"post": {
"operationId": "trigger_policy_update_policy_updater_trigger_post",
"summary": "Trigger a full policy reload",
"tags": [
"Policy Updater"
]
}
},
"/user-permissions": {
"post": {
"operationId": "Get_User_Permissions_user_permissions_post",
"summary": "Get User Permissions",
"tags": [
"Authorization API"
]
}
},
"/user-tenants": {
"post": {
"operationId": "Get_User_Tenants_user_tenants_post",
"summary": "Get User Tenants",
"tags": [
"Authorization API"
]
}
}
}
}
5 changes: 5 additions & 0 deletions .github/api-specs/pdp.source.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"fetched": "2026-10-01",
"operations": 34,
"source": "GET /openapi.json on a container of permitio/pdp-v2:0.9.16@sha256:e3cf30794ec2d256636b4714641df46e51ee58a3f1f0d24c606e214e0bf8669a (PINNED_PDP_IMAGE in .github/workflows/test.yml)"
}
Loading
Loading