{
  "metadata": {
    "id": "frc-pneumatic-piston",
    "name": "Pneumatic Piston",
    "type": "actuator",
    "description": "Generic double-acting pneumatic piston/cylinder for FRC. Provides linear motion when air pressure is applied.",
    "manufacturer": "Various (Bimba, SMC)",
    "part_number": "Pneumatic Cylinder",
    "datasheet_url": "https://docs.wpilib.org/en/stable/docs/controls-overviews/control-system-hardware.html#pneumatics",
    "tags": [
      "FRC",
      "pneumatic",
      "piston",
      "cylinder",
      "actuator"
    ],
    "schema_version": "1.4.0",
    "version": "0.1.0",
    "taxonomy": [
      "actuator.linear_actuator",
      "robotics.frc"
    ]
  },
  "domains": [
    {
      "domain": "pneumatic",
      "resources": [
        {
          "id": "port-a-res",
          "name": "Port A (Extend)",
          "functions": [
            {
              "name": "AIR_IN_A",
              "direction": "sink",
              "signal_class": "fluid"
            }
          ],
          "connector_type": "quick_connect",
          "working_pressure_bar": 8.3,
          "max_pressure_bar": 8.3
        },
        {
          "id": "port-b-res",
          "name": "Port B (Retract)",
          "functions": [
            {
              "name": "AIR_IN_B",
              "direction": "sink",
              "signal_class": "fluid"
            }
          ],
          "connector_type": "quick_connect",
          "working_pressure_bar": 8.3,
          "max_pressure_bar": 8.3
        }
      ],
      "interfaces": [
        {
          "id": "air-in-a",
          "name": "Air Inlet A (Extend)",
          "protocol": {
            "type": "pneumatic",
            "role": "sink"
          },
          "requires": [
            {
              "function": "AIR_IN_A",
              "count": 1
            }
          ],
          "max_instances": 1,
          "description": "Air supply to extend piston"
        },
        {
          "id": "air-in-b",
          "name": "Air Inlet B (Retract)",
          "protocol": {
            "type": "pneumatic",
            "role": "sink"
          },
          "requires": [
            {
              "function": "AIR_IN_B",
              "count": 1
            }
          ],
          "max_instances": 1,
          "description": "Air supply to retract piston"
        }
      ],
      "metadata": {
        "working_medium": "compressed_air"
      }
    }
  ],
  "node_geometry": {
    "xScale": 1.5,
    "yScale": 0.5,
    "outline": {
      "preset": "rounded_rectangle"
    }
  }
}