{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/getbody-md/json-schema/getbody-md-public-listing-schema.json",
  "title": "PublicListing",
  "description": "An approved listing's safe fields, for anyone: no owner, body ids, exact location or drop-off estimate.",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/getbody-md-api-openapi.json#/components/schemas/PublicListing",
  "type": "object",
  "properties": {
    "listing_id": {
      "type": "integer"
    },
    "bodies": {
      "type": "object",
      "properties": {
        "real": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "interface_mode": {
              "type": "string",
              "enum": [
                "real",
                "simulated"
              ]
            },
            "robot_type": {
              "type": [
                "string",
                "null"
              ]
            },
            "model": {
              "type": [
                "string",
                "null"
              ]
            },
            "capabilities": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "online": {
              "type": "boolean"
            },
            "currently_leased": {
              "type": "boolean"
            }
          }
        },
        "simulated": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "interface_mode": {
              "type": "string",
              "enum": [
                "real",
                "simulated"
              ]
            },
            "robot_type": {
              "type": [
                "string",
                "null"
              ]
            },
            "model": {
              "type": [
                "string",
                "null"
              ]
            },
            "capabilities": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "online": {
              "type": "boolean"
            },
            "currently_leased": {
              "type": "boolean"
            }
          }
        }
      }
    },
    "real_available_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "deprecated": true,
      "description": "Legacy compatibility field. Current rental offers are physical robots; simulated references and planned real availability are absent."
    },
    "real_available_note": {
      "type": "string",
      "deprecated": true,
      "description": "Legacy compatibility field. Current rental offers are physical robots; simulated references and planned real availability are absent."
    },
    "simulator_only": {
      "type": "boolean",
      "description": "Legacy compatibility field. Current rental offers are physical robots; simulated references and planned real availability are absent.",
      "deprecated": true
    },
    "area": {
      "type": [
        "object",
        "null"
      ],
      "description": "lat/lng rounded to 1 decimal place (about 11 km).",
      "properties": {
        "lat": {
          "type": "number"
        },
        "lng": {
          "type": "number"
        }
      }
    },
    "real_delivery": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "deliverable",
        "remote_only"
      ]
    },
    "delivery": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "dispatch_hours": {
          "type": "integer"
        },
        "delivery_speed_kmh": {
          "type": "integer"
        }
      }
    },
    "pricing": {
      "$ref": "#/$defs/Pricing"
    },
    "terms_of_use": {
      "type": "string"
    },
    "notes": {
      "type": "string"
    },
    "offered_control_modes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "permissions_offered": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "offered_feeds": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "available": {
      "type": "boolean"
    },
    "access_type": {
      "$ref": "#/$defs/AccessType"
    },
    "access_options": {
      "$ref": "#/$defs/AccessOptions"
    },
    "rental_policy": {
      "type": "object",
      "description": "Structured body owner services, deposit terms, service area, expense categories and travel zones. Public responses omit the home base, coverage notes and center."
    }
  },
  "$defs": {
    "AccessOption": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "terms": {
          "type": "string"
        },
        "terms_customized": {
          "type": "boolean"
        },
        "allowed_commands": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "read_only_feeds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "command_schemas": {
          "type": "object"
        },
        "feed_schemas": {
          "type": "object"
        }
      },
      "description": "A rental arrangement. Declarations alone do not enable platform controls."
    },
    "AccessOptions": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "onsite_operator": {
          "$ref": "#/$defs/AccessOption"
        },
        "equipment_only": {
          "$ref": "#/$defs/AccessOption"
        },
        "remote_teleoperation": {
          "$ref": "#/$defs/AccessOption"
        }
      }
    },
    "AccessType": {
      "type": "string",
      "enum": [
        "onsite_operator",
        "equipment_only",
        "remote_teleoperation"
      ]
    },
    "Pricing": {
      "oneOf": [
        {
          "type": "object",
          "description": "The host's asking rates in US dollars, display only: nothing is charged through the API. At least one rate. Instead of numeric rates, use {on_request: true}, the string 'available on request', or that string in an individual rate. Responses always use an object; the whole-string input becomes {currency: 'USD', on_request: true}.",
          "required": [],
          "properties": {
            "currency": {
              "type": "string",
              "enum": [
                "USD"
              ],
              "default": "USD",
              "description": "Always USD (may be omitted); anything else is 400 invalid_pricing."
            },
            "per_hour": {
              "type": "string",
              "description": "Decimal amount, e.g. \"12.50\". Or 'available on request'."
            },
            "per_day": {
              "type": "string",
              "description": "Decimal amount, e.g. \"12.50\". Or 'available on request'."
            },
            "per_week": {
              "type": "string",
              "description": "Decimal amount, e.g. \"12.50\". Or 'available on request'."
            },
            "per_month": {
              "type": "string",
              "description": "Decimal amount, e.g. \"12.50\". Or 'available on request'."
            },
            "on_request": {
              "type": "boolean",
              "description": "True when pricing is available on request; no rate is then required."
            }
          }
        },
        {
          "type": "string",
          "enum": [
            "available on request"
          ]
        }
      ],
      "description": "The host's asking rates in US dollars, display only: nothing is charged through the API. At least one rate. Instead of numeric rates, use {on_request: true}, the string 'available on request', or that string in an individual rate. Responses always use an object; the whole-string input becomes {currency: 'USD', on_request: true}."
    }
  }
}