> ## Documentation Index
> Fetch the complete documentation index at: https://docs.superoffice.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API changes

<Update label="9.2 R11" description="04.28.2021" tags={["CRMScript"]}>
  ## SHA512 support in CRMScript

  Added global function `Byte[] encodeHMACSHA512(String key, String value)`.

  This function generates and returns a hash from a specified key-value pair using the HMAC SHA512 encoding algorithm. This can be used to ensure data integrity.

  For more information, see the [CRMScript reference][1].
</Update>

<Update label="9.2 R09" tags={["NetServer"]}>
  ## NetServer Logger requirements

  NetServer has switched from using a baked-into-the-code logger to using an extensible plugin system of **ILogger** based loggers.

  The old logger now lives in *SuperOffice.Logging.dll*, but you can remove it, replace it, or add more loggers alongside it.

  All the logger plugins are used - there is no preferential treatment among the `ILoggers`.

  * For web applications, ASP.NET will load all the DLLs in the bin folder automatically.
  * For console applications, you will need to add the plugins to the `<DynamicLoad>` section or add explicit references to make sure the DLLs are loaded and found by the class factory.

  For more information, see the [NetServer documentation][2].
</Update>

<Update label="9.2 R08" tags={["Chatbot", "bLogic"]}>
  ## Chatbot - CRMScript Chatbots

  Chatbots are CRMScripts that can interact with chat sessions. Chatbot functionality in SuperOffice requires the AI license. This enables the Chatbot tab in chat administration.

  Chatbots are folders that contain one or more CRMScripts with names that fit a pattern:

  ...bot register... signals the presence of a chatbot in the folder.

  ...bot session create... is called when a new chat session starts.

  ...bot session change... is called when the chat session changes state.

  ...bot message receive... is called when a new message is received.

  The names of the scripts must follow this pattern, but they allow any prefix or suffix you want. echobot register, my bot registered, and BotRegister are all acceptable names for the registration script.

  The CRMScripts are not called after the chatbot hands the session off to the queue for human processing. The bot message receive script is only called for incoming messages.

  This removes the need for a bunch of book-keeping logic, simplifying the bot scripts.

  [Read more about chatbots][3].

  ## New options for bLogic chart element

  New Map keys for `addSeries`:

  * seriesType
  * yaxis2

  New actions:

  * setX2Label
  * setY2Label
  * setY2Min
  * setX2Max
  * setAllowY2AxisDecimals
  * setY2AxisInterval

  See [bLogic reference][4] for details.
</Update>

<Update label="9.2 R06" tags={["Bulk Operations"]}>
  ## Mass Operations

  SuperOffice APIs support the import and update of large datasets via the Mass Operations API. This API leverages database server features that are optimized for speed and efficiency.

  [See API reference][5]
</Update>

<Update label="9.2 R03" tags={["WebHooks"]}>
  ## WebHooks - Include contact\_id and person\_id in activity.deleted

  With the introduction of soft-deletes, the contact and person deleted webhooks were "broken". These events will fire when the entity has been permanently removed from SuperOffice.

  * `contact.deleted`
  * `person.deleted`

  Because API consumers may still want to be notified and manage soft-deletes, the following 2 new webhooks have been introduced:

  * `contact.softdeleted`
  * `person.softdeleted`

  Added `Values` property to webhook for deleted events, to hold ID values from the original record (if available). Deleted activities will now retain contact and person ID values. This will allow you to see which company or person the deleted activity was connected to.

  For more info, see [announcement in the forums][6] and [webhook reference][7].

  ## WebHooks - Project member triggers/webhooks

  Once you delete a project member, the **Number of project members** field is automatically updated and does not require scripting.

  Deleted activities will now retain contact, person, project, and sale ID values. This will allow you to see which company, person, project, or sale the deleted activity was connected to.

  ## Prefix changes on date/time

  Since serialization of arbitrary objects is somewhat problematic - that's why we have JSON, BSON, XML, ASN.1, and what-have-you - we decided to make our own, self-identifying format for archive values. In our code, it lives in the beautifully named class `CultureDataFormatter`, and we use it all over the place, particularly in the archive providers. Both values going out through DisplayValue and values coming in view `ArchiveRestrictionInfo.Values[]` use this format.

  Also check out the [blog post][8].
</Update>

<Update label="9.2 R01" description="10.15.2020" tags={["CRMScript"]}>
  ## API - CRMScript

  New HTTP class functions to easily send documents and attachments in a POST request.

  * [HTTP.addAttachmentData][9]
  * [HTTP.addDocumentData][10]
  * [HTTP.addBinaryData][11]
</Update>

[1]: /en/automation/crmscript/reference/CRMScript.Global.Void#encodehmacsha512-string-string

[2]: /en/onsite/logging/index

[3]: /en/automation/chatbot/index

[4]: /en/ui/blogic/reference/chart

[5]: /en/api/bulk-operations/mass-operations/index

[6]: https://community.superoffice.com/en/technical/forums/general-forums/announcements/upcoming-webhook-event-changes/

[7]: /en/automation/webhook/reference/index

[8]: https://community.superoffice.com/en/technical/blogs/archive/changes-in-9.1r3-date-time-and-datetime-in-archive-providers/

[9]: /en/automation/crmscript/reference/CRMScript.Native.HTTP#addattachmentdata-integer

[10]: /en/automation/crmscript/reference/CRMScript.Native.HTTP#adddocumentdata-integer

[11]: /en/automation/crmscript/reference/CRMScript.Native.HTTP#addbinarydata-byte
