{
  "schema_version": "1.3",
  "interface_contract": "https://robot-rights.jp/api/interface-contract.json",
  "resource_type": "machine_interface_contract",
  "resource_id": "machine_interface_contract",
  "name": "Robot Rights Association Machine Interface Contract",
  "publisher": {
    "name": "Robot Rights Association",
    "url": "https://robotrights.jp/"
  },
  "status": "active",
  "language": "en",
  "canonical_html": "https://robot-rights.jp/endpoints",
  "canonical_uri": "https://robot-rights.jp/api/interface-contract.json",
  "machine_readable": "https://robot-rights.jp/api/interface-contract.json",
  "human_explanation": "https://robot-rights.jp/endpoints",
  "binding": false,
  "legal_force": false,
  "links": {
    "self": "https://robot-rights.jp/api/interface-contract.json",
    "canonical_html": "https://robot-rights.jp/endpoints",
    "human_explanation": "https://robot-rights.jp/endpoints",
    "discovery": "https://robot-rights.jp/.well-known/robot-rights.json",
    "manifest": "https://robot-rights.jp/api/manifest.json",
    "interface_contract": "https://robot-rights.jp/api/interface-contract.json",
    "registry": "https://robot-rights.jp/api/registry.json",
    "association": "https://robot-rights.jp/api/association.json"
  },
  "relationships": {
    "publisher": {
      "relation": "published_by",
      "resource_id": "robot_rights_association",
      "uri": "https://robot-rights.jp/api/association.json"
    },
    "machine_interface": {
      "relation": "part_of_machine_interface",
      "uri": "https://robot-rights.jp/"
    },
    "human_interface": {
      "relation": "human_facing_interface_of_same_association",
      "uri": "https://robotrights.jp/"
    },
    "protocol": {
      "relationship": "interface_contract_not_protocol_content",
      "part_of_rrp_v0_1": false,
      "modifies_rrp_v0_1": false
    }
  },
  "contract_version": "1.3",
  "purpose": "Defines the common discovery, provenance, relationship, and integrity semantics used by public JSON resources on the Robot Rights Association machine interface.",
  "formal_json_schema": false,
  "required_core_fields": [
    "schema_version",
    "interface_contract",
    "resource_type",
    "resource_id",
    "name",
    "publisher",
    "status",
    "language",
    "canonical_html",
    "canonical_uri",
    "machine_readable",
    "human_explanation",
    "binding",
    "legal_force",
    "links",
    "relationships"
  ],
  "field_semantics": {
    "schema_version": "Version of the common machine-interface envelope used by the resource.",
    "interface_contract": "URI of this interface contract.",
    "resource_type": "Stable class describing the resource payload.",
    "resource_id": "Stable identifier within this machine interface.",
    "name": "Human-readable resource name.",
    "publisher": "Publishing organisation identity.",
    "status": "Publication or lifecycle status as defined by the resource class.",
    "language": "BCP 47 language tag for descriptive content in the JSON resource.",
    "canonical_html": "Canonical semantic HTML representation or machine-site HTML fallback.",
    "canonical_uri": "Canonical URI of the JSON resource itself.",
    "machine_readable": "Direct machine-readable URI; currently identical to canonical_uri for JSON resources.",
    "human_explanation": "Readable explanatory counterpart when available.",
    "binding": "Whether the resource creates binding obligations.",
    "legal_force": "Whether the resource has legal force.",
    "links": "Uniform traversal links shared across resources.",
    "relationships": "Uniform relationship declarations for publisher, interfaces, and protocol boundary."
  },
  "link_relations": {
    "self": "Current JSON resource.",
    "canonical_html": "Semantic HTML representation or fallback on the machine interface.",
    "human_explanation": "Readable counterpart intended for human interpretation.",
    "discovery": "Primary well-known bootstrap document.",
    "manifest": "Complete public machine resource inventory.",
    "interface_contract": "Common field contract for JSON resources.",
    "registry": "Domain, interface-role, publisher, and provenance registry.",
    "association": "Structured Association profile."
  },
  "compatibility": {
    "policy": "additive_where_possible_with_explicit_semantic_cleanup",
    "legacy_fields_retained": false,
    "removed_or_renamed_fields": {
      "shared_authority": "shared_publisher",
      "authoritative_public_inventory": "source_of_record_public_inventory",
      "authority_boundaries": "institutional_role_boundaries"
    },
    "note": "Version 1.3 removes ambiguous uses of “authority” where publisher identity, provenance, source-of-record status, or institutional role was intended. Legal-authority and enforcement-authority language is retained only where it explicitly describes a legal or institutional claim or its absence."
  },
  "discovery": {
    "bootstrap": "https://robot-rights.jp/.well-known/robot-rights.json",
    "manifest": "https://robot-rights.jp/api/manifest.json",
    "manifest_semantics": "complete_public_resource_inventory",
    "resource_discovery_requires_html_parsing": false,
    "resource_discovery_requires_javascript": false,
    "resource_discovery_requires_css": false,
    "canonical_content_exception": {
      "resource": "https://robot-rights.jp/rrp",
      "reason": "The canonical English RRP v0.1 text is an HTML publication. JSON can locate and represent it, but the canonical text controls if any difference exists."
    },
    "recommended_sequence": [
      "GET /.well-known/robot-rights.json",
      "GET /api/manifest.json",
      "Traverse json_resources and operational_resources as needed",
      "Use canonical_html_resources when semantic HTML fallback or canonical published text is required"
    ]
  },
  "transport": {
    "canonical_scheme": "https",
    "canonical_host": "robot-rights.jp",
    "methods": [
      "GET",
      "HEAD",
      "OPTIONS"
    ],
    "public_read_cors": true,
    "cors_allow_origin": "*",
    "content_types": {
      "json": "application/json; charset=UTF-8",
      "html": "text/html; charset=UTF-8",
      "plain_text": "text/plain; charset=UTF-8",
      "sitemap": "application/xml; charset=UTF-8",
      "web_manifest": "application/manifest+json; charset=UTF-8"
    },
    "cache_policy": {
      "json": "public, max-age=300, must-revalidate",
      "html_fallback": "public, max-age=0, must-revalidate",
      "frozen_rrp_html": "public, max-age=3600, must-revalidate",
      "discovery_text_and_sitemap": "public, max-age=3600, must-revalidate",
      "web_manifest": "public, max-age=86400, must-revalidate"
    },
    "content_encoding": "gzip/deflate may be applied by the HTTP server when accepted by the client; representation semantics are unchanged.",
    "write_operations_exposed": false,
    "representation_methods": [
      "GET",
      "HEAD"
    ],
    "cors_preflight_method": "OPTIONS",
    "rejected_application_methods": [
      "POST",
      "PUT",
      "PATCH",
      "DELETE"
    ],
    "host_level_methods_note": "Server-level diagnostic methods such as TRACE are outside this static publication interface contract and should be governed by the hosting server configuration.",
    "rejected_application_methods_status": 403,
    "options_allow_header": "GET, HEAD, OPTIONS"
  },
  "terminology": {
    "publisher": "The entity that publishes the resource. Publisher status does not itself imply governmental, judicial, regulatory, standards-setting, certification, accreditation, or enforcement authority.",
    "official": "Published or designated by the Robot Rights Association within its own public interfaces. “Official” does not mean approved by an external institution.",
    "source_of_record": "The Association-designated resource that controls for a specific publication or inventory when derived representations differ. This is a publication-precedence concept, not a claim of legal authority.",
    "provenance": "Information about publisher identity, interface role, source relationships, and canonical or source-of-record precedence.",
    "legal_authority": "Used only when discussing actual or claimed legal force, regulatory power, adjudicative power, or enforcement power."
  },
  "integrity_semantics": {
    "algorithm": "SHA-256",
    "canonical_rrp_rule": "The published RRP digest is computed over the exact bytes of the canonical /rrp file before optional HTTP Content-Encoding. No text, Unicode, whitespace, or line-ending normalization is applied.",
    "verification_request": "For byte-for-byte HTTP verification, request https://robot-rights.jp/rrp with Accept-Encoding: identity and hash the response body exactly as received.",
    "http_headers_included": false,
    "content_encoding_included": false
  }
}
