<div dir="ltr">Dear all,<div><br></div><div>Last week, it became apparent we need to start simple and low for the PEP-PDP API if we want to ship anything out and I'd like to propose a few principles:</div><div><ol><li>Keep transport and message separate</li><ol><li>The spec for what a request/response should look like should be decoupled from the underlying transport (HTTP or anything else)</li><li>As a result, nothing in the transport layer conveys any authZ meaning whatsoever</li><ol><li>For instance, 401/403 are indications you cannot use the authorization service. They don't convey anything about the request you sent or what the PDP (in the broad sense) would have said</li></ol></ol><li>Propose a first iteration of request/response that focuses exclusively on the easy "binary" yes/no use case</li><ol><li>No additional statements/obligations/advice</li><li>No batch</li><li>No search</li></ol><li>Propose a model that is largely attribute-based (where an attribute is a key-value pair)</li><li>Propose a model that follows the ALFA Subject/Action/Resource/Environment or the Cedar Principal/Action/Resource/Context</li><li>Publish the results using a standardized schema</li><ol><li>In the WS-* days of yore, it would have been WSDL</li><li>For us, would OpenAPI be good enough?</li></ol></ol><div>So with that being said, should we have a request that looks like the following:</div><div><ul><li>Made up of 4 objects of the same type (e.g. Category to use ALFA parlance):</li><ul><li>Subject, Action, Resource, Context</li><li>If these objects are arrays of the said type, then we are paving the way for batch requests</li></ul><li>Each of these objects contains an array of attributes e.g. key-value pairs</li><ul><li>The attributes could be primitive types e.g. string, double, boolean</li><li>The attributes could be complex e.g. a JSON payload</li></ul></ul><div>The response should simply be the decision itself:</div></div><div><ul><li>Permit/Deny</li><ul><li>Again, if we want to plan ahead and think of batch requests then the response should be an array rather than an object.</li></ul><li>Optionally the list of identifiers of things (policies) used in the decision-making process</li></ul></div><div>Thoughts?</div></div></div>