openapi: 3.1.0
info:
  title: WisePorter Rule Engine Runtime API
  description: "Public REST API of the WisePorter Rule Engine Runtime (re-runtime):\
    \ execute deployed rules and manage rule engine runtime resources."
  version: 1.11.0-SNAPSHOT
paths:
  /api/rules/{ruleId}/{version}:
    post:
      tags:
      - rule-engine-resource
      summary: Execute rule by id and version
      description: This operation executes specific version of rule specified by ruleId
        and version.
      operationId: executeRuleVersion
      parameters:
      - name: ruleId
        in: path
        required: true
        schema:
          type: string
      - name: version
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RuleRequestDTO"
      responses:
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: "#/components/schemas/RuleResponseDTO"
  /api/rule/{ruleId}/{version}:
    post:
      tags:
      - rule-engine-resource
      summary: Execute rule by id and version
      description: This operation executes specific version of rule specified by ruleId
        and version.
      operationId: executeRuleVersion_1
      parameters:
      - name: ruleId
        in: path
        required: true
        schema:
          type: string
      - name: version
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RuleRequestDTO"
      responses:
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: "#/components/schemas/RuleResponseDTO"
  /api/rules/{ruleId}:
    post:
      tags:
      - rule-engine-resource
      summary: Execute rule by id
      description: This operation executes latest version of rule specified by ruleId.
      operationId: executeRule
      parameters:
      - name: ruleId
        in: path
        description: ID of rule
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RuleRequestDTO"
      responses:
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: "#/components/schemas/RuleResponseDTO"
  /api/rule/{ruleId}:
    post:
      tags:
      - rule-engine-resource
      summary: Execute rule by id
      description: This operation executes latest version of rule specified by ruleId.
      operationId: executeRule_1
      parameters:
      - name: ruleId
        in: path
        description: ID of rule
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RuleRequestDTO"
      responses:
        "200":
          description: OK
          content:
            '*/*':
              schema:
                $ref: "#/components/schemas/RuleResponseDTO"
  /api/service/{serviceName}/download-deployed-file:
    post:
      tags:
      - rule-engine-resource
      summary: Download deployed Excel file for the specified service
      description: Downloads an Excel file for the specified service name. The file
        is retrieved from a path provided by the rule registry.
      operationId: downloadDeployedExcelFile
      parameters:
      - name: serviceName
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            '*/*':
              schema:
                type: string
                format: binary
  /api/rules:
    get:
      tags:
      - rule-engine-resource
      summary: Get all registered rules
      description: Get all registered rules
      operationId: getAllRules
      responses:
        "200":
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/RuleRegistryKey"
components:
  schemas:
    JsonNode:
      type: object
      properties:
        nodeType:
          type: string
          enum:
          - ARRAY
          - BINARY
          - BOOLEAN
          - MISSING
          - "NULL"
          - NUMBER
          - OBJECT
          - POJO
          - STRING
        string:
          type: boolean
        integralNumber:
          type: boolean
        missingNode:
          type: boolean
        valueNode:
          type: boolean
        object:
          type: boolean
        pojo:
          type: boolean
        floatingPointNumber:
          type: boolean
        short:
          type: boolean
        int:
          type: boolean
        long:
          type: boolean
        double:
          type: boolean
        bigDecimal:
          type: boolean
        bigInteger:
          type: boolean
        textual:
          type: boolean
          deprecated: true
        boolean:
          type: boolean
        binary:
          type: boolean
        array:
          type: boolean
        empty:
          type: boolean
        "null":
          type: boolean
        float:
          type: boolean
        container:
          type: boolean
        number:
          type: boolean
        embeddedValue:
          type: boolean
    RuleInputDTO:
      type: object
      properties:
        input:
          $ref: "#/components/schemas/JsonNode"
        type:
          type: string
    RuleRequestDTO:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/RuleInputDTO"
    RuleResponseDTO:
      type: object
      properties:
        data:
          $ref: "#/components/schemas/JsonNode"
    RuleRegistryKey:
      type: object
      properties:
        ruleId:
          type: string
        version:
          type: string
        latestVersion:
          type: boolean
