easys-ordermanager 4.1.1
API definition of RH order manager for EasyS
License: MIT
Requires Python: >=3.11

[![PyPI version](https://badge.fury.io/py/easys-ordermanager.svg)](https://badge.fury.io/py/easys-ordermanager)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/Lektor.svg)](https://pypi.org/project/easys-ordermanager/)

# EasyS order manager API

## Compatibility

### Django 5.2

Python 3.11 to 3.14
DRF 3.16

# Making a new release

[bump-my-version](https://github.com/callowayproject/bump-my-version) is used to manage releases.

After reaching a releasable state, run `pipx run bump-my-version bump <patch|minor|major> --message="feat: release x, refs y`

This will update the release version in `.bumpversion.toml` and the CI/CD pipelines do the rest.


# Changelog

## 4.1.1
* Updates to Serializer v3, see [serializer changelog](CHANGELOG_SERIALIZER.md)

## 4.1.0
* Updates to Serializer v3, see [serializer changelog](CHANGELOG_SERIALIZER.md)

## 4.0.0
* Test against Python 3.14
* Add support for django-countries 8.x release series
* Limit compatibility with django to 3.16 or higher
* Limit compatibility with djangorestframework to 5.2 or higher
* Limit compatibility with django-countries to 7.6.1 or higher
* Limit compatibility with django-internationalflavor to 0.4.3 or higher
* Limit compatibility with django-model-utils to 5.0.0 or higher
* Limit compatibility with django-phonenumber-field to 8.0.0 or higher
* Limit compatibility with idna to 3.11 or higher
* Limit compatibility with phonenumbers to 9.0.0 or higher
* Renovate test environment

## 3.4.4
* Updates to Serializer v3, see [serializer changelog](CHANGELOG_SERIALIZER.md)

## 3.4.3
* Updates to Serializer v3, see [serializer changelog](CHANGELOG_SERIALIZER.md)

## 3.4.2
* Re-release of 3.4.1 as deploy pipeline was broken

## 3.4.1
* Updates to Serializer v3, see serializer changelog

## 3.4.0 (2025-04-01)
* Add support for Django 5.2 release series

## 3.3.0 (2025-04-01)
* Add support for djangorestframework 3.16.x release series
* Test against djangorestframework 3.16.x
* Test against Python 3.13 on Django 5.1 matrix
* Format and lint using ruff instead of flake8
* Remove coveralls integration
* Add idna direct dependency (this was brought in by luck through coveralls so far)
* Use bump-my-version for release management

## 3.2.3 (2025-03-05)
* Add support for phonenumbers 9.x release series

## 3.2.2 (2025-02-07)
* Updates to Serializer v3, see [serializer changelog](CHANGELOG_SERIALIZER.md)

## 3.2.1 (2025-01-17)
* Updates to Serializer v3, see [serializer changelog](CHANGELOG_SERIALIZER.md)

## 3.2.0 (2024-11-14)
* Updates to Serializer v3, see [serializer changelog](CHANGELOG_SERIALIZER.md)

## 3.1.0 (2024-10-18)
* Updates to Serializer v3, see serializer changelog

## 3.0.0 (2024-10-07)
* Remove support for Python below 3.11
* Remove support for Django below 4.2
* Remove support for DRF below 3.14
* Add support for django-model-utils 5.x release series

## 2.11.0 (2024-08-19)
* Add tests and support for Django 5.1
* Renovate test environment
* Remove unnecessary system dependencies from Docker image

## 2.10.0 (2024-07-09)
* Updates to Serializer v3, see serializer changelog

## 2.9.1 (2024-07-02)
* Add support for django-phonenumber-field 8-series
* Renovate test environment

## 2.9.0 (2024-06-18)
* Updates to Serializer v3, see serializer changelog

## 2.8.0 (2024-04-12)
* Updates to Serializer v3, see serializer changelog

## 2.7.0 (2024-03-27)
* Add tests and support for DRF 3.15
* Clarify compatibility matrix in README

## 2.6.0 (2024-03-08)
* Add tests and support for Django 5.0 and Python 3.12

## 2.5.1 (2024-02-22)
* Updates to Serializer v3, see serializer changelog

## 2.5.0 (2023-11-07)
* Updates to Serializer v1, v2 and v3, see serializer changelog

## 2.4.0 (2023-10-19)
* Updates to Serializer v3, see serializer changelog

## 2.3.0 (2023-09-26)
* Reintroduce support for Django >= 3.2
* Reintroduce support for djangorestframework >= 3.11
* Updates to Serializer v3, see serializer changelog
* Changes to the test docker environment
* Update dependencies of test environment

## 2.2.5 (2023-06-26)
* Updates to Serializer v3, see serializer changelog

## 2.2.4 (2023-06-26)
* Updates to Serializer v3, see serializer changelog

## 2.2.3 (2023-06-26)
* Updates to Serializer v3, see serializer changelog

## 2.2.2 (2023-06-01)
* Updates to Serializer v3, see serializer changelog

## 2.2.1 (2023-05-30)
* Updated wording on translation of Domain choices field.

## 2.2.0 (2023-05-23)
* Remove support for Django < 4.1
* Remove support for djangorestframework < 3.14
* Updated minimum required versions of related libraries

## 2.1.3 (2023-05-03)
* Updates to Serializer v2 & v3, see serializer changelog

## 2.1.2 (2023-04-12)
* Updates to Serializer v3, see serializer changelog
* Fixed missing development dependency

## 2.1.1 (2023-03-21)
* Updates to Serializer v3, see serializer changelog
* New test to validate payloads including EXISTING_STROER_LANDINGPAGE, and only a SEO product orderline.

## 2.1.0 (2023-03-16)
* Introduction of serializer v3, see serializer changelog
* `easys-ordermanager/easys_ordermanager/v3/serializer.Serializer` is considered WIP until integration in EasyS starts

## 2.0.12 (2023-03-02)
* Updates to Serializer v2, see serializer changelog

## 2.0.11 (2023-02-17)
* Updates to Serializer v1 & v2, see serializer changelog

## 2.0.10 (2023-01-09)
* Updates to Serializer v1 & v2, see serializer changelog

## 2.0.9 (2023-01-03)
* Updates to Serializer v2, see serializer changelog

## 2.0.8 (2023-01-02)
* Updates to Serializer v2, see serializer changelog

## 2.0.7 (2022-12-01)
* Updates to Serializer v2, see serializer changelog

## 2.0.6 (2022-11-29)
* Updates to Serializer v1 & v2, see serializer changelog

## 2.0.5 (2022-11-22)
* Add serializer changelog to manifest and include it in the released package

## 2.0.4 (2022-11-22)
* Add serializer changelog to PyPI readme

## 2.0.3 (2022-11-21)
Updates to Serializer v1 & v2, see serializer changelog

## 2.0.2 (2022-11-15)
* Add support for phonenumbers 8.13.x',

## 2.0.1 (2022-09-27)
* Add support for DRF 3.14
* Add more test combinations
* Remove references to GitHub as the code mirror will be removed

## 2.0.0 (2022-09-16)
* Remove support for Python 3.7 and below
* Remove support for Django 2.x and below
* Drop support for DRF 3.10 and below
* Add support for Python 3.10
* Add support for Django 4.0 and 4.1
* Add tests for DRF 3.11, 3.12 and 3.13
* Change CI build to parallel matrix
* Get rid of tox for CI
* Run the publish stage only for tags on the main branch

## 1.4.53 (2022-07-13)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.52 (2022-07-08)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.51 (2022-06-14)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.50 (2022-06-14)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.49 (2022-04-29)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.48 (2022-03-30)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.47 (2022-03-24)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.46 (2022-01-25)
* Add support for [djangorestframework 3.13 release series](https://www.django-rest-framework.org/community/release-notes/#313x-series)

## 1.4.45 (2022-01-14)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.44 (2022-01-03)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.43 (2021-11-29)
Updates to Serializer v2, see serializer changelog

## 1.4.42 (2021-11-26)
Updates to Serializer v1, see serializer changelog

## 1.4.41 (2021-11-12)
* Add support for [django-phonenumber-field release series 6](https://github.com/stefanfoulis/django-phonenumber-field/blob/main/CHANGELOG.rst#600-2021-10-20)

## 1.4.40 (2021-10-08)
Fixes flake8 errors.

## 1.4.39 (2021-10-08)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.38 (2021-08-11)
* Fix example for email Orderline.

## 1.4.37 (2021-08-11)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.36 (2021-06-25)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.35 (2021-06-01)
* Update maximum supported version of django-phonenumber-field>=3.0.1,<6.0

## 1.4.34 (2021-05-28)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.33 (2021-05-25)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.32 (2021-05-07)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.31 (2021-04-15)
* Update maximum supported version of django-phonenumber-field>=3.0.1,<5.2
* Update test matrix, add Django 3.2

## 1.4.30 (2021-03-18)
Replace ugettext* usages with gettext* usages as Python 3 is unicode compatible anyway

## 1.4.29 (2021-02-19)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.28 (2021-02-01)
* Remove dependency to django-iban and use validation from internationalflavor
* Allow django-countries release series 7.x
* Update dev requirements

## 1.4.27 (2021-1-27)
Updated translations of PRODUCT_PAYMENT_CYCLE_CHOICES

## 1.4.26 (2021-1-27)
updates changelog

## 1.4.25 (2021-1-27)
Adds product payment cycle support to Serializer v1 & v2, see serializer changelog

## 1.4.24 (2020-11-25)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.23 (2020-11-19)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.22 (2020-11-16)
* Modernize Docker env, Update max supported versions and min requirements of some packages
* Split package and test dependencies
* Move package dependencies to setup.py
* Restructure travis env

## 1.4.21 (2020-11-13)
Update maximum supported version of django-phonenumber-field>=3.0.1,<5.1

## 1.4.20 (2020-11-06)
Update maximum supported version of phonenumbers>=7.0.6,<8.13

## 1.4.19 (2020-10-23)
Update maximum supported version of djangorestframework>=3.7.7,<3.13

## 1.4.18 (2020-10-16)
Update maximum required version of django-countries>=4.4,<6.1.4 and django-internationalflavor>=0.3.1,<0.5

## 1.4.17 (2020-10-16)
Update package to version phonenumbers>=7.0.6,<8.12.12

## 1.4.15 (2020-10-16)
Update package to version django-model-utils>=3.1.2,<5.0 - for backwards compatibility

## 1.4.14 (2020-10-16)
Update package to version django-model-utils>=4.0.0,<5.0

## 1.4.13 (2020-10-06)
Fix serializer v2 choice fields

## 1.4.12 (2020-10-05)
Updates to Serializer v2, see serializer changelog

## 1.4.11 (2020-09-23)
Update german translations

## 1.4.10 (2020-09-23)
Updates to Serializer v1 & v2, see serializer changelog

## 1.4.9 (2020-09-01)
Updates to Serializer v2, see serializer changelog

## 1.4.8 (2020-08-06)
Changed a translation

## 1.4.7 (2020-06-30)
Fix test cases

## 1.4.6 (2020-06-30)
Updates to Serializer v1/v2, see serializer changelog

## 1.4.5 (2020-06-23)
Updates to Serializer v1/v2, see serializer changelog

## 1.4.4 (2020-06-04)
Fixed code style to pass checks

## 1.4.3 (2020-06-03)
Updates to Serializer v2, see serializer changelog

## 1.4.2 (2020-05-07)
Updates to Serializer v2, see serializer changelog

## 1.4.1 (2020-04-15)
Introduction of serializer v2
* `easys-ordermanager/easys_ordermanager/v1/serializer.Serializer` is now frozen on the state of release 1.2.3
* `easys-ordermanager/easys_ordermanager/v2/serializer.Serializer` is considered WIP until integration in EasyS starts and new changes will go into v3, see serializer changelog for changes between v1 and v2

## 1.3.2 (2020-04-02)
Reverted

## 1.2.3 (2020-03-03)
Make sure Django 3 is not installed until further support

## 1.2.2 (2020-03-03)
Add proper dependencies to avoid unwanted failure with possible upgrades when installed freshly.
See setup.py for dependencies

## 1.2.1 (2020-02-27)
Add unique validation on `opening_hours` list of values of `OrderLineListingSerializer`.
The  opening hours lis should be unique for every `day_of_week` (see `OrderLineListingOpeningHoursSerializer`)


## 1.2.0 (2019-09-17)
This release contains backwards incompatible changes.

Changes on `OrderLineDisplayBasicSerializer`
  * Removed: `geo_targeting` field.
  * New: `geo_targeting_zip` field which accepts one string zip code. Not mandatory
  * New: `geo_targeting_radius` field accepting integer values between 1-80 (km). Mandatory only if `geo_targeting_zip` is given.
  * Removed: `stock_images_allowed` field:
  * New: `banner_image_selection` choice field accepting following values:
    * 0 for 'From website' / 'Von der Webseite' option
    * 1 for 'From customer' / 'Vom kunden' option
    * 2 for 'Customer photos' / 'Regiohelden Bilder' option
  * Change: `target_page_type` existing field which is not required anymore.

Changes on `OrderLineGoogleAdsPremiumSerializer`:
  * New: `call_tracking` boolean required field.


## 1.1.3 (2019-09-11)
Clean README file.


## 1.1.2 (2019-09-11)
Fix expected_impression_share field of OrderLineGoogleAdsBasicSerializer to accept 5 digits in order to validate value 100.00


## 1.1.1 (2019-09-06)
Small fix on pep8 error

## 1.1.0 (2019-09-04)

This release contains backwards incompatible changes


* Split Display detail OrderLineDisplaySerializer in two different serializers and fields for basic and premium product levels:
  * remove `detail_display` field from `OrderLine`
  * add `detail_display_basic` field (`OrderLineDisplayBasicSerializer`) on `OrderLine`

     The serializer contains following fields:

     New fields:
       * `banner_color_selection`
         choice field with values: 1 for _Color from Logo/Website_ and 2 for _Set color_ . To be used in combination with fields `color_code_x`

     Fields with changed definition
       * `impressions_per_month`
         choice field with accepted values: 20.000 , 40.000 and 80.000
       * `creative_options`
         choice field contains only values: 1 for _Customer provided_ and 3 for _Create animated_

     Fields with the same definition as in the previous OrderLineDisplaySerializer
       * `geo_targeting`
       * `geo_targeting`
       * `campaign_goal`
       * `headline`
       * `sub_headline`
       * `bullet_points`
       * `call_to_action`
       * `color_code_1`
       * `color_code_2`
       * `color_code_3`
       * `stock_images_allowed`
       * `target_page_type`
       * `target_url`
       * `package_template`
       * `location_frame_text`
       * `creative_options`

  * add `detail_display_premium` field (`OrderLineDisplayPremiumSerializer`) on `OrderLine`

     Serializer contains following fields with the same definition as in the previous OrderLineDisplaySerializer
       * `booking_type`
       * `target_devices`
       * `creatives_format`
       * `impressions_per_day`
       * `impressions_per_month`
       * `age_targeting`
       * `gender_targeting`
       * `geo_targeting`
       * `channel_targeting`
       * `interest_targeting`
       * `campaign_goal`
       * `target_page_type`
       * `target_url`
       * `creative_options`


* Split Google Ads detail OrderLineGoogleAdsSerializer in two different serializers for basic and premium product levels:
  * remove `detail_google_ads` field from `OrderLine`
  * add `detail_google_ads_basic` field (`OrderLineGoogleAdsBasicSerializer`) on `OrderLine`

       Serializer contains following fields with the same definition as in the previous OrderLineGoogleAdsSerializer
    * `campaign_goal`
    * `regions`
    * `expected_impression_share`
    * `keywords`
    * `keywords_with_zero_search_volume`
    * `target_audience`

  * add `detail_google_ads_premium` field (`OrderLineGoogleAdsPremiumSerializer`) on `OrderLine`

       Serializer contains following fields with the same definition as in the previous OrderLineGoogleAdsSerializer
     * `call_to_action`
     * `campaign_goal`
     * `regions`
     * `expected_clicks`
     * `expected_conversions`
     * `existing_account_id`
     * `include_remarketing`
     * `keywords`
     * `keywords_with_zero_search_volume`
     * `target_audience`
     * `usp`


* All product fee fields on `OrderLineSerializer` became optional:
  * `setup_fee`
  * `start_fee`
  * `budget`
  * `fee`
  * `one_time_budget`
  * `commission`
  * `deferred_payment_sum`

* Add validation for commission provided for product type Google Ads level Basic: fixed value of 40
* Add validation for combination of product type and level: check if a matching HC products subtype exists
* Add validation for the payment fees provided: check if a matching HC payment type exists.


## 1.0.4 (2019-08-21)

* Add new fee type postponed_setup_fee
* Add reference customer boolean to Location serializer

## 1.0.3 (2019-07-03)

* Don't use allow_null with BooleanField (`djangorestframework<3.9` doesn't support it)


## 1.0.2 (2019-07-01)

* Allow to use empty/null values for non-required fields


## 1.0.1 (2019-06-27)

* Add missing files to the package


## 1.0.0 (2019-06-24)

* Initial release


# Serializer changes

## 4.1.1

### v3

#### `OrderLineEmailSerializer`

* Prevent email address from being reused across including / additional addresses.

## 4.1.0

### v3

#### `OrderLineWebsiteSerializer`

* Add `has_stroeer_catalog` field, optional. Defaults to `False`.

## 3.4.4

### v3

* Increment the characters limit of `OrderLineDisplayNativeSerializer.target_url` from 400 to 2000.

## 3.4.2

### v3

* Let `creatives_template` to be mandatory again, but nullable. **Note:** It cannot be null when the `creatives_creator` is not the Customer (`1`).


## 3.4.1

### v3

* Let `creatives_template` from `OrderLineInAppSerializer` to be optional. **Note:** It will remain mandatory when the
`creatives_creator` is not the Customer (`1`).

## 3.2.2

### v3

* Issue a `DeprecationWarning` if a deprecated constant from `easys_ordermanager.v3.serializer` is used.

#### `OrderLineDisplayPremiumSerializer`

* Deprecate `DISPLAY_TARGETING_` constants for `interest_targeting` field, will be removed in v4.
* `interest_targeting` field now accepts arbitrary integer values. Invalid values will be ignored.

## 3.2.1

### v3

#### `OrderLineDisplayPremiumSerializer`

* Deprecate `DISPLAY_AGE_14_29` choice for `age_targeting` field, will be removed in v4.
* Add `DISPLAY_AGE_18_29` choice as a replacement.

## 3.2.0

### v3

#### `OrderLineDisplayNativeSerializer`

* Add `campaign_goal` field, optional.
* Add `target_page_type` field, optional in v3, will be required in v4.

#### `OrderLineDisplayPremiumSerializer`

* Add `customer_wishes` field, optional.

#### `DisplayNativeCreativeSerializer`

* Deprecate `info_for_webdesign` field, will be removed in v4.
* Add `customer_wishes` field, optional, as a replacement.

## 3.1.0

### v3

#### `OrderLineListingSerializer`

* Add `company_name` field, optional. Will default to customer name if not provided.

## 2.10.0

### v3

#### `DisplayNativeCreativeSerializer`

* Removed `NATIVE_AD_FLOW_AD_IN` (`4`) from `ad_type` choices.
* Removed `NATIVE_AD_FLOW_AD_OUT` (`5`) from `ad_type` choices.
* Removed `NATIVE_AD_FLOW_AD_PROSPECT` (`6`) from `ad_type` choices.

## 2.9.0

### v3

#### `OrderLineSeoSerializer`

* Add new field: `location_names`
* Make `regions` field not required anymore
* Increase the maximum length of each item, for `topics` field.

#### `OrderLineGoogleAdsPremiumSerializer`

* Add `EXISTING_STROER_LANDINGPAGE` (`4`) to `target_page_type` choices

## 2.8.0

### v3

#### `DisplayNativeCreativeSerializer`

* Add `NATIVE_VIDEO_AD` (`7`) to `ad_type` choices.

## 2.5.1

### v3

#### `OrderLineInAppSerializer`

* Add `gender_targeting` field, optional.
* Add `age_targeting_from` field, optional.
* Add `age_targeting_to` field, optional.

## 2.5.0

### v1, v2, v3

#### `OrderLineListingSerializer`

* Increased max length of `opening_hours_description` field to 255

### v3

#### `ContactSerializer`
* Removed deprecated `is_primary_contact` field.

#### `AccountSerializer`
* Removed deprecated `campaign_goal` field.
* Removed deprecated `usp` field.
* Removed deprecated `description` field.

## 2.4.0

### v3

#### 
* Added optional `basic_template` to `OrderLineWebsiteSerializer`
  to chose template for basic product level websites from `WEBSITE_BASIC_TEMPLATE_CHOICES`

## 2.3.0

### v3

#### `OrderLineGoogleAdsPremiumSerializer`
* Increased max length of `campaign_goal` field to 1000.

#### `ContactSerializer`
* Added field `opt_in_reviews`, optional.
* Added field `opt_in_listing_reminders`, optional.

## 2.2.5

### v3

#### `AccountLocationSerializer`
* let field `billing_name` to be optional.

## 2.2.4

### v3

#### `AccountLocationSerializer`
* Added field `billing_name`.

## 2.2.3

### v3

#### `OrderLineWebsiteSerializer`
* Added field `internal_area`.

## 2.2.2

### v3

#### `OrderLineEmailSerializer`
* Renamed field `included_accounts` to `included_addresses`.
* Renamed field `additional_accounts` to `additional_addresses`.

## 2.1.3

### v2/v3

#### `OrderLineInAppSerializer`
* Added `INAPP_AUDIENCE_EMPTY` to `target_audiences` choices.

## 2.1.2

#### `OrderLineGoogleAdsPremiumSerializer`
* Made `target_page_type` required.
* Removed fields:
  - `expected_clicks`
  - `expected_conversions`
  - `expected_impression_share`
  - `expected_impressions`
  - `keywords_with_zero_search_volume`
  - `branch_codes`
  - `call_to_action`
  - `is_generic_campaign`
  - `generic_topics`
  - `remarketing_setup_fee`
  - `remarketing_budget`

#### `OrderLineLandingpageSerializer`
* Added field `easys_related_orderline_id`, referencing the easys ID of a product in the same payload, required.

## 2.1.1

### v2/v3

#### `EXISTING_STROER_LANDINGPAGE`

* Change constant value from 3 to 4, to prevent clashes with `NEW_LANDINGPAGE` constant.

#### `validate_website_and_landingpage_exists()`

* `needs_website` is `True` **only** when `target_page_type` property corresponds to a new website. This was the behavior before the version `2.0.10` of the serializer.

## 2.1.0

### v3

#### `PRODUCT_TYPE_CHOICES`

* Added choice `PRODUCT_TYPE_DOMAIN`

#### `OrderLineDomainSerializer`
* Added serializer, the domain fields of `OrderLineWebsiteSerializer`and `OrderLineEmailSerializer` have been migrated to
  this serializer. Contains the following fields:
    * `desired_domain`: character field of maximum length 100, required
    * `domain_type`: choice of `DOMAIN_TYPE_CHOICES`, required
    * `domain_info`: character field of maximum length 100, optional

#### `OrderLineWebsiteSerializer`
* Removed domain fields (`desired_domain`, `domain_type`, `domain_info`)
* Added field `easys_orderline_domain_id`, referencing the easys ID of a domain product in the same payload

#### `OrderLineEmailSerializer`
* Removed domain fields (`desired_domain`, `domain_type`, `domain_info`)
* Added field `easys_orderline_domain_id`, referencing the easys ID of a domain product in the same payload.
* Changed field `included_accounts` to accept a non-empty list of emails, required
* Changed field `additional_accounts` to accept a possibly empty list of additional emails, required
* Removed field `addresses`

#### `OrderLineSerializer`
* Added new field `down_payment`, optional
* Added new field `detail_domain` accepting `OrderLineDomainSerializer` data, optional

#### `Serializer`

* Added validation: if any OrderLine detail contains `easys_orderline_domain_id` it must reference a domain
  product provided in the same payload

## 2.0.12

### v2

#### `OrderLineGoogleAdsPremiumSerializer`

* Remove fields `remarketing_setup_fee` and `remarketing_budget`, since they are no longer used.

## 2.0.11

### v1/v2

#### `OrderLineSeoSerializer`

* Add translation for `EXISTING_STROER_LANDINGPAGE`

## 2.0.10

### v1/v2

#### `OrderLineSeoSerializer`

* Add `campaign_goal` field, not required.
* Support new value (`3`) for `target_page_type` field. It corresponds to `EXISTING_STROER_LANDINGPAGE`.

## 2.0.9

### v2

#### `OrderSerializer`

* Add `salesforce_opportunity_id` field, required.

## 2.0.8

### v1/v2

#### `OrderLineDisplayNativeSerializer`

* Remove required `target_url`.

## 2.0.7

### v2

#### `OrderLineSerializer`

* Add `salesforce_opportunity_line_item_id` field, not required.

## 2.0.6

### v1/v2

#### `OrderLineDisplayNativeSerializer`

* Fix validation when `age_group_from` and `age_group_from` are `null`.

## 2.0.3

### v1/v2

#### `DisplayNativeCreativeSerializer`

* Changed `teaser` and `advertorial` to accept null instead of blank, and removed `allow_blank` from `ad_type`.

## 1.4.53

### v1/v2

#### `OrderLineGoogleAdsPremiumSerializer`

* Add `ticket_id` field, not required.

## 1.4.52

### v1/v2

#### `OrderLineDisplayNativeSerializer`

* Introduced new serializer - `OrderLineDisplayNativeSerializer`

## 1.4.51

### v1/v2

#### `OrderLineInAppSerializer`

* Set `poi_targeting_file` as not required.

## 1.4.50

### v1/v2

#### `OrderLineInAppSerializer`

* Add `poi_targeting_file` field.

## 1.4.49

### v1/v2

#### `OrderLineSerializer`

* Add `is_pre_briefing_necessary` field, default value is False.

## 1.4.48

### v1/v2

#### `OrderLineDisplayPremiumSerializer`

* Add validation for `impressions_per_month` and `impressions_one_time`, depending on `booking_type` (continuous or fixed).

## 1.4.47

### v1/v2

#### `OrderLineDisplayPremiumSerializer`

* Changed field `impressions_per_day` to `impressions_one_time`.

## 1.4.45

### v1/v2

#### `OrderLineDisplayPremiumSerializer`

* Changed field `age_targeting` choices: `DISPLAY_AGE_CHOICES`, removed legacy `[DISPLAY_AGE_14_19, DISPLAY_AGE_20_29]` and added `DISPLAY_AGE_14_29`

## 1.4.44
### v1/v2

* removed `detail_google_ads_basic` from `OrderLineSerializer`
* removed `OrderLineGoogleAdsBasicSerializer`

## 1.4.43
### v2

* removed `detail_display_basic` from `OrderLineSerializer`
* removed `OrderLineDisplayBasicSerializer`


## 1.4.42

### v1

#### `OrderLineGoogleAdsPremiumSerializer`

* Add field `branch_codes`, optional.


## 1.4.39

### v1/v2

#### `OrderLineDisplayPremiumSerializer`

* Add new field `short_name`, optional.

## 1.4.37

### v1/v2

#### `OrderLineEmailSerializer`

* Add necessary and additional fields for domain creation on email orderline: `desired_domain`, `domain_type` and `domain_info`.


## 1.4.36

### v1/v2

#### `OrderLineGoogleAdsPremiumSerializer`

* Add new fields for generic campaign information: `is_generic_campaign` and `generic_topics`, optionals.

## 1.4.34

### v1/v2

#### `OrderLineSeoSerializer`

* Make `ticket_id` optional.

## 1.4.33

### v1/v2

#### `ContactSerializer`

* Add new field `opt_in_marketing`, optional.

## 1.4.32

### v1/v2

#### `OrderLineSeoSerializer`

* Make `regions` optional.

## 1.4.29

### v1/v2

#### `OrderLineInAppSerializer`

* Remove INAPP_AUDIENCE_OTHER choice
* Make `target_audiences` optional. One of the `target_audiences` and `other_target_audiences` is required

## 1.4.25

### v1/v2

#### `OrderLineSerializer`

* Add new field: `payment_cycle`: choice of `PRODUCT_PAYMENT_CYCLE_CHOICES`, optional

## 1.4.24

### v1/v2

#### `OrderLineListingSerializer`

* Add two new fields: `tonline_costs` and `tonline_city`

### `PRODUCT_TYPE_CHOICES`

* Add choice `PRODUCT_TYPE_TONLINE`

## 1.4.23

### v1/v2

#### `AccountLocationSerializer`

* Add validation: required `payment_debit_account_iban` in case of `payment_type` Charge

## 1.4.12

### v2

#### `OrderLineWebsiteSerializer`

* Added proper choices for
    * `design_preference_minimalistic_embellished`
    * `design_preference_modern_classic`
    * `design_preference_simple_striking`
    * `design_preference_text_picture`

## 1.4.10

### v1/v2

#### `OrderLineFacebookSerializer`
* `ages` choices adjustment: `14_18` is now `13_17` and `19_24` is `18_24`

## 1.4.9

### v2

#### `OrderLineWebsiteSerializer`
* Restrict validator for field `desired_domain` to accept only domain names without http protocol and no IP addresses

## 1.4.6

### v1 / v2

#### `OrderLineGoogleAdsPremiumSerializer`
* Add optional `expected_impressions` and `expected_impression_share`

### v1

* Add optional `target_page_type`

## 1.4.5

### v1 / v2

#### `AccountLocationSerializer`
* Allow `google_places_id` to be 1000 characters max (was 30 before)

## 1.4.3

### v2

#### `OrderLineWebsiteSerializer`
* `additional_subpages` must be >= 0 and <= 60 now

#### `OrderLineGoogleAdsBasicSerializer`
* added optional `target_url`

#### `OrderLineGoogleAdsPremiumSerializer`
* added optional `target_url`

## 1.4.2

### v2

#### `AccountSerializer`
* `branch_codes` cannot be empty any more

#### `OrderLineSeoSerializer`
* `topics` cannot be empty any more
* `regions` cannot be empty any more

#### `OrderLineGoogleAdsBasicSerializer`
* `regions` cannot be empty any more

## 1.4.1

### v2

#### `OrderLineLandingpageSerializer`
added, similar to `OrderLineWebsiteSerializer` except for
* `additional_subpages`: positive integer, required
* `logo_creation`: choice of `LOGO_CREATION_CHOICES`, required

#### `OrderLineSerializer`
* added `detail_landingpage`: type `OrderLineLandingpageSerializer`, only required when OrderLine represents a landingpage product

#### `OrderLineGoogleAdsBasicSerializer`
* added `target_page_type`: choice of `GOOGLE_ADS_LANDING_PAGE_CHOICES`, optional
    * see `Serializer` changes for validation

#### `OrderLineGoogleAdsPremiumSerializer`
* added `branch_codes`: list of HeroCentral provided industry topic codes, optional
    * HeroCentral will validate the codes against the industry tree
* added `target_page_type`: choice of `GOOGLE_ADS_LANDING_PAGE_CHOICES`, optional
    * see `Serializer` changes for validation
* added `remarketing_setup_fee`: decimal, must be >=0 if `include_remarketing=true`
* added `remarketing_budget`: decimal, must be >=0 if `include_remarketing=true`

#### Validations
* added validation: if any OrderLine detail contains `target_page_type`
    * if set to `NEW_WEBSITE`, the serializer will require an OrderLine of type `PRODUCT_TYPE_WEBSITE` to exist
    * if set to `NEW_LANDINGPAGE`, the serializer will require an OrderLine of type `PRODUCT_TYPE_LANDINGPAGE` to exist
    * OrderLine details which can provide values for `target_page_type` are:
        * OrderLineDisplayBasicSerializer
        * OrderLineDisplayPremiumSerializer
        * OrderLineSeoSerializer
        * OrderLineInAppSerializer
        * OrderLineFacebookSerializer