id: checkpoint
name: Check Point
version: 1.0.0
description: "Check Point Management (Web API) — firewall containment: list and add host objects, view the access rulebase, add a drop rule (block), publish changes, and install policy. Session (login) authentication; stdlib-only, no extra Python dependencies."
changelog: "1.0.0 — Initial release: show/add hosts, show access rulebase, add access rule (drop), publish, install policy."
category: network

# Per-instance configuration. Each command logs in to the Management API
# (returns a session id used as the X-chkp-sid header), performs the action,
# then logs out. Publishing/installing is explicit (separate commands).
config_schema:
  properties:
    server_url:
      type: string
      description: "Management server URL (e.g. https://mgmt.example.com)"
    username:
      type: string
      description: "Management API username"
    password:
      type: string
      description: "Management API password"
      x-soar-sensitive: true
    domain:
      type: string
      description: "Domain (for Multi-Domain Management; leave empty otherwise)"
    insecure:
      type: boolean
      description: "Trust any TLS certificate (not secure)"
      default: false
  required:
    - server_url
    - username
    - password

commands:
  - id: show_hosts
    name: checkpoint-show-hosts
    description: "List host objects."
    risk: read
    inputs_schema:
      properties:
        limit: { type: number, description: "Max hosts (default 50)" }
      required: []
    outputs_schema: { properties: {} }
  - id: add_host
    name: checkpoint-add-host
    description: "Create a host object."
    inputs_schema:
      properties:
        name: { type: string, description: "Host object name" }
        ip_address: { type: string, description: "Host IP address" }
      required: [name, ip_address]
    outputs_schema: { properties: {} }
  - id: show_access_rulebase
    name: checkpoint-show-access-rulebase
    description: "Show the access rulebase of a policy layer."
    risk: read
    inputs_schema:
      properties:
        layer: { type: string, description: "Access layer name (e.g. Network)" }
        limit: { type: number, description: "Max rules (default 50)" }
      required: [layer]
    outputs_schema: { properties: {} }
  - id: add_access_rule
    name: checkpoint-add-access-rule
    description: "Add an access rule to a layer (e.g. a Drop rule to block a source)."
    inputs_schema:
      properties:
        layer: { type: string, description: "Access layer name" }
        name: { type: string, description: "Rule name" }
        position: { type: string, description: "Position (e.g. top, bottom, or a number; default top)" }
        source: { type: string, description: "Source object name (e.g. a host)" }
        destination: { type: string, description: "Destination object name (default Any)" }
        action: { type: string, description: "Accept, Drop, or Reject (default Drop)" }
      required: [layer, name]
    outputs_schema: { properties: {} }
  - id: publish
    name: checkpoint-publish
    description: "Publish the current session's changes."
    inputs_schema:
      properties: {}
      required: []
    outputs_schema: { properties: {} }
  - id: install_policy
    name: checkpoint-install-policy
    description: "Install a policy package on gateway targets."
    inputs_schema:
      properties:
        policy_package: { type: string, description: "Policy package name" }
        targets: { type: string, description: "Comma-separated gateway target names" }
      required: [policy_package, targets]
    outputs_schema: { properties: {} }

  - id: test_connection
    name: checkpoint-test-connection
    description: "Verify connectivity and credentials by logging in (used by the Test button)."
    risk: read
    inputs_schema:
      properties: {}
      required: []
    outputs_schema: { properties: {} }
