robos:ProtobufContract
Validation shape for robos:ProtobufContract nodes in the services package group.
Details
| Class | robos:ProtobufContract |
| Also matches | robos:GRPCContract |
| Shape id | urn:robos:shape:ProtobufContractShape |
| Package | Services & Contracts (robos.services) (services) |
| Classification | Contracts & data models |
| Schema.org type | schema:DigitalDocument |
| Domain standard | protobuf.dev |
| Upstream reference | OSLC AM |
Properties
Count is the minimum and maximum number of values (* means no maximum). The validator enforces both. The type column is documentation only; the validator does not check types.
| Property | Count | Type | Rule or description |
|---|---|---|---|
dcterms:title | 1..* | xsd:string | Protobuf Contract must have a title. |
robos:specFile | 1..* | xsd:string | Protobuf Contract must specify .proto file path. |
robos:packageName | 1..* | - | Protobuf Contract must specify protobuf package name. |
robos:rpcMethods | 1..* | - | Protobuf Contract must declare RPC methods. |
Example node
This node comes from .robos/kgraphs/services/package.jsonld in the RobOS repository. That graph holds sample data for a fictional company, so treat the values as illustrations.
{
"@id": "urn:robos:contract:orders-grpc",
"@type": [
"robos:Contract",
"robos:ProtobufContract",
"robos:GRPCContract",
"schema:DigitalDocument"
],
"dcterms:title": "Acme Orders gRPC Protobuf Contract",
"dcterms:description": "High-performance binary gRPC interface definition for transactional order lifecycle.",
"robos:protocol": "grpc-protobuf",
"robos:specFile": "proto/orders/v1/orders.proto",
"robos:packageName": "acme.orders.v1",
"robos:rpcMethods": [
"CreateOrder",
"GetOrderStatus",
"CancelOrder",
"StreamOrderEvents"
],
"robos:package": "services",
"robos:namespace": "robos.services",
"robos:schemaOrgType": "https://schema.org/DigitalDocument",
"robos:domainStandard": "http://open-services.net/ns/am#Resource",
"robos:rpcDetails": {
"CreateOrder": {
"description": "Submit cart for payment processing and fulfillment",
"request": {
"customerId": "cust_88190",
"items": [
{
"sku": "SKU-PRO-42",
"quantity": 1,
"unitPrice": 89
}
],
"shippingAddress": "123 Market St, San Francisco CA"
},
"response": {
"orderId": "ord_99014",
"status": "ORDER_PLACED",
"total": 89
}
},
"GetOrderStatus": {
"description": "Query order status and tracking number",
"request": {
"orderId": "ord_99014"
},
"response": {
"orderId": "ord_99014",
"status": "PROCESSING",
"estimatedDelivery": "2026-09-15"
}
},
"CancelOrder": {
"description": "Abort pending order prior to carrier dispatch",
"request": {
"orderId": "ord_99014",
"reason": "Customer requested cancellation"
},
"response": {
"orderId": "ord_99014",
"status": "CANCELLED"
}
},
"StreamOrderEvents": {
"description": "Server-side stream of live fulfillment and tracking telemetry",
"request": {
"orderId": "ord_99014"
},
"response": {
"eventId": "evt_7701",
"state": "CARRIER_PICKED_UP",
"carrier": "FedEx Express"
}
}
}
}
Validate the example
Save the example as node.json in the repository root, then run:
node -e "const { SHACLValidator } = require('./packages/robos-graph/lib/shacl-validator'); console.log(new SHACLValidator().validate([require('./node.json')]).conforms)"
The command prints true when the node meets every rule for its types.