Resource: cloud.security_groups (SecurityGroupsResource)
list(max_results=None, offset=0, phrase=None, name=None, **filters) -> list[SecurityGroup]
- Endpoint:
GET /api/security-groups
- Parameters:
- Returns:
list[SecurityGroup] — each includes its embedded rules list
- Raises: common API exceptions
get(security_group_id: int) -> SecurityGroup
- Endpoint:
GET /api/security-groups/{security_group_id}
- Returns:
SecurityGroup with all rules populated
- Raises: common API exceptions
get_by_name(name: str) -> SecurityGroup
- Endpoint sequence:
GET /api/security-groups?name=<name>&max=1
- Parameters:
name: security group name
- Returns:
SecurityGroup
- Raises:
- common API exceptions
NotFoundError when no group matches
create(name: str, *, description=None) -> SecurityGroup
- Endpoint:
POST /api/security-groups
- Parameters:
name: group name
description: optional description
- Returns: created
SecurityGroup
- Raises: common API exceptions
update(security_group_id: int, *, name=None, description=None) -> SecurityGroup
- Endpoint:
PUT /api/security-groups/{security_group_id}
- Parameters:
name: replacement name
description: replacement description
- Returns: updated
SecurityGroup
- Raises: common API exceptions
delete(security_group_id: int) -> bool
- Endpoint:
DELETE /api/security-groups/{security_group_id}
- Returns:
True on success
- Raises: common API exceptions
Rule management
list_rules(security_group_id: int) -> list[SecurityGroupRule]
- Endpoint sequence:
GET /api/security-groups/{security_group_id} (rules embedded in response)
- Returns:
list[SecurityGroupRule]
- Raises: common API exceptions
create_rule(security_group_id: int, *, name=None, direction="ingress", policy="accept", protocol=None, port_range=None, destination_port_range=None, source_type="all", source=None, destination_type="instance", destination=None, ethertype=None, priority=None, enabled=None) -> SecurityGroupRule
- Endpoint:
POST /api/security-groups/{security_group_id}/rules
- Parameters:
direction: "ingress" or "egress"
policy: "accept" or "deny"
protocol: "tcp", "udp", "icmp", or "any"
port_range: source port or range, e.g. "22" or "8000-9000"
destination_port_range: destination port or range
source_type: "cidr", "group", "instance", or "all"
source: CIDR string (required when source_type="cidr")
destination_type: "cidr", "group", "instance", or "all"
destination: destination CIDR or reference
ethertype: "IPv4" or "IPv6"
priority: integer — lower value = higher priority
enabled: whether rule is active
- Returns:
SecurityGroupRule
- Raises: common API exceptions
update_rule(security_group_id: int, rule_id: int, *, name=None, direction=None, policy=None, protocol=None, port_range=None, destination_port_range=None, source_type=None, source=None, destination_type=None, destination=None, ethertype=None, priority=None, enabled=None) -> SecurityGroupRule
- Endpoint:
PUT /api/security-groups/{security_group_id}/rules/{rule_id}
- Parameters: same as
create_rule, all optional
- Returns: updated
SecurityGroupRule
- Raises: common API exceptions
delete_rule(security_group_id: int, rule_id: int) -> bool
- Endpoint:
DELETE /api/security-groups/{security_group_id}/rules/{rule_id}
- Returns:
True on success
- Raises: common API exceptions