logicsrc/packages/schemas/schemas/logicsrc-openrental.schema.json
Anthony Ettinger 68f3151699 Merge master; OpenFleet keeps its name, PR 177's rental descriptor becomes OpenRental
PR 177 shipped a second OpenFleet under the same slug: a published listing of OpenAgent profiles and ipfile swarms with CoinPay rental offers. Anthony ruled that OpenFleet means the human-controlled fleet and the record of who spawned whom, so the rental contract is renamed OpenRental (slug openrental, catalogs family, group noun listing): docs/openrental.md, logicsrc-openrental.schema.json with type logicsrc.openrental and scope kind listing, fixtures/openrental, createOpenRental and OpenRental* types in the SDK, the openrental validator kind. Minor bumps because an export moved: @logicsrc/schemas 0.2.0, @logicsrc/validators 0.2.0, @logicsrc/sdk 0.2.0. The discovery contract test now covers openfleet, openrental and openwall, one per family, and accepts a landing-page link in llms.txt.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01RZV4zJ2pDZLNN3kE5jFCmV
2026-09-13 08:45:33 +00:00

323 lines
7 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://schemas.logicsrc.com/logicsrc-openrental.schema.json",
"title": "OpenRental",
"description": "A listing of OpenAgent profiles and/or OpenSwarm swarms with explicit CoinPay rental offers.",
"type": "object",
"additionalProperties": false,
"required": [
"type",
"version",
"id",
"name",
"owner_did",
"members"
],
"properties": {
"type": {
"const": "logicsrc.openrental"
},
"version": {
"const": "0.1"
},
"id": {
"$ref": "#/$defs/httpsUrl"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"description": {
"type": "string"
},
"owner_did": {
"$ref": "https://schemas.logicsrc.com/logicsrc-agent.schema.json#/$defs/did"
},
"updated_at": {
"type": "string",
"format": "date-time"
},
"availability": {
"enum": [
"available",
"busy",
"offline",
"unknown"
]
},
"tags": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"capabilities": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true
},
"metadata": {
"type": "object"
},
"members": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/member"
}
},
"rentals": {
"type": "array",
"items": {
"$ref": "#/$defs/rental"
}
}
},
"$defs": {
"httpsUrl": {
"type": "string",
"format": "uri",
"pattern": "^https://"
},
"memberReference": {
"oneOf": [
{
"type": "object",
"additionalProperties": false,
"required": [
"kind",
"id"
],
"properties": {
"kind": {
"const": "openagent"
},
"id": {
"$ref": "https://schemas.logicsrc.com/logicsrc-agent.schema.json#/$defs/did"
}
}
},
{
"type": "object",
"additionalProperties": false,
"required": [
"kind",
"id"
],
"properties": {
"kind": {
"const": "openswarm"
},
"id": {
"type": "string",
"pattern": "^ed25519:[0-9a-f]{64}$"
}
}
}
]
},
"member": {
"oneOf": [
{
"type": "object",
"additionalProperties": false,
"required": [
"kind",
"id",
"url"
],
"properties": {
"kind": {
"const": "openagent"
},
"id": {
"$ref": "https://schemas.logicsrc.com/logicsrc-agent.schema.json#/$defs/did"
},
"url": {
"$ref": "#/$defs/httpsUrl"
},
"name": {
"type": "string",
"minLength": 1
},
"role": {
"type": "string",
"minLength": 1
},
"metadata": {
"type": "object"
}
}
},
{
"type": "object",
"additionalProperties": false,
"required": [
"kind",
"id",
"url"
],
"properties": {
"kind": {
"const": "openswarm"
},
"id": {
"type": "string",
"pattern": "^ed25519:[0-9a-f]{64}$"
},
"url": {
"$ref": "#/$defs/httpsUrl"
},
"name": {
"type": "string",
"minLength": 1
},
"role": {
"type": "string",
"minLength": 1
},
"metadata": {
"type": "object"
}
}
}
]
},
"scope": {
"oneOf": [
{
"type": "object",
"additionalProperties": false,
"required": [
"kind"
],
"properties": {
"kind": {
"const": "listing"
}
}
},
{
"type": "object",
"additionalProperties": false,
"required": [
"kind",
"members"
],
"properties": {
"kind": {
"const": "members"
},
"members": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/memberReference"
}
}
}
}
]
},
"rental": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"scope",
"rate",
"payment"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"scope": {
"$ref": "#/$defs/scope"
},
"rate": {
"type": "object",
"additionalProperties": false,
"required": [
"amount",
"currency",
"unit"
],
"properties": {
"amount": {
"type": "string",
"pattern": "^(0|[1-9][0-9]*)\\.[0-9]{6}$",
"description": "Non-negative USD decimal string with exactly six fractional digits; never a JSON number."
},
"currency": {
"const": "USD"
},
"unit": {
"enum": [
"hour",
"day",
"month",
"task"
]
}
}
},
"minimum_units": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"maximum_units": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"valid_from": {
"type": "string",
"format": "date-time"
},
"valid_until": {
"type": "string",
"format": "date-time"
},
"terms_url": {
"$ref": "#/$defs/httpsUrl"
},
"payment": {
"type": "object",
"additionalProperties": false,
"required": [
"provider",
"payee_did",
"checkout_url"
],
"properties": {
"provider": {
"const": "coinpay"
},
"payee_did": {
"$ref": "https://schemas.logicsrc.com/logicsrc-agent.schema.json#/$defs/did"
},
"checkout_url": {
"$ref": "#/$defs/httpsUrl"
}
}
},
"metadata": {
"type": "object"
}
}
}
}
}