{"slug":"api-zfinia-com-x402-v1-iam-policy-diff-65fe3c","title":"Compare two IAM policies and report what the change grants or removes","host":"api.zfinia.com","method":"POST","resource":"https://api.zfinia.com/x402/v1/iam-policy-diff","category":"other","description":"Compare two IAM policies and report what the change grants or removes. The comparison is over action-and-resource pairs rather than over statements, so a refactor that splits one statement into three reports no change. A newly written pair already covered by a broader unconditioned pattern is noted ","price_listed":0.19,"price_asked":0.19,"state":"answering","state_label":"Answering","checks_7d":1,"answered_7d":1,"latency_ms_median":2385,"reported_calls_30d":1,"reported_payers_30d":1,"networks":["eip155:8453"],"badge":"unverified","paid_checks_7d":0,"paid_ok_7d":0,"example_input":{"body":{"after":"{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n  {\n   \"Sid\": \"ReadExports\",\n   \"Effect\": \"Allow\",\n   \"Action\": [\n    \"s3:GetObject\"\n   ],\n   \"Resource\": [\n    \"arn:aws:s3:::exports/*\"\n   ]\n  },\n  {\n   \"Sid\": \"WriteExports\",\n   \"Effect\": \"Allow\",\n   \"Action\": [\n    \"s3:PutObject\"\n   ],\n   \"Resource\": [\n    \"arn:aws:s3:::exports/*\"\n   ]\n  }\n ]\n}","before":"{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n  {\n   \"Sid\": \"ReadExports\",\n   \"Effect\": \"Allow\",\n   \"Action\": [\n    \"s3:GetObject\"\n   ],\n   \"Resource\": [\n    \"arn:aws:s3:::exports/*\"\n   ]\n  },\n  {\n   \"Sid\": \"DenyProduction\",\n   \"Effect\": \"Deny\",\n   \"Action\": [\n    \"s3:DeleteObject\"\n   ],\n   \"Resource\": [\n    \"arn:aws:s3:::production/*\"\n   ]\n  }\n ]\n}"},"bodyType":"json","method":"POST","type":"http"},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"properties":{"after":{"maxLength":262144,"type":"string"},"before":{"maxLength":262144,"type":"string"}},"required":["before","after"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"},"history":[{"day":"2026-10-04","reachable":true,"status":402,"valid_402":true,"asked_usdc":0.19,"price_match":true,"latency_ms":2385,"error":null}],"description_full":"Compare two IAM policies and report what the change grants or removes. The comparison is over action-and-resource pairs rather than over statements, so a refactor that splits one statement into three reports no change. A newly written pair already covered by a broader unconditioned pattern is noted rather than reported, since nothing new is granted. A removed Deny is reported as a widening even when no Allow changed, because a Deny overrides every Allow.","last_updated":"2026-10-04T08:29:41.947Z","schemes":["exact"]}