Middleware Channel Frame v1¶
Source schema: doc/schemas/middleware-channel-frame.v1.schema.json
Strict outer application frame for one accepted middleware channel session.
Governing Basis¶
Project Lineage¶
Fields¶
| Field | Required | Shape | Description |
|---|---|---|---|
schema |
yes |
const: middleware-channel-frame.v1 |
|
schema/v |
yes |
const: 1 |
|
session/id |
yes |
ref: #/$defs/id |
|
session/epoch |
yes |
integer | |
frame/seq |
yes |
integer | |
message/kind |
yes |
enum: request, response, event, control |
|
operation |
yes |
enum: middleware.init, middleware.invoke, middleware.observe, module-http.invoke, request.cancel, host-capability.invoke, heartbeat, session.shutdown |
|
request/id |
no |
ref: #/$defs/id |
|
reply/to |
no |
ref: #/$defs/id |
|
deadline/at |
no |
string | |
trace/correlation-id |
no |
ref: #/$defs/id |
|
payload/schema |
yes |
ref: #/$defs/schemaName |
|
payload |
yes |
object |
Definitions¶
| Definition | Shape | Description |
|---|---|---|
id |
string | |
schemaName |
string |
Conditional Rules¶
Rule 1¶
When:
{
"properties": {
"message/kind": {
"const": "request"
}
},
"required": [
"message/kind"
]
}
Then:
{
"required": [
"request/id",
"deadline/at"
],
"not": {
"required": [
"reply/to"
]
},
"properties": {
"operation": {
"enum": [
"middleware.init",
"middleware.invoke",
"module-http.invoke",
"host-capability.invoke"
]
}
}
}
Rule 2¶
When:
{
"properties": {
"message/kind": {
"const": "response"
}
},
"required": [
"message/kind"
]
}
Then:
{
"required": [
"reply/to"
],
"not": {
"anyOf": [
{
"required": [
"request/id"
]
},
{
"required": [
"deadline/at"
]
}
]
},
"properties": {
"operation": {
"enum": [
"middleware.init",
"middleware.invoke",
"module-http.invoke",
"host-capability.invoke"
]
}
}
}
Rule 3¶
When:
{
"properties": {
"message/kind": {
"const": "event"
}
},
"required": [
"message/kind"
]
}
Then:
{
"not": {
"anyOf": [
{
"required": [
"request/id"
]
},
{
"required": [
"reply/to"
]
},
{
"required": [
"deadline/at"
]
}
]
},
"properties": {
"operation": {
"const": "middleware.observe"
}
}
}
Rule 4¶
When:
{
"properties": {
"message/kind": {
"const": "control"
}
},
"required": [
"message/kind"
]
}
Then:
{
"not": {
"anyOf": [
{
"required": [
"request/id"
]
},
{
"required": [
"reply/to"
]
},
{
"required": [
"deadline/at"
]
}
]
},
"properties": {
"operation": {
"enum": [
"request.cancel",
"heartbeat",
"session.shutdown"
]
}
}
}
Rule 5¶
When:
{
"properties": {
"message/kind": {
"const": "request"
},
"operation": {
"const": "host-capability.invoke"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-channel-host-capability-call.v1"
}
}
}
Rule 6¶
When:
{
"properties": {
"message/kind": {
"const": "response"
},
"operation": {
"const": "host-capability.invoke"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-channel-call-result.v1"
}
}
}
Rule 7¶
When:
{
"properties": {
"message/kind": {
"const": "request"
},
"operation": {
"const": "module-http.invoke"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-module-http-request.v1"
}
}
}
Rule 8¶
When:
{
"properties": {
"message/kind": {
"const": "response"
},
"operation": {
"const": "module-http.invoke"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-module-http-response.v1"
}
}
}
Rule 9¶
When:
{
"properties": {
"message/kind": {
"const": "control"
},
"operation": {
"const": "request.cancel"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-channel-request-cancel.v1"
}
}
}
Rule 10¶
When:
{
"properties": {
"message/kind": {
"const": "control"
},
"operation": {
"const": "heartbeat"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-channel-heartbeat.v1"
}
}
}
Rule 11¶
When:
{
"properties": {
"message/kind": {
"const": "control"
},
"operation": {
"const": "session.shutdown"
}
},
"required": [
"message/kind",
"operation"
]
}
Then:
{
"properties": {
"payload/schema": {
"const": "middleware-channel-session-shutdown.v1"
}
}
}
Field Semantics¶
schema¶
- Required:
yes - Shape: const:
middleware-channel-frame.v1
schema/v¶
- Required:
yes - Shape: const:
1
session/id¶
- Required:
yes - Shape: ref:
#/$defs/id
session/epoch¶
- Required:
yes - Shape: integer
frame/seq¶
- Required:
yes - Shape: integer
message/kind¶
- Required:
yes - Shape: enum:
request,response,event,control
operation¶
- Required:
yes - Shape: enum:
middleware.init,middleware.invoke,middleware.observe,module-http.invoke,request.cancel,host-capability.invoke,heartbeat,session.shutdown
request/id¶
- Required:
no - Shape: ref:
#/$defs/id
reply/to¶
- Required:
no - Shape: ref:
#/$defs/id
deadline/at¶
- Required:
no - Shape: string
trace/correlation-id¶
- Required:
no - Shape: ref:
#/$defs/id
payload/schema¶
- Required:
yes - Shape: ref:
#/$defs/schemaName
payload¶
- Required:
yes - Shape: object
Definition Semantics¶
$defs.id¶
- Shape: string
$defs.schemaName¶
- Shape: string