<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.34 (Ruby 2.6.8) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC9110 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml">
]>


<rfc ipr="trust200902" docName="draft-giannelli-srpc-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="sRPC &amp; HTTP RUN">sRPC: Solenoid Action-Oriented RPC and the HTTP RUN Method</title>

    <author initials="P. N." surname="Giannelli" fullname="Pier Niccolò Giannelli">
      <organization>Solenoid-IT</organization>
      <address>
        <email>support@solenoid.it</email>
        <uri>https://github.com/Solenoid-IT/sRPC</uri>
      </address>
    </author>

    <date year="2026" month="June" day="12"/>

    <area>Applications and Real-Time</area>
    
    <keyword>RPC</keyword> <keyword>HTTP</keyword> <keyword>RUN</keyword> <keyword>API</keyword> <keyword>FLUID</keyword> <keyword>Solenoid</keyword>

    <abstract>


<?line 26?>

<t>This document defines the Solenoid Remote Procedure Call (sRPC) protocol
and requests registration of a new HTTP method, RUN.</t>

<t>sRPC is action-oriented. A client targets a stable endpoint URI and
identifies the procedure to execute through a query parameter containing a
procedure path. The RUN method provides explicit protocol semantics for
function invocation, distinguishing RPC execution from resource-oriented
REST interactions.</t>



    </abstract>



  </front>

  <middle>


<?line 37?>

<section anchor="introduction"><name>Introduction</name>

<t>Modern HTTP APIs are often used to execute server-side logic, not only to
transfer resource representations. In these systems, overloading POST for
every action can obscure intent, policy, and observability.</t>

<t>sRPC defines an RPC profile over HTTP with two core properties:</t>

<t><list style="numbers" type="1">
  <t>The request URI identifies a logical endpoint, not an individual REST
resource.</t>
  <t>The procedure to execute is explicitly provided in a query parameter
(<spanx style="verb">p</spanx>) as a procedure path.</t>
</list></t>

<t>To make invocation intent explicit at the protocol layer, this document
defines RUN as an HTTP method for procedure execution.</t>

</section>
<section anchor="conventions-and-definitions"><name>Conventions and Definitions</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 <xref target="RFC2119"></xref>, <xref target="RFC8174"></xref> when, and only when, they appear in all
capitals, as shown here.</t>

<t>This document uses the following terms:</t>

<t><list style="symbols">
  <t>Endpoint: stable URI that identifies a logical dispatch context.</t>
  <t>Procedure: string provided in query parameter <spanx style="verb">p</spanx> that
identifies the procedure to execute.</t>
  <t>Payload: request body (i.e., request content) containing procedure
arguments.</t>
</list></t>

</section>
<section anchor="protocol-overview"><name>Protocol Overview</name>

<t>In sRPC, procedure selection is split between URI and query:</t>

<t><spanx style="verb">Request = Endpoint + p (procedure path) + Payload</spanx></t>

<t>The endpoint remains stable across multiple actions. The <spanx style="verb">p</spanx> parameter is
the dynamic selector and carries the procedure path, for example
<spanx style="verb">Order.insert</spanx> or <spanx style="verb">Home/Door.open</spanx>.</t>

<t>The procedure-path syntax is intentionally language-neutral and can map to
classes, modules, namespaces, functions, or methods depending on server
implementation.</t>

<t>The official protocol project is available at https://github.com/Solenoid-IT/sRPC.</t>

<t>A reference implementation is available at https://github.com/Solenoid-IT/simba-app.
It demonstrates how <spanx style="verb">p</spanx> is interpreted server-side as a procedure identifier
and how RUN requests are dispatched in practice.</t>

</section>
<section anchor="the-run-http-method"><name>The RUN HTTP Method</name>

<t>This document requests registration of RUN as an HTTP method for
action-oriented remote procedure execution.</t>

<section anchor="semantics"><name>Semantics</name>

<t>RUN indicates that the client asks the origin server to execute an
application-defined procedure identified by <spanx style="verb">p</spanx>.</t>

<t>RUN semantics are intentionally non-REST: the primary target is a
procedure, not a resource state transfer operation.</t>

<t><list style="symbols">
  <t><strong>Safe:</strong> No.</t>
  <t><strong>Idempotent:</strong> No (unless explicitly documented by the target procedure).</t>
  <t><strong>Cacheable:</strong> Response caching is application-dependent and controlled
through standard HTTP cache fields.</t>
</list></t>

</section>
<section anchor="query-parameter-p"><name>Query Parameter <spanx style="verb">p</spanx></name>

<t>The query parameter <spanx style="verb">p</spanx> is the unique identifier for the procedure to execute.</t>

<t><list style="symbols">
  <t><spanx style="verb">p</spanx> MUST be present in every sRPC request.</t>
  <t><spanx style="verb">p</spanx> value uniquely identifies which procedure the client wishes to invoke.</t>
  <t><spanx style="verb">p</spanx> uses dot or slash notation for hierarchical naming (e.g., <spanx style="verb">Order.insert</spanx>,
<spanx style="verb">Home/Door.open</spanx>).</t>
  <t>On the server implementation, <spanx style="verb">p</spanx> typically maps to a method of a class, a
function in a module, or an equivalent callable construct. The exact mapping
is server-defined and SHOULD be documented by the endpoint implementer.</t>
</list></t>

<t>Example interpretation (pseudo-code):</t>

<t><spanx style="verb">
p = "Job.start"    →  server interprets as: Job class, start method
p = "Auth/User.login"  →  server interprets as: User class, login method
</spanx></t>

</section>
<section anchor="request-construction"><name>Request Construction</name>

<t>A conforming sRPC request:</t>

<t><list style="numbers" type="1">
  <t>MUST use RUN, or a compatible fallback defined in
Compatibility and Transition.</t>
  <t>MUST include query parameter <spanx style="verb">p</spanx>.</t>
  <t>MUST treat <spanx style="verb">p</spanx> as the full procedure identifier for dispatch.</t>
  <t>MAY include a request payload in the request body containing action
  arguments.</t>
</list></t>

<t>Example:</t>

<t>```http
RUN /api/user?p=Order.insert HTTP/1.1
Host: api.example.com
Content-Type: application/json</t>

<t>[
  {
    "product": 101,
    "qty": 1
  },</t>

<t>{
    "product": 202,
    "qty": 2
  }
]
```</t>

<t>If <spanx style="verb">p</spanx> is missing or syntactically invalid, the server SHOULD reject the
request with HTTP 400 and MUST include <spanx style="verb">sRPC-Error: 2</spanx> (Missing Procedure
Selector) in the response headers.</t>

<t>If <spanx style="verb">p</spanx> is syntactically valid but not exposed, the server MUST reject the
request with HTTP 404 and MUST include <spanx style="verb">sRPC-Error: 3</spanx> (Procedure Not Found)
in the response headers.</t>

<t>When request syntax is valid but <spanx style="verb">p</spanx> does not identify an exposed
procedure, 404 is used to avoid disclosing implementation internals.</t>

</section>
<section anchor="response-and-error-model"><name>Response and Error Model</name>

<t>Implementations MUST use standard HTTP status codes for transport and
request-processing outcomes.</t>

<t><list style="symbols">
  <t><spanx style="verb">2xx</spanx> indicates successful execution.</t>
  <t><spanx style="verb">4xx</spanx> indicates client-side faults (for example invalid <spanx style="verb">p</spanx>, malformed
payload, unauthorized invocation).</t>
  <t><spanx style="verb">5xx</spanx> indicates server-side execution faults.</t>
</list></t>

<t>For protocol-specific detection, a server MUST include <spanx style="verb">sRPC-Error</spanx> with an
integer value identifying the error category. When this header is present,
the response body SHOULD begin with the prefix <spanx style="verb">sRPC :: </spanx> followed by a
machine-readable token.</t>

<t><spanx style="verb">sRPC-Error</spanx> is a response header field generated by the server and sent to
the client.</t>

</section>
<section anchor="protocol-errors"><name>Protocol Errors</name>

<t>When <spanx style="verb">sRPC-Error</spanx> is present in the response, its value MUST be an integer
indicating the specific protocol-level error:</t>

<t><list style="symbols">
  <t><strong>1:</strong> Endpoint Not Found – The target endpoint does not exist (HTTP 404).</t>
  <t><strong>2:</strong> Missing Procedure Selector – The query parameter <spanx style="verb">p</spanx> is missing or
syntactically invalid (HTTP 400).</t>
  <t><strong>3:</strong> Procedure Not Found – The specified procedure <spanx style="verb">p</spanx> does not exist
or is not exposed (HTTP 404).</t>
</list></t>

<t>When the server rejects a request with Missing Procedure Selector, it MUST send
<spanx style="verb">sRPC-Error: 2</spanx> in the response headers.</t>

<t>When the server rejects a request with Procedure Not Found, it MUST send
<spanx style="verb">sRPC-Error: 3</spanx> in the response headers.</t>

<t>Additional codes MAY be defined in future versions. Clients SHOULD treat
unknown codes as generic protocol errors.</t>

<t>Examples:</t>

<t>```http
HTTP/1.1 404 Not Found
Content-Type: text/plain
sRPC-Error: 1</t>

<t>sRPC :: Endpoint Not Found
```</t>

<t>```http
HTTP/1.1 400 Bad Request
Content-Type: text/plain
sRPC-Error: 2</t>

<t>sRPC :: Missing Procedure Selector
```</t>

<t>```http
HTTP/1.1 404 Not Found
Content-Type: text/plain
sRPC-Error: 3</t>

<t>sRPC :: Procedure Not Found
```</t>

</section>
<section anchor="rationale"><name>Rationale</name>

<t><list style="symbols">
  <t><strong>Protocol Intent:</strong> Distinguishes between representation submission
(commonly POST) and explicit remote procedure invocation (RUN).</t>
  <t><strong>Policy and Routing:</strong> Enables intermediaries and gateways to attach
method-based policies to procedure execution traffic.</t>
  <t><strong>Operational Observability:</strong> Supports log segmentation, analytics,
and alerting for RPC-style traffic patterns.</t>
  <t><strong>Interoperability Path:</strong> Preserves deployability through POST tunneling
in constrained environments while keeping explicit invocation semantics.</t>
</list></t>

</section>
</section>
<section anchor="the-fluid-scheme"><name>The FLUID Scheme</name>

<t>FLUID is a RECOMMENDED naming convention for action-oriented APIs.
sRPC does not require FLUID for protocol conformance.</t>

<t>Implementations that adopt FLUID SHOULD expose actions following this
pattern:</t>

<t><list style="numbers" type="1">
  <t><strong>Find</strong>: Retrieve a single object.</t>
  <t><strong>List</strong>: Retrieve a collection.</t>
  <t><strong>Update</strong>: Modify existing data.</t>
  <t><strong>Insert</strong>: Create new data.</t>
  <t><strong>Delete</strong>: Remove data.</t>
</list></t>

<t>Example FLUID procedure paths (p):</t>

<t><list style="symbols">
  <t><spanx style="verb">Order.find</spanx></t>
  <t><spanx style="verb">Order.list</spanx></t>
  <t><spanx style="verb">Order.update</spanx></t>
  <t><spanx style="verb">Order.insert</spanx></t>
  <t><spanx style="verb">Order.delete</spanx></t>
</list></t>

</section>
<section anchor="compatibility-transition"><name>Compatibility &amp; Transition</name>

<t>In environments where RUN is blocked by intermediaries or client
limitations, clients MAY tunnel sRPC over POST using
<spanx style="verb">X-HTTP-Method-Override: RUN</spanx>.</t>

<t>Servers that support this fallback SHOULD process these requests with the
same authorization and dispatch rules as native RUN.</t>

<t>Servers MUST NOT accept method override from untrusted transformation
layers unless explicitly configured to do so.</t>

</section>
<section anchor="interoperability-considerations"><name>Interoperability Considerations</name>

<t>Deployments can incrementally adopt RUN while preserving compatibility with
existing HTTP infrastructure:</t>

<t><list style="numbers" type="1">
  <t>Endpoints SHOULD continue to accept POST tunneling in environments where
  custom methods are blocked.</t>
  <t>Gateways and security controls SHOULD evaluate both the received method
  and the effective method after override processing.</t>
  <t>Clients and servers SHOULD document fallback behavior and precedence
  rules to prevent inconsistent interpretation across intermediaries.</t>
  <t>Implementations SHOULD expose explicit conformance tests for native RUN
  and POST-tunneled RUN dispatch equivalence.</t>
</list></t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>IANA is requested to register the RUN method in the "Hypertext Transfer
Protocol (HTTP) Method Registry" according to <xref target="RFC9110"></xref>.</t>

<t><list style="symbols">
  <t><strong>Method Name:</strong> RUN</t>
  <t><strong>Safe:</strong> No</t>
  <t><strong>Idempotent:</strong> No</t>
  <t><strong>Reference:</strong> This document</t>
</list></t>

<t>IANA is also requested to register the <spanx style="verb">sRPC-Error</spanx> field name in the
"Hypertext Transfer Protocol (HTTP) Field Name Registry".</t>

<t><list style="symbols">
  <t><strong>Field name:</strong> sRPC-Error</t>
  <t><strong>Status:</strong> permanent</t>
  <t><strong>Specification document(s):</strong> This document</t>
  <t><strong>Comments:</strong> Response header field generated by the server and sent to the client; carries a protocol-specific sRPC error code.</t>
</list></t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The <spanx style="verb">p</spanx> procedure path is an execution selector and therefore security
critical.</t>

<t>Implementations:</t>

<t><list style="numbers" type="1">
  <t>MUST validate <spanx style="verb">p</spanx> against a strict allowlist of exposed actions.</t>
  <t>MUST prevent path traversal and equivalent namespace-escape attacks.</t>
  <t>MUST apply authentication and authorization before dispatch.</t>
  <t>SHOULD implement replay protections for non-idempotent actions when
  relevant to deployment requirements.</t>
  <t>SHOULD apply rate limiting and execution time controls to reduce abuse
  and denial-of-service impact.</t>
  <t>MUST avoid exposing internal class/module names unless intentionally
  part of the public contract.</t>
</list></t>

<t>When POST tunneling is enabled, servers MUST ensure that method override
cannot bypass routing, policy, or audit controls.</t>

<t>Implementations that accept <spanx style="verb">X-HTTP-Method-Override: RUN</spanx> SHOULD:</t>

<t><list style="numbers" type="1">
  <t>Ensure the override decision is made at a single trusted hop.</t>
  <t>Log both the received method and the effective method used for dispatch.</t>
  <t>Apply the same authentication, authorization, and rate-limit policies
as native RUN requests.</t>
  <t>Reject conflicting or duplicated override signals.</t>
</list></t>

</section>


  </middle>

  <back>



    <references title='Normative References' anchor="sec-normative-references">

&RFC2119;
&RFC8174;
&RFC9110;


    </references>





  </back>

<!-- ##markdown-source:
H4sIAMYFLGoAA5VabW4cyZH9n6dI0IBBcrubH9Ls7tAwbJqSLBoSSZMU1sZA
QGdXZXenVV1Vrqwi1V4Y8K89wO5N9gp7E59kX0RkZlU1Sc3M/ND0R3VmZMSL
Fy8iOZ1OVevawp7pPX97c3Gm76rClpXL9XnWuqqcXjfOlq3NNb7Vpsx1u7b6
/f39jb79dKU/2nZd5XvKLBaNfTjTtIb+Zfpe5VVWmg1WzxuzbKcrZ8rSFoWb
+qbOpsfHKjOtXVXNFj9tc+W7xcZ5j33bbY1fXb69f6eUq5sz3Tadb0+Pj78/
PlWmseZMn9d14fB7PO3Zsltrium921j1xW4fqyY/0z/AngmbMyF7Jvr85nKi
3334dPlmko76WdUOj7ZVNtG+atrGLj1ebTf04rNSpsMhmzOlp0rjP1f6M30z
u5r9Pp6GP5Zz3jjb6CuXZVXxf/+rx09UzcqU7m9sce/o6eU9f2s3xhVwQ1fX
sOG3Pnw9cy1/3TWwcd22tT87Olq5dt0tZlm1ORosc0TeV6qsmg32eLCwWN++
uzg9Ofk+vPz3k397HV5+f3JyfKbUdDrVZuHbxmStUvdr5zVi1m0Qc53bpSut
54gnWNzaTdVafdNUmc27xuoLUxR6n7Y+0HVTwYtVoSgcjf1rZ33r8WLlaAc6
t66W2ujSPgpGNowfjs1MKUYPLDACvSpAb6bPdVbQa92aZmWxpAFczKKw2pZ5
XTl88+n2kkCgXI7n3NIFu+tkZ1tp+9VmHYxv103VrdZYBRY2W12bBsFrEbkM
yDOudOVKG9X/tjbteqbvsR6BXoympR+wm8eyBETXpuNrj2DCiszrZdWoZVfy
gYCch0oAO9E5XIJtOufXtBudXMyjB5dNtYHbfNU1mU1+ULdv7+6xCAwVD/mZ
BHDj8rywSv1CX5ZtU+Udf6vUxyq3TSmeBvDhNpylWra21J1HSg9c4m3zYJup
x4F0Ua0cUqGsWl2VxRaPKUSv9Es4KBqFFzVewy5JwBm2Jod7LLX1rd0ggyqs
WFQmp/PdXMN0coZ9II+L/TozAMTCZ+RjOlfZTnRdwZnbCWc0voNdZuEK124j
QCIs8Vt6C6cvHZBAu8lRH5Edun2sEM2GEVDbpgUgAPcTiWKAJoNmABgjRzdF
gpV4wVDocodod/iOokApGV0xU6ey6rNYcz0+4MqAmRzrPUUfLbo/r+cH2pAt
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
1f8DV3yxuv4qAAA=

-->

</rfc>

