[{"data":1,"prerenderedAt":124},["ShallowReactive",2],{"search-api":3},[4,11,23,31,39,48,56,64,72,80,88,97,106,115],{"id":5,"path":6,"dir":7,"title":8,"description":7,"keywords":9,"body":10},"content:0.index.md","/","","Home",[],"    Empower Your Application with Real-time Updates.   Seamlessly integrate our powerful webhook solution to efficiently receive updates. This documentation guides you through the setup process, payload structure, security measures, and more.      What's included    Real-time Updates   Experience instant data synchronization with our webhook service, ensuring your application stays up-to-date with the latest information without delays.    Robust Security Measures   Rest easy with our built-in security protocols, including HTTPS support and payload validation, ensuring the integrity and confidentiality of the data exchanged between your application and the webhook service    Documentation and Support   Rely on the documentation that guides you through the integration process step-by-step. Access prompt and efficient support channels to address any questions or issues, ensuring a smooth and successful implementation.",{"id":12,"path":13,"dir":14,"title":15,"description":16,"keywords":17,"body":22},"content:1.getting-started:1.setup.md","/getting-started/setup","getting-started","Setup","How to set up your webhook integration",[18,19,20,21],"Implementing Endpoints to Receive Webhook Events","Handling Webhook Events","Summary","Example","  Setup  How to set up your webhook integration   To start receiving webhook events in your app, create and register a webhook endpoint by following the steps below. You can register and create one endpoint to handle several different event types at once, or set up individual endpoints for specific events.    Identify which events you want to monitor.  Develop a webhook endpoint function to receive event data via POST requests.  Register your endpoint within Axicloud using the Webhooks Dashboard or the API.  Secure your webhook endpoint.  Implementing Endpoints to Receive Webhook Events    HTTP Endpoint Setup :   Users need to create an HTTP endpoint (e.g.,   /events ) that listens for POST requests, as webhook events are sent via HTTP POST.   Request Verification :   To ensure that the incoming request is from the Axicloud Webhook Service, verify the request signature. The signature is provided in the   X-AW-Signature  header.   Handling Signature Verification :   Implement a function (for example,   generateSignature ) that takes the HTTP method, URL, timestamp, and raw body of the request, and generates a signature using a shared API secret.   Important:  The signature function expects the URL to include   only the path and query string  (if any), not the full URL with the domain.  \nFor instance, if your full URL is:\n   https://example.com/events?foo=bar\n \nyou should use:\n   /events?foo=bar\n \nin your signature calculation.  Compare the generated signature with the one provided in the request header.   Returning 2XX Status Code :   To signal successful receipt of the webhook event, return a 2XX status code (e.g.,   res.sendStatus(200)  in Node.js). This informs the Axicloud Webhook Service that the event was successfully received and prevents unnecessary retries.  Handling Webhook Events    Validating Request Signature :   Once the signature is validated, you can trust that the incoming webhook event is legitimate.   Processing the Event :   Process the event according to the payload provided in the request body (e.g.,   req.body  in Node.js or   $webhook  in PHP). The payload structure depends on the event type triggered by the Axicloud Webhook Service.   Idempotent Endpoint Design :   Design your webhook endpoint to be idempotent. This means that if the same event is received more than once (due to retries, for example), it won’t cause unintended side effects or duplicate data.  Summary  You need to implement HTTP endpoints that accept POST requests, validate the request signature (using only the URL’s path and query), process the specific event, and return a 2XX status code to acknowledge successful receipt. Designing idempotent endpoints helps prevent issues related to duplicate data.  It's important to note that the specific implementation details may vary based on the programming language and framework used, but the overall approach remains consistent. Refer to the Axicloud Webhook Service documentation for event-specific payload details and any additional requirements.  Example  Below are several code examples that illustrate how to implement signature verification. Notice that in each example the URL used for signature generation consists of only the path and query string (if any).      const   crypto   =   require  (  \"crypto\"  );\n   const   express   =   require  (  \"express\"  );\n   \n   const   API_SECRET   =   \"wh_sec_YOUR_WEBHOOK_SECRET\"  ;\n   \n   const   app   =   express  ();\n   \n   app.  use  (\n     express.  json  ({\n       verify  : (  req  ,   res  ,   buffer  )   =>   {\n         req.rawBody   =   buffer;\n       },\n     })\n   );\n   \n   app.  post  (  \"/\"  , (  req  ,   res  )   =>   {\n     // In Express, req.url contains only the path and query string.\n     const   signature   =   generateSignature  (\n       req.method,\n       req.url,   // Only path and query are used!\n       req.headers[  \"x-aw-timestamp\"  ],\n       req.rawBody\n     );\n   \n     if   (signature   !==   req.headers[  \"x-aw-signature\"  ]) {\n       return   res.  sendStatus  (  401  );\n     }\n   \n     console.  log  (  \"Received webhook\"  , req.body);\n     res.  sendStatus  (  200  );\n   });\n   \n   app.  listen  (  9000  , ()   =>   console.  log  (  \"Node.js server started on port 9000.\"  ));\n   \n   function   generateSignature  (  method  ,   url  ,   timestamp  ,   body  ) {\n     const   hmac   =   crypto.  createHmac  (  \"SHA256\"  ,   API_SECRET  );\n   \n     // Only the URL path and query are used in the signature calculation.\n     hmac.  update  (  `${  method  .  toUpperCase  ()  }${  url  }${  timestamp  }`  );\n   \n     if   (body) {\n       hmac.  update  (body);\n     }\n   \n     return   hmac.  digest  (  \"hex\"  );\n   }\n     import   *   as   crypto   from   \"crypto\"  ;\n   import   *   as   express   from   \"express\"  ;\n   \n   const   API_SECRET  :   string   =   \"secret\"  ;\n   const   app  :   express  .  Application   =   express  ();\n   \n   app.  use  (\n     express.  json  ({\n       verify  : (  req  :   express  .  Request  ,   res  :   express  .  Response  ,   buffer  :   Buffer  )   =>   {\n         req.rawBody   =   buffer;\n       },\n     })\n   );\n   \n   app.  post  (  \"/\"  , (  req  :   express  .  Request  ,   res  :   express  .  Response  )   =>   {\n     // Note: req.url here is only the path and query.\n     const   signature  :   string   =   generateSignature  (\n       req.method,\n       req.url,\n       req.headers[  \"x-aw-timestamp\"  ]   as   string  ,\n       req.rawBody\n     );\n   \n     if   (signature   !==   req.headers[  \"x-aw-signature\"  ]) {\n       return   res.  sendStatus  (  401  );\n     }\n   \n     console.  log  (  \"Received webhook\"  , req.body);\n     res.  sendStatus  (  200  );\n   });\n   \n   app.  listen  (  9000  , ()   =>   console.  log  (  \"Node.js server started on port 9000.\"  ));\n   \n   function   generateSignature  (\n     method  :   string  ,\n     url  :   string  ,\n     timestamp  :   string  ,\n     body  :   Buffer\n   )  :   string   {\n     const   hmac  :   crypto  .  Hmac   =   crypto.  createHmac  (  \"SHA256\"  ,   API_SECRET  );\n   \n     // The signature uses only the URL's path and query.\n     hmac.  update  (  `${  method  .  toUpperCase  ()  }${  url  }${  timestamp  }`  );\n   \n     if   (body) {\n       hmac.  update  (body);\n     }\n   \n     return   hmac.  digest  (  \"hex\"  );\n   }\n     \u003C?  php\n   \n   $apiSecret   =   'secret'  ;\n   \n   // Retrieve HTTP method, headers, and raw body\n   $requestMethod   =   $_SERVER[  'REQUEST_METHOD'  ]   ??   ''  ;\n   $timestamp   =   $_SERVER[  'HTTP_X_AW_TIMESTAMP'  ]   ??   ''  ;\n   // $_SERVER['REQUEST_URI'] returns only the path and query string.\n   $url   =   $_SERVER[  'REQUEST_URI'  ];\n   $body   =   file_get_contents  (  'php://input'  );\n   \n   // Generate signature\n   $signature   =   generateSignature  ($requestMethod, $url, $timestamp, $body);\n   \n   // Verify signature\n   if   (  !  hash_equals  ($signature, $_SERVER[  'HTTP_X_AW_SIGNATURE'  ]   ??   ''  )) {\n       http_response_code  (  401  );\n       die  ();\n   }\n   \n   // Process webhook event\n   $webhook   =   json_decode  ($body);\n   file_put_contents  (  'php://stdout'  ,   'Webhook event received: '   .   print_r  ($webhook,   true  )   .   PHP_EOL  );\n   \n   // Respond with a 2XX status code\n   http_response_code  (  200  );\n   \n   function   generateSignature  ($method, $url, $timestamp, $body) {\n       global   $apiSecret;\n       $data   =   $method   .   $url   .   $timestamp   .   $body;\n       return   hash_hmac  (  'sha256'  , $data, $apiSecret);\n   }\n     \u003C?  php\n   \n   namespace   App\\Http\\Controllers  ;\n   \n   use   Illuminate\\Http\\Request  ;\n   use   App\\Http\\Controllers\\Controller  ;\n   \n   class   WebhookController   extends   Controller\n   {\n       private   $apiSecret   =   'secret'  ;\n   \n       public   function   handleWebhook  (  Request   $request)\n       {\n           // Use getRequestUri() to include the query string, not just the path.\n           $url   =   $request  ->  getRequestUri  ();\n           $signature   =   $this  ->  generateSignature  (\n               $request  ->  method  (),\n               $url,   // Only path and query are used.\n               $request  ->  header  (  'x-aw-timestamp'  ),\n               $request  ->  getContent  ()\n           );\n   \n           // Verify signature\n           if   (  !  hash_equals  ($signature, $request  ->  header  (  'x-aw-signature'  ))) {\n               return   response  ()  ->  json  ([  'error'   =>   'Invalid webhook signature'  ],   401  );\n           }\n   \n           // Process webhook event\n           $webhook   =   json_decode  ($request  ->  getContent  (),   true  );\n           \\Log  ::  info  (  'Webhook event received: '   .   print_r  ($webhook,   true  ));\n   \n           // Respond with a 2XX status code\n           return   response  ()  ->  json  ([  'message'   =>   'Webhook event received'  ],   200  );\n       }\n   \n       private   function   generateSignature  ($method, $url, $timestamp, $body)\n       {\n           $data   =   $method   .   $url   .   $timestamp   .   $body;\n           return   hash_hmac  (  'sha256'  , $data,   $this  ->  apiSecret);\n       }\n   }\n     package   main\n   \n   import   (\n     \"  crypto/hmac  \"\n     \"  crypto/sha256  \"\n     \"  encoding/hex  \"\n     \"  fmt  \"\n     \"  io/ioutil  \"\n     \"  net/http  \"\n   )\n   \n   const   apiSecret   =   \"secret\"\n   \n   func   main  () {\n     http.  HandleFunc  (  \"/\"  ,   func  (  w   http  .  ResponseWriter  ,   r   *  http  .  Request  ) {\n       body, err   :=   ioutil.  ReadAll  (r.Body)\n       if   err   !=   nil   {\n         http.  Error  (w,   \"Error reading request body\"  , http.StatusInternalServerError)\n         return\n       }\n   \n       // r.URL.RequestURI() returns the path and query string.\n       method   :=   r.Method\n       url   :=   r.URL.  RequestURI  ()   // Only path and query are used.\n       timestamp   :=   r.Header.  Get  (  \"X-AW-Timestamp\"  )\n       receivedHmac   :=   r.Header.  Get  (  \"X-AW-Signature\"  )\n   \n       // Verify signature\n       if   !  verifySignature  (method, url, timestamp, body, receivedHmac) {\n         http.  Error  (w,   \"Invalid webhook signature\"  , http.StatusUnauthorized)\n         return\n       }\n   \n       // Process webhook event\n       fmt.  Println  (  \"Webhook event received:\"  ,   string  (body))\n   \n       // Respond with a 2XX status code\n       w.  WriteHeader  (http.StatusOK)\n     })\n   \n     fmt.  Println  (  \"Go server started on port 9000.\"  )\n     http.  ListenAndServe  (  \":9000\"  ,   nil  )\n   }\n   \n   func   verifySignature  (  method  ,   url  ,   timestamp   string  ,   body   []  byte  ,   receivedHmac   string  )   bool   {\n     h   :=   hmac.  New  (sha256.New, []  byte  (apiSecret))\n     h.  Write  ([]  byte  (fmt.  Sprintf  (  \"  %s%s%s  \"  , method, url, timestamp)))\n     h.  Write  (body)\n     calculatedHmac   :=   hex.  EncodeToString  (h.  Sum  (  nil  ))\n     return   hmac.  Equal  ([]  byte  (calculatedHmac), []  byte  (receivedHmac))\n   }\n     require   'sinatra'\n   require   'openssl'\n   require   'json'\n   \n   set   :port  ,   9000\n   \n   API_SECRET   =   'secret'\n   \n   before   do\n     request.  body  .  rewind\n     @request_payload   =   request.  body  .  read\n   end\n   \n   post   '/'   do\n     # request.fullpath returns only the path and query string.\n     method   = request.  request_method\n     url   = request.  fullpath   # Only path and query are used.\n     timestamp   = request.  env  [  'HTTP_X_AW_TIMESTAMP'  ]\n     received_hmac   = request.  env  [  'HTTP_X_AW_SIGNATURE'  ]\n   \n     # Verify signature\n     unless   verify_signature  (method, url, timestamp, @request_payload, received_hmac)\n       status   401\n       return   'Invalid webhook signature'\n     end\n   \n     # Process webhook event\n     webhook   =   JSON  .  parse  (@request_payload)\n     puts   \"Webhook event received:   #{webhook}  \"\n   \n     # Respond with a 2XX status code\n     status   200\n   end\n   \n   def   verify_signature  (method, url, timestamp, body, received_hmac)\n     calculated_hmac   =   OpenSSL  ::  HMAC  .  hexdigest  (  'sha256'  ,   API_SECRET  ,   \"  #{method}#{url}#{timestamp}#{body}  \"  )\n     calculated_hmac   ==   received_hmac\n   end\n     from   flask   import   Flask, request, abort\n   import   hmac\n   import   hashlib\n   import   json\n   \n   app   =   Flask(  __name__  )\n   \n   API_SECRET   =   'secret'\n   \n   @app.route  (  '/'  ,   methods  =  [  'POST'  ])\n   def   webhook  ():\n       try  :\n           raw_body   =   request.get_data()\n           method   =   request.method\n           # Use request.full_path to get only the path and query (excluding domain)\n           url   =   request.full_path    # Only path and query are used.\n           timestamp   =   request.headers.get(  'X-AW-Timestamp'  )\n           received_hmac   =   request.headers.get(  'X-AW-Signature'  )\n   \n           # Verify signature\n           if   not   verify_signature(method, url, timestamp, raw_body, received_hmac):\n               abort(  401  ,   'Invalid webhook signature'  )\n   \n           # Process webhook event\n           webhook_data   =   json.loads(raw_body)\n           print  (  'Webhook event received:'  , webhook_data)\n   \n           # Respond with a 2XX status code\n           return   ''  ,   200\n       except   Exception   as   e:\n           print  (  'Error processing webhook:'  ,   str  (e))\n           abort(  500  ,   'Internal Server Error'  )\n   \n   def   verify_signature  (method, url, timestamp, body, received_hmac):\n       data_to_sign   =   f  '  {  method  }{  url  }{  timestamp  }{  body.decode(  \"utf-8\"  )   if   body   else   \"\"  }  '\n       calculated_hmac   =   hmac.new(  API_SECRET  .encode(  'utf-8'  ), data_to_sign.encode(  'utf-8'  ), hashlib.sha256).hexdigest()\n       return   hmac.compare_digest(calculated_hmac, received_hmac)\n   \n   if   __name__   ==   '__main__'  :\n       app.run(  port  =  9000  )\n     using   System  ;\n   using   System  .  IO  ;\n   using   System  .  Net  ;\n   using   System  .  Security  .  Cryptography  ;\n   using   System  .  Text  ;\n   using   Microsoft  .  AspNetCore  .  Builder  ;\n   using   Microsoft  .  AspNetCore  .  Http  ;\n   \n   class   Program\n   {\n       static   void   Main  ()\n       {\n           var   builder   =   new   WebHostBuilder  ()\n               .  UseKestrel  ()\n               .  Configure  (  app   =>\n               {\n                   app.  Use  (  async   (  context  ,   next  )   =>\n                   {\n                       using   (  var   reader   =   new   StreamReader  (context.Request.Body))\n                       {\n                           var   rawBody   =   await   reader.  ReadToEndAsync  ();\n                           var   method   =   context.Request.Method;\n                           // Combine Path and QueryString to use only path and query.\n                           var   url   =   context.Request.Path   +   context.Request.QueryString;\n                           var   timestamp   =   context.Request.Headers[  \"X-AW-Timestamp\"  ];\n                           var   receivedHmac   =   context.Request.Headers[  \"X-AW-Signature\"  ];\n   \n                           // Verify signature\n                           if   (  !  VerifySignature  (method, url, timestamp, rawBody, receivedHmac))\n                           {\n                               context.Response.StatusCode   =   (  int  )HttpStatusCode.Unauthorized;\n                               return  ;\n                           }\n   \n                           // Process webhook event\n                           Console.  WriteLine  (  $\"Webhook event received: {  rawBody  }\"  );\n   \n                           // Respond with a 2XX status code\n                           context.Response.StatusCode   =   (  int  )HttpStatusCode.OK;\n                       }\n                   });\n               });\n   \n           var   host   =   builder.  Build  ();\n           host.  Run  ();\n       }\n   \n       static   bool   VerifySignature  (  string   method  ,   string   url  ,   string   timestamp  ,   string   body  ,   string   receivedHmac  )\n       {\n           using   (  var   hmac   =   new   HMACSHA256  (Encoding.UTF8.  GetBytes  (  \"secret\"  )))\n           {\n               var   dataToSign   =   $\"{  method  }{  url  }{  timestamp  }{  body  }\"  ;\n               var   calculatedHmac   =   BitConverter.  ToString  (hmac.  ComputeHash  (Encoding.UTF8.  GetBytes  (dataToSign))).  Replace  (  \"-\"  ,   \"\"  ).  ToLower  ();\n               return   string  .  Equals  (calculatedHmac, receivedHmac, StringComparison.OrdinalIgnoreCase);\n           }\n       }\n   }\n     import   org.springframework.boot.SpringApplication;\n   import   org.springframework.boot.autoconfigure.SpringBootApplication;\n   import   org.springframework.web.bind.annotation.PostMapping;\n   import   org.springframework.web.bind.annotation.RequestBody;\n   import   org.springframework.web.bind.annotation.RequestHeader;\n   import   org.springframework.web.bind.annotation.RestController;\n   \n   import   javax.crypto.Mac;\n   import   javax.crypto.spec.SecretKeySpec;\n   import   java.nio.charset.StandardCharsets;\n   import   java.security.InvalidKeyException;\n   import   java.security.NoSuchAlgorithmException;\n   \n   @  SpringBootApplication\n   public   class   WebhookApplication   {\n   \n       private   static   final   String API_SECRET   =   \"secret\"  ;\n   \n       public   static   void   main  (  String  []   args  ) {\n           SpringApplication.  run  (WebhookApplication.class, args);\n       }\n   \n       @  RestController\n       public   static   class   WebhookController   {\n   \n           @  PostMapping  (  \"/\"  )\n           public   void   handleWebhook  (\n                   @  RequestHeader  (  \"X-AW-Timestamp\"  ) String   timestamp  ,\n                   @  RequestHeader  (  \"X-AW-Signature\"  ) String   receivedHmac  ,\n                   @  RequestBody   String   body\n           ) {\n               // For this example, the URL is fixed as \"/\" (only path and query).\n               if   (  !  verifySignature  (  \"POST\"  ,   \"/\"  , timestamp, body, receivedHmac)) {\n                   throw   new   SecurityException  (  \"Invalid webhook signature\"  );\n               }\n   \n               // Process webhook event\n               System.out.  println  (  \"Webhook event received: \"   +   body);\n   \n               // Respond with a 2XX status code\n           }\n   \n           private   boolean   verifySignature  (String   method  , String   url  , String   timestamp  , String   body  , String   receivedHmac  ) {\n               try   {\n                   Mac mac   =   Mac.  getInstance  (  \"HmacSHA256\"  );\n                   SecretKeySpec secretKeySpec   =   new   SecretKeySpec  (API_SECRET.  getBytes  (StandardCharsets.UTF_8),   \"HmacSHA256\"  );\n                   mac.  init  (secretKeySpec);\n   \n                   // Note: url should include only the path and query.\n                   String dataToSign   =   method   +   url   +   timestamp   +   body;\n                   byte  [] calculatedHmacBytes   =   mac.  doFinal  (dataToSign.  getBytes  (StandardCharsets.UTF_8));\n                   String calculatedHmac   =   javax.xml.bind.DatatypeConverter.  printHexBinary  (calculatedHmacBytes).  toLowerCase  ();\n   \n                   return   calculatedHmac.  equals  (receivedHmac);\n               }   catch   (NoSuchAlgorithmException | InvalidKeyException   e  ) {\n                   throw   new   RuntimeException  (  \"Error verifying signature\"  , e);\n               }\n           }\n       }\n   }\n   That's it! You can now receive Axitech Webhooks   Events  in your app ✨  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":24,"path":25,"dir":7,"title":26,"description":27,"keywords":28,"body":30},"content:2.events:1.index.md","/events","Events","Events are our way of letting you know when something happens in your account. When an event occurs, we create a new Event object. For example, when an contact is created, we create a contact.created event, and when an vehicle is updated, we create a vehicle.updated event. Certain actions within Axicloud might create multiple events.",[29],"Event Object","  Events  Events are our way of letting you know when something happens in your account. When an event occurs, we create a new Event object. For example, when an contact is created, we create a contact.created event, and when an vehicle is updated, we create a vehicle.updated event. Certain actions within Axicloud might create multiple events.  Events occur when the state of another resource changes. The event’s data field embeds the resource’s state at the time of the change. For example, a contact.created event contains a contact, and an vehicle.updated event contains a vehicle.  Event Object  The event object provides information about a specific event triggered by the Axicloud Webhook Service.  Events are grouped into Event groups, which encapsulate a group of events like IncidentEvent.\nEach event group can have multiple event types. Which follow the pattern:   resource.event  Properties:    created_at :   string   Represents the date and time when the event was created. Format: 'YYYY-MM-DDTHH:mm:ss'.   api_version :   string   Indicates the version of the Axicloud Webhook Service API, e.g., 'v1'.   group :   string   Specifies the group that the specific event belongs to. For now the only one is   IncidentEevent   event :   string   Specifies the type of the event inside the specified group. It can be one of the   event types   subscription_id :   string   Represents the identifier of the subscriber associated with the event.   retry_count :   number   Represents the number of times the event delivery was retried.   metadata :   array   Contains metadata related to relevant external systems. Each metadata object has the following properties:\n    key :   string   Represents the key of the metadata.   value :   string   Represents the value of the metadata.   data :   object   Contains specific data related to the event. The structure of this object depends on the event type.  Example:     {\n     \"created_at\"  :   \"2023-01-01T12:00:00Z\"  ,\n     \"api_version\"  :   \"v1\"  ,\n     \"group_type\"  :   \"IncidentEvent\"  ,\n     \"event_type\"  :   \"incident.updated\"  ,\n     \"subscription_id\"  :   \"subscriber123\"  ,\n     \"retry_count\"  :   0  ,\n     \"metadata\"  : [\n       {\n         \"key\"  :   \"incident_id\"  ,\n         \"value\"  :   \"pVyo0DWO4yDxdvBM\"\n       },\n       {\n         \"key\"  :   \"cams_case_reference_id\"  ,\n         \"value\"  :   \"MSI/123456\"\n       }\n     ],\n     \"data\"  : {\n       \"incident_id\"  :   \"incident123\"  ,\n       \"location\"  :   \"New York\"\n       // ... other properties specific to the event\n     }\n   }\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":32,"path":33,"dir":34,"title":35,"description":36,"keywords":37,"body":38},"content:2.events:2.types-of-events.md","/events/types-of-events","events","Types of events","This is a list of all the types of events we currently send. We may add more at any time, so in developing and maintaining your code, you should not assume that only these types exist.",[],"  Types of events  This is a list of all the types of events we currently send. We may add more at any time, so in developing and maintaining your code, you should not assume that only these types exist.  You’ll notice that these events follow a pattern: resource.event. Our goal is to design a consistent system that makes things easier to anticipate and code against.                     ",{"id":40,"path":41,"dir":42,"title":43,"description":44,"keywords":45,"body":47},"content:3.groups:3.incident-event:1.incident.md","/groups/incident-event/incident","incident-event","Incident","The Incident resource provides details related to a vehicle crash event. It serves as the central entity that ties together various other resources, representing the core information associated with an incident.",[46],"The incident object","  Incident  The Incident resource provides details related to a vehicle crash event. It serves as the central entity that ties together various other resources, representing the core information associated with an incident.  The incident object  Attributes                   interface   Incident   {\n     object  :   \"Incident\"  ;\n     id  :   string  ;\n     reference_code  :   string  ;\n     incident_at  :   string  ;\n     created_by_entity_id  :   string  ;\n     timezone  :   string  ;\n     type  :   string  ;\n     status  :   string  ;\n     created_at  :   string  ;\n     updated_at  :   string  ;\n     case_id  :   string  ;\n   }\n     {\n     \"object\"  :   \"Incident\"  ,\n     \"id\"  :   \"2nv7WRgQv4Jl8yK3\"  ,\n     \"reference_code\"  :   \"JA-UX2LWP\"  ,\n     \"incident_at\"  :   \"2023-12-10T12:32:00.000000Z\"  ,\n     \"created_by_entity_id\"  :   \"ADJaqOMm3go3Lx6n\"  ,\n     \"timezone\"  :   \"Canada/Pacific\"  ,\n     \"type\"  :   \"Collision - Manually reported via Phone\"  ,\n     \"status\"  :   \"open\"  ,\n     \"created_at\"  :   \"2023-12-08T10:25:25.000000Z\"  ,\n     \"updated_at\"  :   \"2023-12-19T08:26:15.000000Z\"  ,\n     \"case_id\"  :   \"Eramq8bG7bRJK9yl\"  ,\n   }\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":49,"path":50,"dir":42,"title":51,"description":52,"keywords":53,"body":55},"content:3.groups:3.incident-event:2.vehicle.md","/groups/incident-event/vehicle","Vehicle","The Vehicle resource provides comprehensive information regarding a vehicle involved in an incident. It encompasses details such as body type, VIN, license plate, make, model, year, color, plate state, drive train, fuel type, trim level, dashcam footage availability, and the last update timestamp. This resource plays a vital role in providing a detailed profile of the vehicles associated with the incident.",[54],"The vehicle object","  Vehicle  The Vehicle resource provides comprehensive information regarding a vehicle involved in an incident. It encompasses details such as body type, VIN, license plate, make, model, year, color, plate state, drive train, fuel type, trim level, dashcam footage availability, and the last update timestamp. This resource plays a vital role in providing a detailed profile of the vehicles associated with the incident.  The vehicle object  Attributes                              interface   Vehicle   {\n     object  :   \"Vehicle\"  ;\n     body_type  :   \"car\"   |   \"motorcycle\"   |   \"other\"  ;\n     id  :   string  ;\n     group  :   \"primary-vehicle\"   |   \"third-party-vehicle\"  ;\n     driver_id  :   string  ;\n     owner_id  :   string  ;\n     account_contact_id  :   string  ;\n     secondary_account_contact_ids  :   string  [];\n     passenger_ids  :   string  [];\n     vin  :   string   |   null  ;\n     license_plate  :   string   |   null  ;\n     make  :   string   |   null  ;\n     model  :   string   |   null  ;\n     year  :   number   |   null  ;\n     color  :   string   |   null  ;\n     plate_state  :   string   |   null  ;\n     drive_train  :   \"AWD\"   |   \"FWD\"   |   \"RWD\"  ;\n     fuel_type  :   string   |   null  ;\n     trim_level  :   string   |   null  ;\n     dashcam_footage  :   boolean   |   null  ;\n     created_at  :   string  ;\n     updated_at  :   string  ;\n   }\n     {\n     \"object\"  :   \"Vehicle\"  ,\n     \"body_type\"  :   \"car\"  ,\n     \"id\"  :   \"NAGZ6rbLqgzR0V9d\"  ,\n     \"group\"  :   \"primary-vehicle\"  ,\n     \"driver_id\"  :   \"NAGZ6rbLqgzR0V9d\"  ,\n     \"owner_id\"  :   \"NAGZ6rbLqgzR0V9d\"  ,\n     \"account_contact_id\"  :   \"NAGZ6rbLqgzR0V9d\"  ,\n     \"secondary_account_contact_ids\"  : [\n       \"NAGZ6rbLqgzR0V9d\"\n     ],\n     \"passenger_ids\"  : [\n       \"NAGZ6rbLqgzR0V9d\"\n     ],\n     \"vin\"  :   \"VF3BA2150C0011909\"  ,\n     \"license_plate\"  :   \"SHZ7190\"  ,\n     \"make\"  :   \"Peugeot\"  ,\n     \"model\"  :   \"3008\"  ,\n     \"year\"  :   \"2014\"  ,\n     \"color\"  :   \"BROWN\"  ,\n     \"plate_state\"  :   null  ,\n     \"drive_train\"  :   \"FWD\"  ,\n     \"fuel_type\"  :   \"petrol\"  ,\n     \"trim_level\"  :   null  ,\n     \"dashcam_footage\"  :   true  ,\n     \"created_at\"  :   \"2023-12-19T09:08:25.000000Z\"  ,\n     \"updated_at\"  :   \"2023-12-19T09:08:25.000000Z\"\n   }\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":57,"path":58,"dir":42,"title":59,"description":60,"keywords":61,"body":63},"content:3.groups:3.incident-event:3.contact.md","/groups/incident-event/contact","Contact","The Contact resource represents individuals involved in the incident, encompassing their personal information, roles, address, insurance details, and injury information.",[62],"The Contact object","  Contact  The Contact resource represents individuals involved in the incident, encompassing their personal information, roles, address, insurance details, and injury information.  The Contact object  Attributes                                                                    interface   RootContact   {\n     group  :   'primary-vehicle'   |   'third-party-vehicle'   |   'third-party'  ;\n     roles  :   string  [];\n     vehicle_id  :   string   |   null  ;\n     contact  :   Contact  ;\n   }\n     interface   Contact   {\n     object  :   \"Contact\"  ;\n     id  :   string  ;\n     title  :   string   |   null  ;\n     first_name  :   string   |   null  ;\n     last_name  :   string   |   null  ;\n     full_name  :   string   |   null  ;\n     email  :   string   |   null  ;\n     date_of_birth  :   Date   |   null  ;\n     phones  :   {\n       phone_number  :   string   |   null  ;\n       phone_prefix  :   string   |   null  ;\n       label  :   string   |   null  ;\n       primary  :   boolean  ;\n     }[]   |   null  ;\n     created_at  :   Date  ;\n     updated_at  :   Date  ;\n     address  :   Location   |   null\n     insurance  :   Insurance  []   |   null  ;\n     roles  :   string  [];\n     injury  :   Injury   |   null   |   [];\n   }\n     interface   Insurance   {\n     object  :   \"Insurance\"  ;\n     id  :   string  ;\n     insurer  :   string   |   null  ;\n     policy_type  :   string   |   null  ;\n     policy_number  :   string   |   null  ;\n     claim_intend  :   boolean   |   null  ;\n     valid_from  :   string   |   null  ;\n     valid_to  :   string   |   null  ;\n     coverage_type  :   string   |   null  ;\n     vehicle_involved_covered  :   boolean  ;\n     policy_contact_is_driver  :   boolean  ;\n     insurance_limits_note  :   string   |   null  ;\n     deductible_excess_compulsory  :   string   |   null  ;\n     deductible_excess_voluntary  :   string   |   null  ;\n     deductible_excess_total  :   string   |   null  ;\n     deductible_excess_cover_addon  :   string   |   null  ;\n     deductible_excess_note  :   string   |   null  ;\n     onward_travel_cover  :   string   |   null  ;\n     onward_travel_cover_note  :   string   |   null  ;\n     insurance_note  :   string   |   null  ;\n     created_at  :   string  ;\n     updated_at  :   string  ;\n   }\n     interface   Injury   {\n     object  :   \"Injury\"  ;\n     id  :   string  ;\n     contact_id  :   string  ;\n     injury_suffered  :   string   |   null  ;\n     injury_severity  :   string   |   null  ;\n     description  :   string   |   null  ;\n     sought_medical_attention  :   boolean   |   null  ;\n     created_at  :   string  ;\n     updated_at  :   string  ;\n   }\n     {\n     \"group\"  :   \"third-party-vehicle\"  ,\n     \"contact\"  : {\n       \"id\"  :   \"ze1P9RbVrZbZkdLQ\"  ,\n       \"email\"  :   null  ,\n       \"roles\"  : [  \"driver\"  ],\n       \"title\"  :   null  ,\n       \"injury\"  : {\n         \"id\"  :   \"92XQjv4eAp4GRLwY\"  ,\n         \"object\"  :   \"Injury\"  ,\n         \"contact_id\"  :   \"ze1P9RbVrZbZkdLQ\"  ,\n         \"created_at\"  :   \"2024-05-28T10:01:29.000000Z\"  ,\n         \"updated_at\"  :   \"2024-05-31T06:36:30.000000Z\"  ,\n         \"description\"  :   null  ,\n         \"injury_severity\"  :   null  ,\n         \"injury_suffered\"  :   null  ,\n         \"sought_medical_attention\"  :   false\n       },\n       \"object\"  :   \"Contact\"  ,\n       \"phones\"  : [],\n       \"address\"  : {\n         \"id\"  :   \"\"  ,\n         \"city\"  :   null  ,\n         \"town\"  :   null  ,\n         \"state\"  :   null  ,\n         \"object\"  :   \"Address\"  ,\n         \"country\"  :   null  ,\n         \"latitude\"  :   null  ,\n         \"longitude\"  :   null  ,\n         \"what3words\"  :   null  ,\n         \"postal_code\"  :   null  ,\n         \"address_line\"  :   null  ,\n         \"address_line2\"  :   null  ,\n         \"formatted_address\"  :   null\n       },\n       \"full_name\"  :   \"Test Tp Driver\"  ,\n       \"insurance\"  : [],\n       \"last_name\"  :   \"Tp Driver\"  ,\n       \"created_at\"  :   \"2024-05-28T10:01:29.000000Z\"  ,\n       \"first_name\"  :   \"Test\"  ,\n       \"updated_at\"  :   \"2024-05-28T10:01:29.000000Z\"  ,\n       \"date_of_birth\"  :   null\n     },\n     \"vehicle_id\"  :   \"6jzWP348dQ4OmXJE\"\n   }\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":65,"path":66,"dir":42,"title":67,"description":68,"keywords":69,"body":71},"content:3.groups:3.incident-event:4.insurance.md","/groups/incident-event/insurance","Insurance","The Insurance resource encompasses the details of an insurance policy associated with a contact. It includes information such as the insurer, policy type, policy number, claim intend, coverage type, deductible, excess, onward travel coverage, and additional notes.",[70],"The insurance object","  Insurance  The Insurance resource encompasses the details of an insurance policy associated with a contact. It includes information such as the insurer, policy type, policy number, claim intend, coverage type, deductible, excess, onward travel coverage, and additional notes.  The insurance object  Attributes                                interface   Insurance   {\n     object  :   \"Insurance\"  ;\n     id  :   string  ;\n     insurer  :   string   |   null  ;\n     policy_type  :   string   |   null  ;\n     policy_number  :   string   |   null  ;\n     provider_contact_email  :   string   |   null  ;\n     provider_contact_number  :   string   |   null  ;\n     claim_intend  :   boolean   |   null\n     valid_from  :   string   |   null  ;\n     valid_to  :   string   |   null  ;\n     coverage_type  :   string   |   null  ;\n     vehicle_involved_covered  :   boolean  ;\n     policy_contact_is_driver  :   boolean  ;\n     insurance_limits_note  :   string   |   null  ;\n     deductible_excess_compulsory  :   string   |   null  ;\n     deductible_excess_voluntary  :   string   |   null  ;\n     deductible_excess_total  :   string   |   null  ;\n     deductible_excess_cover_addon  :   string   |   null  ;\n     deductible_excess_note  :   string   |   null  ;\n     onward_travel_cover  :   string   |   null  ;\n     onward_travel_cover_note  :   string   |   null  ;\n     insurance_note  :   string   |   null  ;\n     created_at  :   string  ;\n     updated_at  :   string  ;\n   }\n     {\n     \"id\"  :   \"NdkBR8425g2vOeoP\"  ,\n     \"object\"  :   \"Insurance\"  ,\n     \"insurer\"  :   \"Test Insurance Company\"  ,\n     \"claim_intend\"  :   null  ,\n     \"valid_to\"  :   \"2024-06-21T00:00:00.000000Z\"  ,\n     \"created_at\"  :   \"2024-05-31T06:48:31.000000Z\"  ,\n     \"updated_at\"  :   \"2024-05-31T07:01:47.000000Z\"  ,\n     \"valid_from\"  :   \"2024-05-09T00:00:00.000000Z\"  ,\n     \"policy_type\"  :   \"vehicle\"  ,\n     \"coverage_type\"  :   \"Fully Comprehensive\"  ,\n     \"policy_number\"  :   \"test-policy-123\"  ,\n     \"provider_contact_number\"  :   \"08001234567\"  ,\n     \"provider_contact_email\"  :   \"insurance@example.com\"  ,\n     \"insurance_note\"  :   \"General policy note\"  ,\n     \"onward_travel_cover\"  :   true  ,\n     \"insurance_limits_note\"  :   \"Policy limit note\"  ,\n     \"deductible_excess_note\"  :   \"Excess note\"  ,\n     \"deductible_excess_total\"  :   null  ,\n     \"onward_travel_cover_note\"  :   \"Onward note\"  ,\n     \"policy_contact_is_driver\"  :   true  ,\n     \"vehicle_involved_covered\"  :   false  ,\n     \"deductible_excess_voluntary\"  :   null  ,\n     \"deductible_excess_compulsory\"  :   null  ,\n     \"deductible_excess_cover_addon\"  :   true\n   }\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":73,"path":74,"dir":42,"title":75,"description":76,"keywords":77,"body":79},"content:3.groups:3.incident-event:5.location.md","/groups/incident-event/location","Location","The Location resource encompasses the geographical details of an address associated with a contact. It includes information such as formatted address, country, state, city, town, postal code, latitude, and longitude. Additionally, the what3words resource, nested within Location, provides geocoding information using What3words, where What3words is enabled.",[78],"The location object","  Location  The Location resource encompasses the geographical details of an address associated with a contact. It includes information such as formatted address, country, state, city, town, postal code, latitude, and longitude. Additionally, the   what3words  resource, nested within Location, provides geocoding information using What3words, where What3words is enabled.  The location object  Attributes                                                   interface   Location   {\n     object  :   \"Location\"  ;\n     id  :   string  ;\n     location_type  :   LocationType  ;\n     subject  :   LocationSubject  ;\n     formatted_address  :   string   |   null  ;\n     address_line  :   string   |   null  ;\n     address_line2  :   string   |   null  ;\n     country  :   string   |   null  ;\n     state  :   string   |   null  ;\n     city  :   string   |   null  ;\n     town  :   string   |   null  ;\n     postal_code  :   string   |   null  ;\n     latitude  :   number   |   null  ;\n     longitude  :   number   |   null  ;\n     what3words  :   W3w   |   null  ;\n   }\n     interface   W3W   {\n     country  :   string   |   null  ;\n     square  :   {\n       southwest  :   {\n         lng  :   number  ;\n         lat  :   number  ;\n       };\n       northeast  :   {\n         lng  :   number  ;\n         lat  :   number  ;\n       };\n     };\n     nearestPlace  :   string   |   null  ;\n     coordinates  :   {\n       lng  :   number  ;\n       lat  :   number  ;\n     };\n     words  :   string   |   null  ;\n     map  :   string   |   null  ;\n   }\n     enum   LocationType   {\n       \"address\"  ,\n       \"collision\"  ,\n       \"recovery_pickup\"\n   }\n     interface   LocationSubject   {\n       type  :   \"Contact\"   |   \"Incident\"   |   \"Vehicle\"  ;\n       id  :   string  ;\n   }\n     {\n     \"id\"  :   \"l17pJzMvpvgEVqBN\"  ,\n     \"location_type\"  :   \"address\"  ,\n     \"subject\"  : {\n         \"type\"  :   \"Contact\"  ,\n         \"id\"  :   \"c17pJzMvpvgEVqBN\"\n     },\n     \"city\"  :   null  ,\n     \"town\"  :   null  ,\n     \"state\"  :   \"England\"  ,\n     \"object\"  :   \"Address\"  ,\n     \"country\"  :   \"United Kingdom\"  ,\n     \"latitude\"  :   51.51175827682243  ,\n     \"longitude\"  :   -0.08703180123414728  ,\n     \"what3words\"  : {\n       \"map\"  :   \"https://w3w.co/things.pull.dark\"  ,\n       \"words\"  :   \"things.pull.dark\"  ,\n       \"square\"  : {\n         \"northeast\"  : {   \"lat\"  :   51.511778  ,   \"lng\"  :   -0.087019   },\n         \"southwest\"  : {   \"lat\"  :   51.511751  ,   \"lng\"  :   -0.087062   }\n       },\n       \"country\"  :   \"GB\"  ,\n       \"coordinates\"  : {   \"lat\"  :   51.511764  ,   \"lng\"  :   -0.08704   },\n       \"nearestPlace\"  :   \"City of London, London\"\n     },\n     \"postal_code\"  :   \"EC4N 7HB\"  ,\n     \"address_line\"  :   \"Clements Lane, 125\"  ,\n     \"address_line2\"  :   null  ,\n     \"formatted_address\"  :   \"125 Clements Ln, London EC4N 7HB, UK\"\n   }\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":81,"path":82,"dir":42,"title":83,"description":84,"keywords":85,"body":87},"content:3.groups:3.incident-event:6.note.md","/groups/incident-event/note","Note","The Note resource provides  details related to a note associated with a contact, incident or other entity within the system. It serves as a way to document and communicate information about a contact or incident.",[86],"The Note object","  Note  The Note resource provides  details related to a note associated with a contact, incident or other entity within the system. It serves as a way to document and communicate information about a contact or incident.  The Note object  Attributes                   interface   Note   {\n     object  :   \"Note\"  ;\n     id  :   string  ;\n     status  :   \"public\"   |   \"private\"  ;\n     parent_id  :   string   |   null  ;\n     note  :   string  ;\n     type  :   string  ;\n     replies  :   Array  \u003C  Note  >;\n     noteable_type  :   \"Contact\"   |   \"Incident\"  ;\n     noteable_id  :   string  ;\n     created_at  :   string  ;\n     updated_at  :   string  ;\n   }\n     {\n     \"id\"  :   \"ez09NVb9RwgER1aA\"  ,\n     \"note\"  :   \"Other test note\"  ,\n     \"type\"  :   \"Incident Comments\"  ,\n     \"object\"  :   \"Note\"  ,\n     \"status\"  :   \"public\"  ,\n     \"replies\"  : [\n       {\n         \"id\"  :   \"JloA3x4joQMRn01d\"  ,\n         \"note\"  :   \"Test reply\"  ,\n         \"type\"  :   \"Incident Comments\"  ,\n         \"object\"  :   \"Note\"  ,\n         \"status\"  :   \"private\"  ,\n         \"replies\"  : [],\n         \"parent_id\"  :   \"ez09NVb9RwgER1aA\"  ,\n         \"created_at\"  :   \"2024-05-31T07:45:00.000000Z\"  ,\n         \"updated_at\"  :   \"2024-05-31T07:45:00.000000Z\"  ,\n         \"noteable_id\"  :   \"PRDZ39MXDMOJoz2j\"  ,\n         \"noteable_type\"  :   \"Incident\"\n       }\n     ],\n     \"parent_id\"  :   null  ,\n     \"created_at\"  :   \"2024-05-31T07:08:34.000000Z\"  ,\n     \"updated_at\"  :   \"2024-05-31T07:08:34.000000Z\"  ,\n     \"noteable_id\"  :   \"PRDZ39MXDMOJoz2j\"  ,\n     \"noteable_type\"  :   \"Incident\"\n   }\n  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":89,"path":90,"dir":42,"title":91,"description":92,"keywords":93,"body":96},"content:3.groups:3.incident-event:7.attribute.md","/groups/incident-event/attribute","Attribute","Attributes within the context of the incident represent discrete data points, such as \"vehicle_wheels_movable,\" that store supplementary information on a record. They serve as additional details associated with the incident.",[94,95],"The Attribute object","Attribute Configuration","  Attribute  Attributes within the context of the incident represent discrete data points, such as \"vehicle_wheels_movable,\" that store supplementary information on a record. They serve as additional details associated with the incident.  The Attribute object  Attributes            interface   Attribute   {\n     object  :   \"Attribute\"  ;\n     name  :   string   |   null  ;\n     key  :   string  ;\n     value  :   string   |   string  []   |   null  ;\n   }\n     {\n     \"object\"  :   \"Attribute\"  ,\n     \"name\"  :   \"Wheels Movable\"  ,\n     \"key\"  :   \"vehicle_wheels_movable\"  ,\n     \"value\"  :   \"No\"  ,\n   }\n  Attribute Configuration  Each webhook integration is configured with a bespoke set of attributes tailored to align with the needs of your implementation. The attributes available are dependent on operations undertaken to deliver the service. Combined these configurations curated by your Axitech Representative, ensure that you are exposed to attributes that can seamlessly integrate with your workflow.  For a better understanding of the attributes available for consumption in your integration, please consult the corresponding supplement document. This versioned document is crafted specifically for your integration, provides detailed insights into the configured elements.  Should you have any inquiries or seek further clarification on the customized attributes, please contact your Axitech representative.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":98,"path":99,"dir":42,"title":100,"description":101,"keywords":102,"body":105},"content:3.groups:3.incident-event:8.property.md","/groups/incident-event/property","Property","Properties, distinct from attributes, are utilized for key-value pairs within the incident record. Unlike attributes, properties can trigger consequential actions when altered. Allowing the introduction of a dynamic element to the incident handling process where changes have direct and meaningful consequences on service experience and potentially the customer digital experience.",[103,104],"The property object","Property Configuration","  Property  Properties, distinct from attributes, are utilized for key-value pairs within the incident record. Unlike attributes, properties can trigger consequential actions when altered. Allowing the introduction of a dynamic element to the incident handling process where changes have direct and meaningful consequences on service experience and potentially the customer digital experience.  The property object  Attributes            interface   Property   {\n     object  :   \"Property\"  ;\n     name  :   string   |   null  ;\n     key  :   string  ;\n     value  :   string   |   string  []   |   null  ;\n   }\n     {\n     \"object\"  :   \"Property\"  ,\n     \"name\"  :   \"Roadside Status\"  ,\n     \"key\"  :   \"roadside_status\"  ,\n     \"value\"  :   \"not_at_roadside\"\n   }\n  Property Configuration  Like attributes, each integration is uniquely configured with the relevant set of properties available, tailored to your specific needs of your implementation.. The properties available are dependent on operations undertaken to deliver the service. Combined these configurations curated by your Axitech representative, ensure that you are exposed to properties that can seamlessly integrate with your workflow.  For a better understanding of the properties available for consumption in your integration, please consult the corresponding supplement document. This versioned document is crafted specifically for your integration, provides detailed insights into the configured elements.  Should you have any inquiries or seek further clarification on the customized properties, please contact your Axitech representative.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":107,"path":108,"dir":42,"title":109,"description":110,"keywords":111,"body":114},"content:3.groups:3.incident-event:9.case.md","/groups/incident-event/case","Case","Case within the context of the incident represents your access to the incident record in Axicloud.",[112,113],"The Case object","Case Configuration","  Case  Case within the context of the incident represents your access to the incident record in Axicloud.  The Case object  Cases              interface   Case   {\n     object  :   \"Case\"  ;\n     assignee_name  :   string   |   null  ;\n     assignee_email  :   string   |   null  ;\n     assigned_by_name  :   string   |   null  ;\n     assigned_by_email  :   string   |   null  ;\n     flagged  :   boolean   |   null  ;\n   }\n     {\n     \"object\"  :   \"Case\"  ,\n     \"assignee_name\"  :   \"John Doe\"  ,\n     \"assignee_email\"  :   \"john.doe@example.com\"  ,\n     \"assigned_by_name\"  :   \"Jane Smith\"  ,\n     \"assigned_by_email\"  :   \"jane.smith@example.com\"  ,\n     \"flagged\"  :   true\n   }\n  Case Configuration  Each webhook integration is configured with a bespoke set of attributes tailored to align with the needs of your implementation. The attributes available are dependent on operations undertaken to deliver the service. Combined these configurations curated by your Axitech Representative, ensure that you are exposed to attributes that can seamlessly integrate with your workflow.  For a better understanding of the attributes available for consumption in your integration, please consult the corresponding supplement document. This versioned document is crafted specifically for your integration, provides detailed insights into the configured elements.  Should you have any inquiries or seek further clarification on the customized attributes, please contact your Axitech representative.  html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"id":116,"path":117,"dir":7,"title":118,"description":7,"keywords":119,"body":123},"content:4.CHANGELOG.md","/changelog","Changelog",[120,121,121,120,121,120,121,121,120,121,120,120,121,120,121,121,120,121,122],"Bug Fixes","Features","icon: mdi:clock-outline\nmain:\npadded: true\nfluid: true","  Changelog  1.0.0 (2025-01-15)  Bug Fixes   Add correct event types to database seed (  decd1b3 )  Adjust contacts regex to accept primary and third party vehicle contacts (  b428732 )  Changed routes folder structure to register correct routes (  07b3385 )  Fix build error of unused variable (  410e09b )  Fix message batch id error (  2860924 )  Fix process start command (  779fa8e )  Fix service crashing due to inability to load sentry (  51b8187 )  Fix sqs message id being incorrect (  da0963f )  Move sentry initialisation to app (  d4487b0 )  Resolved empty response object validation issue (  0ce301c )  Features   Add github workflows for staging and prod deployments (  4977322 )  Add local sqs emaulator (  2825b1f )  add new properties to vehicles (  f926783 )  Add postresql database to dev mode (  9485eec )  Add redis db for message queue (  1d40d7a )  Add request signing capabilities (  6ff0ef6 )  Add retry logic to sqs messages (  e55c627 )  Add sentry logging (  0e2fab3 )  Add sentry tracing (  1f88c74 )  Add service deployment to github workflows (  e1d5115 )  Add v2 events endpoint (  763a0ea )  Added batching functionality (  8fa271e )  Added retry functionality and create custom errors (  09c8ace )  Added seed and correct docker setup (  b220de8 )  Adding settings field for subscribers with allowed attribute and property keys (  5ee1def )  Allow MQ workers to run multiple jobs in parralel (  1767cac )  Create new insurance and note CRUD events (  82d3218 )  Create subscribe and events endpoints and implement event sending functionality (  1b38953 )  Document the new insurance and note events (  75a737c )  Implement message queueing, batching and retry using BullMQ and Redis (  b8020b9 )  Implement sqs queue for hook delivery (  944848a )  Make sqs message compatible with non fifo queue (  6e8c095 )  Move sentry initialisation before all module as suggested by newest sentry documentation (  c3c9892 )  Remove try/catch to allow unified pass through to sentry logs (  b22dba9 )  Sending events for each subscription with given entity id (  ef40553 )  Setup database and create the routes (  33e8ff1 )  Translate any payload coming form Axicloud to some more general and reusable structure (  910dd99 )  Update events request body to include an optional subscribers array (  e92f80a )   1.0.0-staging.11  (2024-12-17)  Features   add new properties to vehicles (  f926783 )   1.0.0-staging.10  (2024-06-28)  Bug Fixes   Fix service crashing due to inability to load sentry (  51b8187 )  Move sentry initialisation to app (  d4487b0 )  Features   Move sentry initialisation before all module as suggested by newest sentry documentation (  c3c9892 )   1.0.0-staging.9  (2024-06-28)  Bug Fixes   Fix process start command (  779fa8e )  Features   Add v2 events endpoint (  763a0ea )   1.0.0-staging.8  (2024-05-31)  Features   Create new insurance and note CRUD events (  82d3218 )  Document the new insurance and note events (  75a737c )   1.0.0-staging.7  (2024-04-15)  Bug Fixes   Resolved empty response object validation issue (  0ce301c )  Features   Add sentry logging (  0e2fab3 )  Remove try/catch to allow unified pass through to sentry logs (  b22dba9 )   1.0.0-staging.6  (2024-03-14)  Bug Fixes   Adjust contacts regex to accept primary and third party vehicle contacts (  b428732 )  Fix build error of unused variable (  410e09b )  Fix message batch id error (  2860924 )   1.0.0-staging.5  (2024-03-14)  Bug Fixes   Fix sqs message id being incorrect (  da0963f )   1.0.0-staging.4  (2024-03-13)  Features   Add sentry tracing (  1f88c74 )  Sending events for each subscription with given entity id (  ef40553 )   1.0.0-staging.3  (2024-02-21)  Bug Fixes   Add correct event types to database seed (  decd1b3 )  Features   Adding settings field for subscribers with allowed attribute and property keys (  5ee1def )   1.0.0-staging.2  (2024-02-15)  Features   Update events request body to include an optional subscribers array (  e92f80a )  1.0.0-staging.1 (2024-01-29)  Bug Fixes   Changed routes folder structure to register correct routes (  07b3385 )  Features   Add github workflows for staging and prod deployments (  4977322 )  Add local sqs emaulator (  2825b1f )  Add postresql database to dev mode (  9485eec )  Add redis db for message queue (  1d40d7a )  Add request signing capabilities (  6ff0ef6 )  Add retry logic to sqs messages (  e55c627 )  Add service deployment to github workflows (  e1d5115 )  Added batching functionality (  8fa271e )  Added retry functionality and create custom errors (  09c8ace )  Added seed and correct docker setup (  b220de8 )  Allow MQ workers to run multiple jobs in parralel (  1767cac )  Create subscribe and events endpoints and implement event sending functionality (  1b38953 )  Implement message queueing, batching and retry using BullMQ and Redis (  b8020b9 )  Implement sqs queue for hook delivery (  944848a )  Make sqs message compatible with non fifo queue (  6e8c095 )  Setup database and create the routes (  33e8ff1 )  Translate any payload coming form Axicloud to some more general and reusable structure (  910dd99 )   icon: mdi:clock-outline\nmain:\npadded: true\nfluid: true   Changelog  License  © 2023 Axitech. All rights reserved.",1770979766560]