> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://developer.fortresstech.io/api-reference/webhooks/trigger-webhook-event/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.fortresstech.io/_mcp/server. # Trigger a CORA event POST https://api.fortresstech.io/v1/webhooks/trigger Content-Type: application/json Defined, not yet publishedSends you an example delivery of a CORA event on demand, so you can test your receiver before the real flow sends you that event.The request names the `organizationId` and the `propertyId`; both are required. Fortress checks that your API key owns them before sending anything.Fortress takes the documented example payload of the requested event, gives it a fresh eventId and occurredAt, and POSTs it to every active webhook subscription of the property you name with partner key `cora` that lists the requested eventType in its eventTypes. Subscriptions of that property that do not list the event type, and those of other properties or organizations, do not receive it. Each delivery is signed with that subscription's signing secret and uses the normal [event envelope](/webhooks/webhooks#the-event-envelope) and [X-Fortress-\* headers](/webhooks/webhooks#delivery-headers), so your signature verification runs exactly as it will in production. Fortress makes one attempt per subscription and does not retry.The response lists each subscription and the HTTP status your receiver answered with, or `failed` when no response was received or Fortress could not sign the delivery. The call returns once every delivery has finished: deliveries run in parallel, and the whole call is bounded by the gateway's limit of about 29 seconds, so keep your receiver fast.The payloads are examples, not real data. The ids in them do not point to records in your organization, so do not act on them (for example, do not read the application or write document results for it). This includes `data.organizationId` and `data.propertyId`: they are the documented example values, not the ones in your request. The event pages describe `organizationId` as always your own organization, so if your receiver checks it, verify the signature first and do not reject a test delivery on that check.This route is defined for the CORA integration and is not delivered yet. Fortress does not serve it until it moves to Available. Authenticate with the `x-api-key` header; the key needs the `webhooks` permission with `create`. An all-organizations key works, as long as the property belongs to the organization you pass. Reference: https://developer.fortresstech.io/api-reference/webhooks/trigger-webhook-event ## Authentication - `x-api-key` header (required) — API Key authentication via header ## Request ### Body (application/json) This endpoint expects a WebhookTriggerRequest. - `eventType` (enum, required) — The CORA event to send. Fortress sends that event's documented example payload. Any other value returns 400. - Allowed values: `application.signed`, `requirement.upload_received`, `requirement.upload_removed`, `compliance_review.opened`, `compliance_review.closed`, `application.completed`, `agent.state_changed` - `organizationId` (string, required) — The organization whose property receives the example. The API key must own this organization, otherwise the call returns 404. - `propertyId` (string, required) — The property whose `cora` subscriptions that list `eventType` receive the example. It must belong to `organizationId` and the API key must own it, otherwise the call returns 404. ## Response ### 200 Example sent. One entry per active `cora` subscription of the property that lists the event type, with the HTTP status your receiver answered with, or `failed` when no response was received or Fortress could not sign the delivery. - `eventId` (string, required) — The eventId of the example event. Fresh on every call; the same value is sent as eventId in the envelope and in the X-Fortress-Event-Id header. - `deliveries` (list of WebhookTriggerDelivery, required) — One entry per active `cora` subscription of the property in the request that lists the event type. ## Errors ### 400 Bad Request Error eventType, organizationId or propertyId is missing or invalid (the ids must be UUIDs), eventType is not one of the CORA events listed in the request schema, or Fortress has no example payload for that event yet (`No example payload for yet`). - `any` ### 401 Unauthorized Error Missing or invalid x-api-key. - `any` ### 403 Forbidden Error The API key does not have the `webhooks` permission with `create`. - `any` ### 404 Not Found Error Two cases, told apart by `code`: - `NOT_FOUND`: the organization or property does not exist or is not owned by your API key. The answer is the same whether it is missing or belongs to someone else. - `NO_SUBSCRIPTION`: none of the property's active webhook subscriptions with partner key `cora` lists the requested event type. - `code` (enum, required) — `NOT_FOUND`: the organization or property does not exist or is not owned by the API key (the answer is the same for both, so ids of other customers are never confirmed). `NO_SUBSCRIPTION`: none of the property's active webhook subscriptions with partner key `cora` lists the requested event type. - Allowed values: `NOT_FOUND`, `NO_SUBSCRIPTION` - `message` (string, required) — Human-readable explanation. ### 502 Bad Gateway Error Bad gateway. Fortress could not validate the API key or reach the backend. Retry later. - `any` ## Types ### WebhookTriggerDelivery - `subscriptionId` (string, required) — The webhook subscription the example was sent to. - `status` (WebhookTriggerDeliveryStatus, required) — The HTTP status code your receiver answered with, or `failed` when no response was received (timeout, connection refused, DNS or TLS error) or Fortress could not sign the delivery (its signing secret could not be read; nothing was sent). One attempt only: Fortress does not retry an example delivery. ### WebhookTriggerDeliveryStatus The HTTP status code your receiver answered with, or `failed` when no response was received (timeout, connection refused, DNS or TLS error) or Fortress could not sign the delivery (its signing secret could not be read; nothing was sent). One attempt only: Fortress does not retry an example delivery. ## Examples ### Receiver acknowledged **Response** ```json { "eventId": "3b1f6c2e-8d4a-4f7b-9c0e-5a2d1e6f7b8c", "deliveries": [ { "subscriptionId": "6f2a9c1d-4b7e-4e3a-8f5d-2c1b0a9e8d7f", "status": 200 } ] } ``` **SDK Code** ```python Receiver acknowledged import requests url = "https://api.fortresstech.io/v1/webhooks/trigger" headers = {"x-api-key": ""} response = requests.post(url, headers=headers) print(response.json()) ``` ```javascript Receiver acknowledged const url = 'https://api.fortresstech.io/v1/webhooks/trigger'; const options = {method: 'POST', headers: {'x-api-key': ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go Receiver acknowledged package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.fortresstech.io/v1/webhooks/trigger" req, _ := http.NewRequest("POST", url, nil) req.Header.Add("x-api-key", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby Receiver acknowledged require 'uri' require 'net/http' url = URI("https://api.fortresstech.io/v1/webhooks/trigger") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["x-api-key"] = '' response = http.request(request) puts response.read_body ``` ```java Receiver acknowledged import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.fortresstech.io/v1/webhooks/trigger") .header("x-api-key", "") .asString(); ``` ```php Receiver acknowledged request('POST', 'https://api.fortresstech.io/v1/webhooks/trigger', [ 'headers' => [ 'x-api-key' => '', ], ]); echo $response->getBody(); ``` ```csharp Receiver acknowledged using RestSharp; var client = new RestClient("https://api.fortresstech.io/v1/webhooks/trigger"); var request = new RestRequest(Method.POST); request.AddHeader("x-api-key", ""); IRestResponse response = client.Execute(request); ``` ```swift Receiver acknowledged import Foundation let headers = ["x-api-key": ""] let request = NSMutableURLRequest(url: NSURL(string: "https://api.fortresstech.io/v1/webhooks/trigger")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### Two subscriptions, one receiver unreachable **Response** ```json { "eventId": "7c4e2a9b-1d6f-4a8e-b3c5-9f0d2e1a4b6c", "deliveries": [ { "subscriptionId": "6f2a9c1d-4b7e-4e3a-8f5d-2c1b0a9e8d7f", "status": 204 }, { "subscriptionId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d", "status": "failed" } ] } ``` **SDK Code** ```python Two subscriptions, one receiver unreachable import requests url = "https://api.fortresstech.io/v1/webhooks/trigger" headers = {"x-api-key": ""} response = requests.post(url, headers=headers) print(response.json()) ``` ```javascript Two subscriptions, one receiver unreachable const url = 'https://api.fortresstech.io/v1/webhooks/trigger'; const options = {method: 'POST', headers: {'x-api-key': ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go Two subscriptions, one receiver unreachable package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.fortresstech.io/v1/webhooks/trigger" req, _ := http.NewRequest("POST", url, nil) req.Header.Add("x-api-key", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby Two subscriptions, one receiver unreachable require 'uri' require 'net/http' url = URI("https://api.fortresstech.io/v1/webhooks/trigger") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["x-api-key"] = '' response = http.request(request) puts response.read_body ``` ```java Two subscriptions, one receiver unreachable import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.fortresstech.io/v1/webhooks/trigger") .header("x-api-key", "") .asString(); ``` ```php Two subscriptions, one receiver unreachable request('POST', 'https://api.fortresstech.io/v1/webhooks/trigger', [ 'headers' => [ 'x-api-key' => '', ], ]); echo $response->getBody(); ``` ```csharp Two subscriptions, one receiver unreachable using RestSharp; var client = new RestClient("https://api.fortresstech.io/v1/webhooks/trigger"); var request = new RestRequest(Method.POST); request.AddHeader("x-api-key", ""); IRestResponse response = client.Execute(request); ``` ```swift Two subscriptions, one receiver unreachable import Foundation let headers = ["x-api-key": ""] let request = NSMutableURLRequest(url: NSURL(string: "https://api.fortresstech.io/v1/webhooks/trigger")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### Receiver rejected the signature **Response** ```json { "eventId": "9e8d7c6b-5a4f-4e3d-9c2b-1a0f9e8d7c6b", "deliveries": [ { "subscriptionId": "6f2a9c1d-4b7e-4e3a-8f5d-2c1b0a9e8d7f", "status": 400 } ] } ``` **SDK Code** ```python Receiver rejected the signature import requests url = "https://api.fortresstech.io/v1/webhooks/trigger" headers = {"x-api-key": ""} response = requests.post(url, headers=headers) print(response.json()) ``` ```javascript Receiver rejected the signature const url = 'https://api.fortresstech.io/v1/webhooks/trigger'; const options = {method: 'POST', headers: {'x-api-key': ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go Receiver rejected the signature package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.fortresstech.io/v1/webhooks/trigger" req, _ := http.NewRequest("POST", url, nil) req.Header.Add("x-api-key", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby Receiver rejected the signature require 'uri' require 'net/http' url = URI("https://api.fortresstech.io/v1/webhooks/trigger") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["x-api-key"] = '' response = http.request(request) puts response.read_body ``` ```java Receiver rejected the signature import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.fortresstech.io/v1/webhooks/trigger") .header("x-api-key", "") .asString(); ``` ```php Receiver rejected the signature request('POST', 'https://api.fortresstech.io/v1/webhooks/trigger', [ 'headers' => [ 'x-api-key' => '', ], ]); echo $response->getBody(); ``` ```csharp Receiver rejected the signature using RestSharp; var client = new RestClient("https://api.fortresstech.io/v1/webhooks/trigger"); var request = new RestRequest(Method.POST); request.AddHeader("x-api-key", ""); IRestResponse response = client.Execute(request); ``` ```swift Receiver rejected the signature import Foundation let headers = ["x-api-key": ""] let request = NSMutableURLRequest(url: NSURL(string: "https://api.fortresstech.io/v1/webhooks/trigger")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### application.signed **Request** ```json { "eventType": "application.signed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } ``` **Response** ```json { "eventId": "3b1f6c2e-8d4a-4f7b-9c0e-5a2d1e6f7b8c", "deliveries": [ { "subscriptionId": "6f2a9c1d-4b7e-4e3a-8f5d-2c1b0a9e8d7f", "status": 200 } ] } ``` **SDK Code** ```python application.signed import requests url = "https://api.fortresstech.io/v1/webhooks/trigger" payload = { "eventType": "application.signed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } headers = { "x-api-key": "", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript application.signed const url = 'https://api.fortresstech.io/v1/webhooks/trigger'; const options = { method: 'POST', headers: {'x-api-key': '', 'Content-Type': 'application/json'}, body: '{"eventType":"application.signed","organizationId":"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d","propertyId":"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d"}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go application.signed package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.fortresstech.io/v1/webhooks/trigger" payload := strings.NewReader("{\n \"eventType\": \"application.signed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("x-api-key", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby application.signed require 'uri' require 'net/http' url = URI("https://api.fortresstech.io/v1/webhooks/trigger") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["x-api-key"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"eventType\": \"application.signed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}" response = http.request(request) puts response.read_body ``` ```java application.signed import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.fortresstech.io/v1/webhooks/trigger") .header("x-api-key", "") .header("Content-Type", "application/json") .body("{\n \"eventType\": \"application.signed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") .asString(); ``` ```php application.signed request('POST', 'https://api.fortresstech.io/v1/webhooks/trigger', [ 'body' => '{ "eventType": "application.signed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" }', 'headers' => [ 'Content-Type' => 'application/json', 'x-api-key' => '', ], ]); echo $response->getBody(); ``` ```csharp application.signed using RestSharp; var client = new RestClient("https://api.fortresstech.io/v1/webhooks/trigger"); var request = new RestRequest(Method.POST); request.AddHeader("x-api-key", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"eventType\": \"application.signed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift application.signed import Foundation let headers = [ "x-api-key": "", "Content-Type": "application/json" ] let parameters = [ "eventType": "application.signed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.fortresstech.io/v1/webhooks/trigger")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### requirement.upload_received **Request** ```json { "eventType": "requirement.upload_received", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } ``` **Response** ```json { "eventId": "3b1f6c2e-8d4a-4f7b-9c0e-5a2d1e6f7b8c", "deliveries": [ { "subscriptionId": "6f2a9c1d-4b7e-4e3a-8f5d-2c1b0a9e8d7f", "status": 200 } ] } ``` **SDK Code** ```python requirement.upload_received import requests url = "https://api.fortresstech.io/v1/webhooks/trigger" payload = { "eventType": "requirement.upload_received", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } headers = { "x-api-key": "", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript requirement.upload_received const url = 'https://api.fortresstech.io/v1/webhooks/trigger'; const options = { method: 'POST', headers: {'x-api-key': '', 'Content-Type': 'application/json'}, body: '{"eventType":"requirement.upload_received","organizationId":"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d","propertyId":"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d"}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go requirement.upload_received package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.fortresstech.io/v1/webhooks/trigger" payload := strings.NewReader("{\n \"eventType\": \"requirement.upload_received\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("x-api-key", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby requirement.upload_received require 'uri' require 'net/http' url = URI("https://api.fortresstech.io/v1/webhooks/trigger") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["x-api-key"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"eventType\": \"requirement.upload_received\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}" response = http.request(request) puts response.read_body ``` ```java requirement.upload_received import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.fortresstech.io/v1/webhooks/trigger") .header("x-api-key", "") .header("Content-Type", "application/json") .body("{\n \"eventType\": \"requirement.upload_received\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") .asString(); ``` ```php requirement.upload_received request('POST', 'https://api.fortresstech.io/v1/webhooks/trigger', [ 'body' => '{ "eventType": "requirement.upload_received", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" }', 'headers' => [ 'Content-Type' => 'application/json', 'x-api-key' => '', ], ]); echo $response->getBody(); ``` ```csharp requirement.upload_received using RestSharp; var client = new RestClient("https://api.fortresstech.io/v1/webhooks/trigger"); var request = new RestRequest(Method.POST); request.AddHeader("x-api-key", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"eventType\": \"requirement.upload_received\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift requirement.upload_received import Foundation let headers = [ "x-api-key": "", "Content-Type": "application/json" ] let parameters = [ "eventType": "requirement.upload_received", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.fortresstech.io/v1/webhooks/trigger")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### requirement.upload_removed **Request** ```json { "eventType": "requirement.upload_removed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } ``` **Response** ```json { "eventId": "3b1f6c2e-8d4a-4f7b-9c0e-5a2d1e6f7b8c", "deliveries": [ { "subscriptionId": "6f2a9c1d-4b7e-4e3a-8f5d-2c1b0a9e8d7f", "status": 200 } ] } ``` **SDK Code** ```python requirement.upload_removed import requests url = "https://api.fortresstech.io/v1/webhooks/trigger" payload = { "eventType": "requirement.upload_removed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } headers = { "x-api-key": "", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript requirement.upload_removed const url = 'https://api.fortresstech.io/v1/webhooks/trigger'; const options = { method: 'POST', headers: {'x-api-key': '', 'Content-Type': 'application/json'}, body: '{"eventType":"requirement.upload_removed","organizationId":"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d","propertyId":"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d"}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go requirement.upload_removed package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.fortresstech.io/v1/webhooks/trigger" payload := strings.NewReader("{\n \"eventType\": \"requirement.upload_removed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("x-api-key", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby requirement.upload_removed require 'uri' require 'net/http' url = URI("https://api.fortresstech.io/v1/webhooks/trigger") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["x-api-key"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"eventType\": \"requirement.upload_removed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}" response = http.request(request) puts response.read_body ``` ```java requirement.upload_removed import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.fortresstech.io/v1/webhooks/trigger") .header("x-api-key", "") .header("Content-Type", "application/json") .body("{\n \"eventType\": \"requirement.upload_removed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") .asString(); ``` ```php requirement.upload_removed request('POST', 'https://api.fortresstech.io/v1/webhooks/trigger', [ 'body' => '{ "eventType": "requirement.upload_removed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" }', 'headers' => [ 'Content-Type' => 'application/json', 'x-api-key' => '', ], ]); echo $response->getBody(); ``` ```csharp requirement.upload_removed using RestSharp; var client = new RestClient("https://api.fortresstech.io/v1/webhooks/trigger"); var request = new RestRequest(Method.POST); request.AddHeader("x-api-key", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"eventType\": \"requirement.upload_removed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift requirement.upload_removed import Foundation let headers = [ "x-api-key": "", "Content-Type": "application/json" ] let parameters = [ "eventType": "requirement.upload_removed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.fortresstech.io/v1/webhooks/trigger")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### compliance_review.opened **Request** ```json { "eventType": "compliance_review.opened", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } ``` **Response** ```json { "eventId": "3b1f6c2e-8d4a-4f7b-9c0e-5a2d1e6f7b8c", "deliveries": [ { "subscriptionId": "6f2a9c1d-4b7e-4e3a-8f5d-2c1b0a9e8d7f", "status": 200 } ] } ``` **SDK Code** ```python compliance_review.opened import requests url = "https://api.fortresstech.io/v1/webhooks/trigger" payload = { "eventType": "compliance_review.opened", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } headers = { "x-api-key": "", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript compliance_review.opened const url = 'https://api.fortresstech.io/v1/webhooks/trigger'; const options = { method: 'POST', headers: {'x-api-key': '', 'Content-Type': 'application/json'}, body: '{"eventType":"compliance_review.opened","organizationId":"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d","propertyId":"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d"}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go compliance_review.opened package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.fortresstech.io/v1/webhooks/trigger" payload := strings.NewReader("{\n \"eventType\": \"compliance_review.opened\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("x-api-key", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby compliance_review.opened require 'uri' require 'net/http' url = URI("https://api.fortresstech.io/v1/webhooks/trigger") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["x-api-key"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"eventType\": \"compliance_review.opened\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}" response = http.request(request) puts response.read_body ``` ```java compliance_review.opened import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.fortresstech.io/v1/webhooks/trigger") .header("x-api-key", "") .header("Content-Type", "application/json") .body("{\n \"eventType\": \"compliance_review.opened\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") .asString(); ``` ```php compliance_review.opened request('POST', 'https://api.fortresstech.io/v1/webhooks/trigger', [ 'body' => '{ "eventType": "compliance_review.opened", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" }', 'headers' => [ 'Content-Type' => 'application/json', 'x-api-key' => '', ], ]); echo $response->getBody(); ``` ```csharp compliance_review.opened using RestSharp; var client = new RestClient("https://api.fortresstech.io/v1/webhooks/trigger"); var request = new RestRequest(Method.POST); request.AddHeader("x-api-key", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"eventType\": \"compliance_review.opened\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift compliance_review.opened import Foundation let headers = [ "x-api-key": "", "Content-Type": "application/json" ] let parameters = [ "eventType": "compliance_review.opened", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.fortresstech.io/v1/webhooks/trigger")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### compliance_review.closed **Request** ```json { "eventType": "compliance_review.closed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } ``` **Response** ```json { "eventId": "3b1f6c2e-8d4a-4f7b-9c0e-5a2d1e6f7b8c", "deliveries": [ { "subscriptionId": "6f2a9c1d-4b7e-4e3a-8f5d-2c1b0a9e8d7f", "status": 200 } ] } ``` **SDK Code** ```python compliance_review.closed import requests url = "https://api.fortresstech.io/v1/webhooks/trigger" payload = { "eventType": "compliance_review.closed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } headers = { "x-api-key": "", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript compliance_review.closed const url = 'https://api.fortresstech.io/v1/webhooks/trigger'; const options = { method: 'POST', headers: {'x-api-key': '', 'Content-Type': 'application/json'}, body: '{"eventType":"compliance_review.closed","organizationId":"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d","propertyId":"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d"}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go compliance_review.closed package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.fortresstech.io/v1/webhooks/trigger" payload := strings.NewReader("{\n \"eventType\": \"compliance_review.closed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("x-api-key", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby compliance_review.closed require 'uri' require 'net/http' url = URI("https://api.fortresstech.io/v1/webhooks/trigger") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["x-api-key"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"eventType\": \"compliance_review.closed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}" response = http.request(request) puts response.read_body ``` ```java compliance_review.closed import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.fortresstech.io/v1/webhooks/trigger") .header("x-api-key", "") .header("Content-Type", "application/json") .body("{\n \"eventType\": \"compliance_review.closed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") .asString(); ``` ```php compliance_review.closed request('POST', 'https://api.fortresstech.io/v1/webhooks/trigger', [ 'body' => '{ "eventType": "compliance_review.closed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" }', 'headers' => [ 'Content-Type' => 'application/json', 'x-api-key' => '', ], ]); echo $response->getBody(); ``` ```csharp compliance_review.closed using RestSharp; var client = new RestClient("https://api.fortresstech.io/v1/webhooks/trigger"); var request = new RestRequest(Method.POST); request.AddHeader("x-api-key", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"eventType\": \"compliance_review.closed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift compliance_review.closed import Foundation let headers = [ "x-api-key": "", "Content-Type": "application/json" ] let parameters = [ "eventType": "compliance_review.closed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.fortresstech.io/v1/webhooks/trigger")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### application.completed **Request** ```json { "eventType": "application.completed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } ``` **Response** ```json { "eventId": "3b1f6c2e-8d4a-4f7b-9c0e-5a2d1e6f7b8c", "deliveries": [ { "subscriptionId": "6f2a9c1d-4b7e-4e3a-8f5d-2c1b0a9e8d7f", "status": 200 } ] } ``` **SDK Code** ```python application.completed import requests url = "https://api.fortresstech.io/v1/webhooks/trigger" payload = { "eventType": "application.completed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } headers = { "x-api-key": "", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript application.completed const url = 'https://api.fortresstech.io/v1/webhooks/trigger'; const options = { method: 'POST', headers: {'x-api-key': '', 'Content-Type': 'application/json'}, body: '{"eventType":"application.completed","organizationId":"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d","propertyId":"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d"}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go application.completed package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.fortresstech.io/v1/webhooks/trigger" payload := strings.NewReader("{\n \"eventType\": \"application.completed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("x-api-key", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby application.completed require 'uri' require 'net/http' url = URI("https://api.fortresstech.io/v1/webhooks/trigger") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["x-api-key"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"eventType\": \"application.completed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}" response = http.request(request) puts response.read_body ``` ```java application.completed import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.fortresstech.io/v1/webhooks/trigger") .header("x-api-key", "") .header("Content-Type", "application/json") .body("{\n \"eventType\": \"application.completed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") .asString(); ``` ```php application.completed request('POST', 'https://api.fortresstech.io/v1/webhooks/trigger', [ 'body' => '{ "eventType": "application.completed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" }', 'headers' => [ 'Content-Type' => 'application/json', 'x-api-key' => '', ], ]); echo $response->getBody(); ``` ```csharp application.completed using RestSharp; var client = new RestClient("https://api.fortresstech.io/v1/webhooks/trigger"); var request = new RestRequest(Method.POST); request.AddHeader("x-api-key", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"eventType\": \"application.completed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift application.completed import Foundation let headers = [ "x-api-key": "", "Content-Type": "application/json" ] let parameters = [ "eventType": "application.completed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.fortresstech.io/v1/webhooks/trigger")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` ### agent.state_changed **Request** ```json { "eventType": "agent.state_changed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } ``` **Response** ```json { "eventId": "3b1f6c2e-8d4a-4f7b-9c0e-5a2d1e6f7b8c", "deliveries": [ { "subscriptionId": "6f2a9c1d-4b7e-4e3a-8f5d-2c1b0a9e8d7f", "status": 200 } ] } ``` **SDK Code** ```python agent.state_changed import requests url = "https://api.fortresstech.io/v1/webhooks/trigger" payload = { "eventType": "agent.state_changed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" } headers = { "x-api-key": "", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript agent.state_changed const url = 'https://api.fortresstech.io/v1/webhooks/trigger'; const options = { method: 'POST', headers: {'x-api-key': '', 'Content-Type': 'application/json'}, body: '{"eventType":"agent.state_changed","organizationId":"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d","propertyId":"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d"}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go agent.state_changed package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.fortresstech.io/v1/webhooks/trigger" payload := strings.NewReader("{\n \"eventType\": \"agent.state_changed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("x-api-key", "") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby agent.state_changed require 'uri' require 'net/http' url = URI("https://api.fortresstech.io/v1/webhooks/trigger") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["x-api-key"] = '' request["Content-Type"] = 'application/json' request.body = "{\n \"eventType\": \"agent.state_changed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}" response = http.request(request) puts response.read_body ``` ```java agent.state_changed import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.fortresstech.io/v1/webhooks/trigger") .header("x-api-key", "") .header("Content-Type", "application/json") .body("{\n \"eventType\": \"agent.state_changed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}") .asString(); ``` ```php agent.state_changed request('POST', 'https://api.fortresstech.io/v1/webhooks/trigger', [ 'body' => '{ "eventType": "agent.state_changed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" }', 'headers' => [ 'Content-Type' => 'application/json', 'x-api-key' => '', ], ]); echo $response->getBody(); ``` ```csharp agent.state_changed using RestSharp; var client = new RestClient("https://api.fortresstech.io/v1/webhooks/trigger"); var request = new RestRequest(Method.POST); request.AddHeader("x-api-key", ""); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{\n \"eventType\": \"agent.state_changed\",\n \"organizationId\": \"1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d\",\n \"propertyId\": \"3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d\"\n}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift agent.state_changed import Foundation let headers = [ "x-api-key": "", "Content-Type": "application/json" ] let parameters = [ "eventType": "agent.state_changed", "organizationId": "1a2b3c4d-5e6f-4a1b-8c2d-3e4f5a6b7c8d", "propertyId": "3a1e2b4c-5d6f-4a7b-8c9d-0e1f2a3b4c5d" ] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.fortresstech.io/v1/webhooks/trigger")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```