NatRule (type)

{
  "additionalProperties": false, 
  "description": "The configuration entity to define a NAT rule. It defines how an ip packet is matched via source address or/and destination address or/and service(s), how the address (and/or) port is translated, and how the related firewall stage is involved or bypassed.", 
  "extends": {
    "$ref": "ManagedResource
  }, 
  "id": "NatRule", 
  "module_id": "Nat", 
  "properties": {
    "_create_time": {
      "$ref": "EpochMsTimestamp, 
      "can_sort": true, 
      "description": "Timestamp of resource creation", 
      "readonly": true
    }, 
    "_create_user": {
      "description": "ID of the user who created this resource", 
      "readonly": true, 
      "type": "string"
    }, 
    "_last_modified_time": {
      "$ref": "EpochMsTimestamp, 
      "can_sort": true, 
      "description": "Timestamp of last modification", 
      "readonly": true
    }, 
    "_last_modified_user": {
      "description": "ID of the user who last modified this resource", 
      "readonly": true, 
      "type": "string"
    }, 
    "_links": {
      "description": "The server will populate this field when returing the resource. Ignored on PUT and POST.", 
      "items": {
        "$ref": "ResourceLink
      }, 
      "readonly": true, 
      "title": "References related to this resource", 
      "type": "array"
    }, 
    "_protection": {
      "description": "Protection status is one of the following: PROTECTED - the client who retrieved the entity is not allowed             to modify it. NOT_PROTECTED - the client who retrieved the entity is allowed                 to modify it REQUIRE_OVERRIDE - the client who retrieved the entity is a super                    user and can modify it, but only when providing                    the request header X-Allow-Overwrite=true. UNKNOWN - the _protection field could not be determined for this           entity.", 
      "readonly": true, 
      "title": "Indicates protection status of this resource", 
      "type": "string"
    }, 
    "_revision": {
      "description": "The _revision property describes the current revision of the resource. To prevent clients from overwriting each other's changes, PUT operations must include the current _revision of the resource, which clients should obtain by issuing a GET operation. If the _revision provided in a PUT request is missing or stale, the operation will be rejected.", 
      "title": "Generation of this resource config", 
      "type": "int"
    }, 
    "_schema": {
      "readonly": true, 
      "title": "Schema for this resource", 
      "type": "string"
    }, 
    "_self": {
      "$ref": "SelfResourceLink, 
      "readonly": true, 
      "title": "Link to this resource"
    }, 
    "_system_owned": {
      "description": "Indicates system owned resource", 
      "readonly": true, 
      "type": "boolean"
    }, 
    "action": {
      "$ref": "NatActions, 
      "description": "Valid actions: SNAT, DNAT, NO_SNAT, NO_DNAT, REFLEXIVE, NAT64. All rules in a logical router are either stateless or stateful. Mix is not supported. SNAT and DNAT are stateful, can NOT be supported when the logical router is running at active-active HA mode; REFLEXIVE is stateless. NO_SNAT and NO_DNAT have no translated_fields, only match fields are supported.", 
      "required": true, 
      "title": "NAT rule action type"
    }, 
    "applied_tos": {
      "description": "Holds the list of LogicalRouterPort Ids that a NAT rule can be applied to. The LogicalRouterPort used must belong to the same LogicalRouter for which the NAT Rule is created. As of now a NAT rule can only have a single LogicalRouterPort as applied_tos. When applied_tos is not set, the NAT rule is applied to all LogicalRouterPorts beloging to the LogicalRouter.", 
      "items": {
        "$ref": "ResourceReference
      }, 
      "maxItems": 1, 
      "required": false, 
      "title": "List of LogicalRouterPort resources as applied to", 
      "type": "array"
    }, 
    "description": {
      "can_sort": true, 
      "maxLength": 1024, 
      "title": "Description of this resource", 
      "type": "string"
    }, 
    "display_name": {
      "can_sort": true, 
      "description": "Defaults to ID if not set", 
      "maxLength": 255, 
      "title": "Identifier to use when displaying entity in logs or GUI", 
      "type": "string"
    }, 
    "enabled": {
      "default": true, 
      "description": "Indicator to enable/disable the rule.", 
      "required": false, 
      "title": "enable/disable the rule", 
      "type": "boolean"
    }, 
    "firewall_match": {
      "$ref": "NatFirewallMatch, 
      "description": "Indicate how firewall is applied to a traffic packet. Firewall can be bypassed, or be applied to external/internal address of NAT rule.  The firewall_match will take priority over nat_pass. If the firewall_match is not provided, the nat_pass will be picked up.", 
      "required": false, 
      "title": "The rule how the firewall is applied"
    }, 
    "id": {
      "can_sort": true, 
      "title": "Unique identifier of this resource", 
      "type": "string"
    }, 
    "internal_rule_id": {
      "description": "Internal NAT rule uuid for debug used in Controller and backend.", 
      "readonly": true, 
      "required": false, 
      "title": "Internal NAT rule uuid", 
      "type": "string"
    }, 
    "logging": {
      "default": false, 
      "description": "Enable/disable the logging of rule.", 
      "required": false, 
      "title": "Enable/disable the logging of rule", 
      "type": "boolean"
    }, 
    "logical_router_id": {
      "description": "The logical router id which the nat rule runs on.", 
      "readonly": true, 
      "required": false, 
      "title": "Logical router id", 
      "type": "string"
    }, 
    "match_destination_network": {
      "description": "IP Address | CIDR | (null implies Any)", 
      "required": false, 
      "title": "match destination network", 
      "type": "string"
    }, 
    "match_service": {
      "$ref": "NSServiceElement, 
      "description": "A NSServiceElement that specifies the matching services of source ports, destination ports, ip protocol version and number, sub protocol version and number, ICMP type and code, etc. The match_service can be one of IPProtocolNSService,L4PortSetNSService or ICMPTypeNSService. REFLEXIVE NAT does not support match_service.", 
      "required": false, 
      "title": "match service"
    }, 
    "match_source_network": {
      "description": "IP Address | CIDR | (null implies Any)", 
      "required": false, 
      "title": "match source network", 
      "type": "string"
    }, 
    "nat_pass": {
      "default": true, 
      "deprecated": true, 
      "description": "Default is true. If the nat_pass is set to true, the following firewall stage will be skipped. Please note, if action is NO_SNAT or NO_DNAT, then nat_pass must be set to true or omitted.  Nat_pass was deprecated with an alternative firewall_match. Please stop using nat_pass to specify whether firewall stage is skipped. if you want to skip, please set firewall_match to BYPASS. If you do not want to skip, please set the firewall_match to MATCH_EXTERNAL_ADDRESS or MATCH_INTERNAL_ADDRESS.  Please note, the firewall_match will take priority over the nat_pass. If both are provided, the nat_pass is ignored. If firewall_match is not provided while the nat_pass is specified, the nat_pass will still be picked up. In this case, if nat_pass is set to false, firewall rule will be applied on internall address of a packet, i.e. MATCH_INTERNAL_ADDRESS.", 
      "required": false, 
      "title": "enable/disable to bypass following firewall stage", 
      "type": "boolean"
    }, 
    "resource_type": {
      "description": "The type of this resource.", 
      "readonly": false, 
      "type": "string"
    }, 
    "rule_priority": {
      "default": 1024, 
      "description": "Ascending, valid range [0-2147483647]. If multiple rules have the same priority, evaluation sequence is undefined.", 
      "required": false, 
      "title": "NAT rule priority", 
      "type": "integer"
    }, 
    "tags": {
      "items": {
        "$ref": "Tag
      }, 
      "maxItems": 30, 
      "title": "Opaque identifiers meaningful to the API user", 
      "type": "array"
    }, 
    "translated_network": {
      "description": "The translated address for the matched IP packet. For a SNAT, it can be a single ip address, an ip range, or a CIDR block. For a DNAT and a REFLEXIVE, it can be a single ip address or a CIDR block. Translated network is not supported for NO_SNAT or NO_DNAT.", 
      "required": false, 
      "title": "IP Address | IP Range | CIDR", 
      "type": "string"
    }, 
    "translated_ports": {
      "description": "The translated port(s) for the mtached IP packet. It can be a single port or a port range. Please note, port translating is supported only for DNAT.", 
      "required": false, 
      "title": "port number or port range. DNAT only", 
      "type": "string"
    }
  }, 
  "title": "The configuration entity to define a NAT rule", 
  "type": "object"
}