**2022-12: version 47.1**

* ``clone``, ``extract``, and ``package`` commands fixed to avoid clearing out overrides for disabled Tasks in SOAR
* Poller Jinja templates for ``codegen --poller`` updated to reference "cases" rather than "incidents"

**2022-11: version 47.0**

* Added support to ``extract`` command for sub-playbooks. They are treated like normal Playbooks so no
  further command line args are required. Just ensure you include all other customizations in your
  command. For example:

  .. code-block::

    $ resilient-sdk extract --playbook my_sub_playbook --function fn_in_sub_playbook

* ``codegen`` template updates with Python 3 syntax
* Added new ``--poller`` flag to ``codegen``. This allows for creating poller-based apps 
  which generates a ``lib`` directory in the package and a ``poller`` directory each with 
  items needed to create a poller-based app.
* ``docgen`` template updated with references to Edge Gateway (formerly App Host)
* Added support for activation fields in manually activated playbooks in the ``clone`` command


**2022-08: version 46.0**

* Check to see if the current installed version of the ``resilient-sdk`` is the latest
  available version on PyPi
* Slight enhancements to the ``codegen`` template
* ``validate`` updates:

  * Ensure the base image of in an App's Dockerfile is valid
  * Further checks of ``setup.py`` file
  * Validate that all App's dependencies are using the ``~=`` syntax

**2022-07: version 45.1**

* No major changes. Just bumping build number to coincide with other builds

**2022-05: version 45.0**

* Added new option ``--draft-playbook`` to the ``clone`` command that if specified with the ``--playbook`` option
  will clone the Playbook into a **Draft** state, allowing you to change it's Activation Type
* ``codegen`` and ``extract`` now exclude the ``creator`` from the generated ``export.res`` file
* Minor updates to templates produced with ``codegen``

**2022-04: version 44.1**

* No major changes. Just bumping build number to coincide with other builds

**2022-02: version 44.0**

* Added support to ``codegen``, ``docgen``, ``package``, ``extract`` and ``clone`` for Playbooks
* Bump ``Jinja2`` to ``~=3.0`` for Python ``>=3.6``
* Officially support ``Python 3.9``

**2022-01: version 43.1**

* Added new ``validate`` functionality to the SDK
* Added `genson 1.2 dependency <https://pypi.org/project/genson/>`_ to generate JSON schemas
* ``codegen`` now produces ``output_json_example.json`` and ``output_json_schema.json`` files for each function in the ``payload_samples`` directory to aid with building **Playbooks**
* ``codegen`` has a new argument ``--gather-results`` which will scan an ``app.log`` file to get the results for the ``output_json_example.json`` file
* When ``docgen`` is now ran, it will look for an ``output_json_example.json`` file for each function and use that for the ``README.md`` Function Output Examples
* Added ``global-exclude *.bak`` to the MANIFEST.in file in the ``codegen`` template so ``.bak`` files are not included when packaged

**2021-11: version 43.0**

* Added examples to ``codegen`` template
* Formatted Sphinx documentation and hosted it at https://ibm.biz/soar-python-docs
* A packaged App will now include additional files with additions to the MANIFEST.in file

**2021-11: version 42.3**

* Enforce unix style line endings (``\n``) when writing files
* ``codegen`` to include ``apikey_permissions.txt`` in MANIFEST.in file

**2021-10: version 42.2**

* Bug fix for ``clone`` to support Python 2.7
* Ability to use different app.config file per command using ``-c`` flag

**2021-08: version 42.1**

* No major changes. Just bumping build number to coincide with other builds

**2021-08: version 42.0**

* ``codegen`` now generates a template for App's to be developed to run in a Python >= 3.6 environment.
* Bug fixes.
* Support for collecting incident types in ``codegen`` and extract. See the command line parameters ``-i`` and ``--incidenttype``.

**2021-06: version 41.1**

* To address a security vulnerability, the Dockerfile ``codegen`` template now assigns user 1001 to the non-root group 1001. User 1001 is used to run a container.
* Added a new Atomic Function template generated with ``codegen``, which is a condensed version of our Original Function template. It includes comments on best practices.

**2021-05: version 41.0**

* List all setup.py ``"install_requires"`` dependencies in ``docgen`` README template
* Bug fixes

**2021-03: version 40.2**

* Bug fix for to use ``setuptools_scm < 6.0.0`` for Python 2.7 environments

**2021-03: version 40.1**

* Adjust ``entrypoint.sh`` template to ensure ``resilient-circuits`` is restarted when a fatal error occurs when running on App Host
* Added timestamp to logs on App Host

**2021-02: version 40.0**

* The function template that is produced when you run ``codegen`` now includes references to the resilient-lib library.
* When the var RES_SDK_DEV is set, ``codegen`` now creates the payload_samples directory with JSON examples for the Resilient UI and mock results for a "mock server".
* Added ``--no-samples`` flag to ``package`` and when set do not look for the payload_samples directory or try add them to the export.res file.
* Added ``--image-hash`` flag to ``package`` to specify the SHA256 of an image that the app.zip refers to.

**2020-10: version 39.0**

* The ``docgen`` command creates a single README and updated the README to include information on App Hosts.
* Added the Resilient platform version to the customize.py template.
* The ``package`` command replaces tags on Resilient objects in export.res instead of extending them.
* Added environmental variable RES_SDK_DEV.
* Added ``--set-version`` argument to the dev command.
* Added ``display_name`` attribute to the setup.py file.
* The ``codegen``, ``codegen --reload`` and ``dev --set-version`` commands create a /util/data/export.res file that contains the import definition which was previously base64 encoded text in customize.py.
* Before running the ``codegen --reload`` on packages created with Resilient SDK < 39.0.0, ensure the MANIFEST.in file includes the line: recursive-include <package_name>/util *
* The ``codegen`` and ``package`` commands return errors if the package name contains uppercase characters.
* Added a ``clone`` command to clone an Action Object.

**2020-07: version 37.2**

* Updates to Dockerfile template
* Support for newest export formats
* Bug fixes.

**2020-05: version 37.0**

* Package created. Using 37 as original version
* Added support for API key permissions in app.json using permissions file.
* Added support for new apphost config section.
* Customization and config properties files now extracted from setup.py.
* Rename ``app:package`` command to ``package``.
* Bug fixes.

**2020-04: version 36.2.dev**

* Package dev version created. Using 36.2 as original version
* Added support for API key permissions in app.json using permissions file.
* Added support for new apphost config section.
* Customization and config properties files now extracted from setup.py.
* Rename ``app:package`` command to ``package``.
* Bug fixes.
