pfSense Firewall Rules API

Manage firewall rules.

OpenAPI Specification

pfsense-firewall-rules-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: pfSense REST API (pfSense-pkg-RESTAPI) Authentication Firewall Rules API
  description: 'Community-maintained REST and GraphQL API package for pfSense CE and

    pfSense Plus that exposes 200+ endpoints under /api/v2 for firewall,

    interface, service, user, and system management. Authentication supports

    HTTP Basic, X-API-Key header, and JWT bearer tokens obtained from

    POST /api/v2/auth/jwt.


    Only a representative subset of the pfSense REST API surface

    (auth, firewall aliases, firewall rules, diagnostics) is modeled here.

    See the documentation linked under externalDocs for the full catalog.

    '
  version: 2.0.0
  contact:
    name: pfSense REST API documentation
    url: https://pfrest.org/
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://{pfSenseHost}/api/v2
  description: pfSense host running pfSense-pkg-RESTAPI.
  variables:
    pfSenseHost:
      default: pfsense.local
      description: Hostname or IP of the pfSense instance.
security:
- basicAuth: []
- apiKeyAuth: []
- bearerAuth: []
tags:
- name: Firewall Rules
  description: Manage firewall rules.
paths:
  /firewall/rules:
    get:
      tags:
      - Firewall Rules
      summary: List firewall rules
      operationId: listFirewallRules
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: Array of firewall rules.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/FirewallRule'
  /firewall/rule:
    get:
      tags:
      - Firewall Rules
      summary: Get a single firewall rule
      operationId: getFirewallRule
      parameters:
      - in: query
        name: id
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: A firewall rule.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/FirewallRule'
    post:
      tags:
      - Firewall Rules
      summary: Create a firewall rule
      operationId: createFirewallRule
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FirewallRule'
      responses:
        '200':
          description: Firewall rule created.
    patch:
      tags:
      - Firewall Rules
      summary: Update a firewall rule
      operationId: patchFirewallRule
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FirewallRule'
      responses:
        '200':
          description: Firewall rule updated.
    delete:
      tags:
      - Firewall Rules
      summary: Delete a firewall rule
      operationId: deleteFirewallRule
      parameters:
      - in: query
        name: id
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Firewall rule deleted.
components:
  parameters:
    Limit:
      in: query
      name: limit
      schema:
        type: integer
        default: 0
      description: Maximum number of results.
    Offset:
      in: query
      name: offset
      schema:
        type: integer
        default: 0
      description: Skip the first N results.
  schemas:
    FirewallRule:
      type: object
      properties:
        id:
          type: integer
        type:
          type: string
          enum:
          - pass
          - block
          - reject
        interface:
          type: array
          items:
            type: string
        ipprotocol:
          type: string
          enum:
          - inet
          - inet6
          - inet46
        protocol:
          type: string
        source:
          type: object
          additionalProperties: true
        destination:
          type: object
          additionalProperties: true
        descr:
          type: string
        disabled:
          type: boolean
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: 'HTTP Basic auth with a pfSense local database username and password.

        '
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: 'API key generated through the webConfigurator or API endpoints. Keys

        inherit the permissions of the user that issued them.

        '
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'JWT bearer token obtained from POST /api/v2/auth/jwt. Tokens default

        to one hour of validity.

        '
externalDocs:
  description: pfSense-pkg-RESTAPI documentation
  url: https://pfrest.org/