/api/v1/ipset/mark_layer3:
  post:
    summary: ...
    description: ...
    parameters:
      - $ref: '#/components/parameters/local'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/IpsetNetwork"
            $ref: "#/components/schemas/IpsetType"
            $ref: "#/components/schemas/IpsetRoleId"
            $ref: "#/components/schemas/IpsetIp"
    responses:
      '200':
        $ref: "#/components/responses/IpsetIp"
      '400':
        $ref: "#/components/responses/BadRequest"
      '401':
        $ref: '#/components/responses/Unauthorized'
    tags:
      - Ipset

/api/v1/ipset/mark_layer2:
  post:
    summary: ...
    description: ...
    parameters:
      - $ref: '#/components/parameters/local'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/IpsetNetwork"
            $ref: "#/components/schemas/IpsetType"
            $ref: "#/components/schemas/IpsetRoleId"
            $ref: "#/components/schemas/IpsetIp"
            $ref: "#/components/schemas/IpsetMac"
    responses:
      '200':
        $ref: "#/components/responses/IpsetMac"
      '400':
        $ref: "#/components/responses/BadRequest"
      '401':
        $ref: '#/components/responses/Unauthorized'
    tags:
      - Ipset

/api/v1/ipset/unmark_mac:
  post:
    summary: ...
    description: ...
    parameters:
      - $ref: '#/components/parameters/local'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/IpsetMac"
    responses:
      '200':
        $ref: "#/components/responses/IpsetMac"
      '400':
        $ref: "#/components/responses/BadRequest"
      '401':
        $ref: '#/components/responses/Unauthorized'
    tags:
      - Ipset

/api/v1/ipset/umark_ip:
  post:
    summary: ...
    description: ...
    parameters:
      - $ref: '#/components/parameters/local'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/IpsetIp"
    responses:
      '200':
        $ref: "#/components/responses/IpsetIp"
      '400':
        $ref: "#/components/responses/BadRequest"
      '401':
        $ref: '#/components/responses/Unauthorized'
    tags:
      - Ipset

/api/v1/ipset/mark_ip_layer2:
  post:
    summary: Mark IP layer2
    description: Mark IP layer2
    parameters:
      - $ref: '#/components/parameters/local'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/IpsetNetwork"
            $ref: "#/components/schemas/IpsetRoleId"
            $ref: "#/components/schemas/IpsetIp"
    responses:
      '200':
        $ref: "#/components/responses/IpsetIp"
      '400':
        $ref: "#/components/responses/BadRequest"
      '401':
        $ref: '#/components/responses/Unauthorized'
    tags:
      - Ipset

/api/v1/ipset/mark_ip_layer3:
  post:
    summary: Mark IP layer3
    description: Mark IP layer3
    parameters:
      - $ref: '#/components/parameters/local'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/IpsetNetwork"
            $ref: "#/components/schemas/IpsetRoleId"
            $ref: "#/components/schemas/IpsetIp"
    responses:
      '200':
        $ref: "#/components/responses/IpsetIp"
      '400':
        $ref: "#/components/responses/BadRequest"
      '401':
        $ref: '#/components/responses/Unauthorized'
    tags:
      - Ipset

/api/v1/ipset/passthrough:
  post:
    summary: Passthrough
    description: Passthrough
    parameters:
      - $ref: '#/components/parameters/local'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/IpsetIp"
            $ref: "#/components/schemas/IpsetPort"
    responses:
      '200':
        $ref: "#/components/responses/IpsetIp"
      '400':
        $ref: "#/components/responses/BadRequest"
      '401':
        $ref: '#/components/responses/Unauthorized'
    tags:
      - Ipset

/api/v1/ipset/passthrough_isolation:
  post:
    summary: Passthrough Isolation
    description: Passthrough Isolation
    parameters:
      - $ref: '#/components/parameters/local'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/IpsetIp"
            $ref: "#/components/schemas/IpsetPort"
    responses:
      '200':
        $ref: "#/components/responses/IpsetIp"
      '400':
        $ref: "#/components/responses/BadRequest"
      '401':
        $ref: '#/components/responses/Unauthorized'
    tags:
      - Ipset

/api/v1/ipset/add_ip/{ipset_name}:
  post:
    summary: Add an IP to a specific ipset
    description: Add an IP to a specific ipset
    parameters:
      - $ref: '#/components/parameters/ipset_name'
      - $ref: '#/components/parameters/local'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/IpsetIp"
    responses:
      '200':
        $ref: "#/components/responses/IpsetIp"
      '400':
        $ref: "#/components/responses/BadRequest"
      '401':
        $ref: '#/components/responses/Unauthorized'
    tags:
      - Ipset

/api/v1/ipset/remove_ip/{ipset_name}:
  post:
    summary: Removes an IP from a specific ipset
    description: Removes an IP from a specific ipset
    parameters:
      - $ref: '#/components/parameters/ipset_name'
      - $ref: '#/components/parameters/local'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/IpsetIp"
    responses:
      '200':
        $ref: "#/components/responses/IpsetIp"
      '400':
        $ref: "#/components/responses/BadRequest"
      '401':
        $ref: '#/components/responses/Unauthorized'
    tags:
      - Ipset
