action hetzner_get_firewalls { label: "Get all Firewalls" description: "Returns all Firewall objects." provider: hetzner method: GET path: "/firewalls" encoding: json input: { type: "object" properties: { label_selector: { type: "string" } name: { type: "string" } sort: { type: "string" enum: ["id", "id:asc", "id:desc", "name", "name:asc", "name:desc", "created", "created:asc", "created:desc"] } } additionalProperties: false } output: { type: "object" required: ["firewalls"] properties: { firewalls: { type: "array" items: { type: "object" required: ["id", "name", "created", "rules", "applied_to"] properties: { applied_to: { type: "array" items: { type: "object" required: ["type"] properties: { applied_to_resources: { type: "array" items: { type: "object" properties: { server: { type: "object" required: ["id"] properties: { id: { type: "object" additionalProperties: true } } } type: { type: "string" description: "Type of resource referenced" enum: ["server"] } } } } label_selector: { type: "object" required: ["selector"] properties: { selector: { type: "string" description: "Label selector" } } } server: { type: "object" required: ["id"] properties: { id: { type: "integer" description: "ID of the Resource" } } } type: { type: "string" description: "Type of resource referenced" enum: ["server", "label_selector"] } } } } created: { type: "string" description: "Point in time when the Resource was created (in ISO-8601 format)" } id: { type: "integer" description: "ID of the Resource" } labels: { type: "object" description: "User-defined labels (key-value pairs)" } name: { type: "string" description: "Name of the Resource. Must be unique per Project." } rules: { type: "array" items: { type: "object" required: ["direction", "protocol"] properties: { description: { type: "string" description: "Description of the Rule" } destination_ips: { type: "array" description: "List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most." items: { type: "string" } } direction: { type: "string" description: "Select traffic direction on which rule should be applied. Use `source_ips` for direction `in` and `destination_ips` for direction `out`." enum: ["in", "out"] } port: { type: "string" description: "Port or port range to which traffic will be allowed, only applicable for protocols TCP and UDP. A port range can be specified by separating two ports with a dash, e.g `1024-5000`." } protocol: { type: "string" description: "Type of traffic to allow" enum: ["tcp", "udp", "icmp", "esp", "gre"] } source_ips: { type: "array" description: "List of permitted IPv4/IPv6 addresses in CIDR notation. Use `0.0.0.0/0` to allow all IPv4 addresses and `::/0` to allow all IPv6 addresses. You can specify 100 CIDRs at most." items: { type: "string" } } } } } } } } meta: { type: "object" required: ["pagination"] properties: { pagination: { type: "object" required: ["last_page", "next_page", "page", "per_page", "previous_page", "total_entries"] properties: { last_page: { type: "number" description: "ID of the last page available. Can be null if the current page is the last one." } next_page: { type: "number" description: "ID of the next page. Can be null if the current page is the last one." } page: { type: "number" description: "Current page number" } per_page: { type: "number" description: "Maximum number of items shown per page in the response" } previous_page: { type: "number" description: "ID of the previous page. Can be null if the current page is the first one." } total_entries: { type: "number" description: "The total number of entries that exist in the database for this query. Nullable if unknown." } } } } } } } }