{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "comments": "Provisions a Logic Apps resource that exposes an HTTP endpoint which submits a prompt to Microsoft Security Copilot and returns the evaluation result as JSON. Use this endpoint as the backend API for your own systems, dashboards, or automation workflows."
  },
  "parameters": {
    "PlaybookName": {
      "type": "string",
      "defaultValue": "SecurityCopilot-PromptApi",
      "metadata": { "description": "Name of the Logic App / playbook." }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": { "description": "Deployment region. Not supported in GCC / GCC High / Azure Gov / China / DoD." }
    }
  },
  "variables": {
    "SecuritycopilotConnectionName": "[concat('Securitycopilot-', parameters('PlaybookName'))]"
  },
  "resources": [
    {
      "type": "Microsoft.Web/connections",
      "apiVersion": "2016-06-01",
      "name": "[variables('SecuritycopilotConnectionName')]",
      "location": "[parameters('location')]",
      "kind": "V1",
      "properties": {
        "displayName": "[variables('SecuritycopilotConnectionName')]",
        "customParameterValues": {},
        "api": {
          "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', parameters('location'), '/managedApis/securitycopilot')]"
        }
      }
    },
    {
      "type": "Microsoft.Logic/workflows",
      "apiVersion": "2017-07-01",
      "name": "[parameters('PlaybookName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Web/connections', variables('SecuritycopilotConnectionName'))]"
      ],
      "identity": { "type": "SystemAssigned" },
      "properties": {
        "state": "Enabled",
        "definition": {
          "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {
            "$connections": { "defaultValue": {}, "type": "Object" }
          },
          "triggers": {
            "When_a_HTTP_request_is_received": {
              "type": "Request",
              "kind": "Http",
              "inputs": {
                "method": "POST",
                "schema": {
                  "type": "object",
                  "properties": {
                    "promptContent": { "type": "string" },
                    "sessionId": { "type": "string" },
                    "plugins": { "type": "array", "items": { "type": "string" } }
                  },
                  "required": [ "promptContent" ]
                }
              }
            }
          },
          "actions": {
            "Submit_a_Security_Copilot_prompt": {
              "type": "ApiConnection",
              "runAfter": {},
              "inputs": {
                "host": {
                  "connection": {
                    "name": "@parameters('$connections')['securitycopilot']['connectionId']"
                  }
                },
                "method": "post",
                "path": "/process-prompt",
                "body": {
                  "PromptContent": "@triggerBody()?['promptContent']",
                  "SessionId": "@triggerBody()?['sessionId']",
                  "Skillsets": "@triggerBody()?['plugins']"
                }
              }
            },
            "Response_Success": {
              "type": "Response",
              "kind": "Http",
              "runAfter": { "Submit_a_Security_Copilot_prompt": [ "Succeeded" ] },
              "inputs": {
                "statusCode": 200,
                "headers": { "Content-Type": "application/json" },
                "body": {
                  "sessionId": "@body('Submit_a_Security_Copilot_prompt')?['sessionId']",
                  "promptId": "@body('Submit_a_Security_Copilot_prompt')?['promptId']",
                  "evaluationId": "@body('Submit_a_Security_Copilot_prompt')?['evaluationId']",
                  "skillName": "@body('Submit_a_Security_Copilot_prompt')?['skillName']",
                  "evaluationState": "@body('Submit_a_Security_Copilot_prompt')?['evaluationState']",
                  "resultType": "@body('Submit_a_Security_Copilot_prompt')?['evaluationResultType']",
                  "result": "@body('Submit_a_Security_Copilot_prompt')?['EvaluationResultContent']",
                  "nextPromptSuggestions": "@body('Submit_a_Security_Copilot_prompt')?['nextPromptSuggestions']"
                }
              }
            },
            "Response_Failure": {
              "type": "Response",
              "kind": "Http",
              "runAfter": { "Submit_a_Security_Copilot_prompt": [ "Failed", "TimedOut" ] },
              "inputs": {
                "statusCode": 502,
                "headers": { "Content-Type": "application/json" },
                "body": {
                  "error": "Security Copilot prompt evaluation failed or timed out.",
                  "details": "@actions('Submit_a_Security_Copilot_prompt')?['error']"
                }
              }
            }
          },
          "outputs": {}
        },
        "parameters": {
          "$connections": {
            "value": {
              "securitycopilot": {
                "connectionId": "[resourceId('Microsoft.Web/connections', variables('SecuritycopilotConnectionName'))]",
                "connectionName": "[variables('SecuritycopilotConnectionName')]",
                "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', parameters('location'), '/managedApis/securitycopilot')]"
              }
            }
          }
        }
      }
    }
  ],
  "outputs": {
    "logicAppName": {
      "type": "string",
      "value": "[parameters('PlaybookName')]"
    },
    "securityCopilotConnectionName": {
      "type": "string",
      "value": "[variables('SecuritycopilotConnectionName')]"
    }
  }
}
