- Add DeviceIdRegistryResource class and DeviceIdRegistryType enum
- Add new Error named
AudienceFeedInstanceContextError
forAudienceFeedConnectorBasePlugin
that can be used on instance context creation. It has a fieldvisibility
which can be'PUBLIC'
or'PRIVATE'
(default). This is only useful foronExternalSegmentCreation
, if set to'PUBLIC'
the error will be displayed onnavigator.mediarithmics.com
to the end user when the feed is activated. - Create example for
AudienceFeedConnectorBasePlugin
withBatchedAudienceFeedConnectorBasePlugin
in./examples/audience-feed
- Improve logger for
AudienceFeedConnectorBasePlugin
, use metadata instead of stringify - Raise custom error on 404 to propagate correctly the info to the end user
- Fix typo batching stats, changing
send_items_in_success
->sent_items_in_success
andsend_items_in_error
->sent_items_in_error
- Fix winston logger, remove colors
- Update winston logger to push json format instead of raw text and enable colors
- Update typing for
/v1/troubleshoot
, now it will behaved like an action route
- Fix
/v1/troubleshoot
was declared as GET instead of POST
- Add new optional route
/v1/troubleshoot
on AudienceSegmentExternalFeed which takeExternalSegmentTroubleshootRequest
and return anExternalSegmentTroubleshootResponse
. This is will be helpful to debug feeds (example: return volumes on third party) AudienceFeedConnectorBasePlugin
add new optional parameterforceRefresh?: boolean
togetInstanceContext
AudienceFeedConnectorBasePlugin
force refresh of instanceContext forexternal_segment_creation
- Refactor types for selected identifying resources for external feeds
- Add filtering functions for selected identifying resources for external feeds
- Replace toobusy string message by a json formatted message
- Make
UserIdentifierInfo
an union type, which will help infering type based ontype
. - Use
UserDeviceTechnicalIdentifierType
forregistry_type
inIdentifyingDeviceTechnicalId
instead of previous union type duplicated. - Add new route
/metadata
to BasePlugin which will give informations on plugin, node and dependencies used.
- Update
UserDeviceTechnicalIdentifierType
withTV_ADVERTISING_ID
- Update
DeviceIdRegistryType
withTV_ADVERTISING_ID
- 2 new methods to
AudienceFeedConnectorBasePlugin
,createAudienceFeedProperties
andupdateAudienceFeedProperties
- Fix a typo in
UserDeviceTechnicalIdentifierType
(MOBILE_ADVERTSING_ID
->MOBILE_ADVERTISING_ID
) - Fix, export
BatchUpdateInterface
for batch update on feeds - Upate typescript version from 4.9.5 to 5.2.2
- Upate winston version from 3.8.2 to 5.11.0
- Upate sinon version from 15.0.1 to 17.0.1
- Add fields
send_items_in_error
andsend_items_in_success
toBatchUpdatePluginResponse
- Access selected identifying resources from feed instance
- Remove http proxy properties
- Automatically fetch selected identifying resources in
AudienceFeedConnectorBaseInstanceContext
- Add types for UserActivity
$user_identifiers
field
- New subclasses for
AudienceFeedConnectorBasePlugin
andBatchedAudienceFeedConnectorBasePlugin<T>
, related to batched content. - Breaking changes in
UserSegmentUpdatePluginResponse
, when used withUserSegmentUpdatePluginBatchDeliveryResponseData
.- To output
BATCH_DELIVERY
, implementBatchedAudienceFeedConnectorBasePlugin
instead, that will force implementation of
protected abstract onUserSegmentUpdate(request: UserSegmentUpdateRequest, instanceContext: AudienceFeedConnectorBaseInstanceContext): Promise<BatchedUserSegmentUpdatePluginResponse<T>>;
- To output
- Force not null content in
UserSegmentUpdatePluginDeliveryContent
- Don't output
UserSegmentUpdatePluginDeliveryContent
if content is empty.
- Don't output
- Update
BatchUpdatePluginResponse#status
to uppercase status, instead of lowercase.
Breaking changes in UserSegmentUpdatePluginResponse:
grouping_key
is now mandatory for file and batch delivery responsesdestination_token
is now mandatory for file delivery responses
Several rules where added regarding linting and formatting.
The use of tsconfig compilerOptions lib 2019 is to in consideration regarding node <12 based plugin. Check readme for more informations.
- Make grouping_key available for FileDelivery and BatchDelivery
Breaking changes in UserSegmentUpdatePluginResponse (UPDATE).
- update the Audience feed onUserSegmentUpdate method return type.
- Interface UserSegmentUpdatePluginResponse data optional element is now of type DeliveryType.
- DeliveryType takes a
T
type argument that is unknown by default:- If target is FILE_DELIVERY type of the returned data will be
string
; - If target is BATCH_DELIVERY type of the returned data will be
T
;
- If target is FILE_DELIVERY type of the returned data will be
- batch_token no longer exists.
- binary_content no longer exists (if needed send binary in content).
- remove duplicate destination_token (filed is only used of FILE_DELIVERY).
Breaking changes in UserSegmentUpdatePluginResponse.
- update the Audience feed onUserSegmentUpdate method return type. Interface UserSegmentUpdatePluginResponse data optional element is now of type DeliveryType.
- status can be 'no_eligible_identifier' now (status code 400);
- stats field is changed (UserSegmentUpdatePluginResponseStats);
- in stats, identifier and sync_result become compulsory;
- SyncResult can now have only 3 values (PROCESSED, SUCCESS and REJECTED) in stats;
- tags in stats is now an optional list of tags;
- fix visibility case (the release 0.9.9 missed a commit)
- Add new parameter visibility on ExternalSegmentCreationPluginResponse (
PUBLIC
to show the message on navigator,PRIVATE
to obfuscate it) - Improve audience segment feed types (
sync_result
,retry
status)
- Add additional keys to CustomActionRequest interface (datamart_id, node_id, scenario_id)
- Fix missing
type
in user identifier info
- Add
USER_DEVICE_POINT
toUserIdentifierInfoType
- Update StatsClient: to use development or production env / to correctly target metrics in Map
- Fix StatsClient in tests
- Move test helper dependencies
- Enable to return retry statusName (429 Status Code) for the onUserSegmentUpdate method for the Audience Feed Connector Plugin
- Add a StatsClient using StatsD.
- Fix packaging issue (size)
- Added email renderer example.
- Simplify the init workflow as credentials are now pushed via the environment. This is a breaking change for tests, see the README file.
- CustomActionBasePlugin fetch CustomAction and properties for InstanceContext.
- Plugins that enable throttling should treat technical routes normally when they're busy.
- Improve InstanceContext caching, don't cache failed promise.
- Fix CustomActionBasePlugin,
instanceContextBuilder
does not fetch plugin properties as it needs a mics API token. Now to retrieve the CustomAction plugin and properties a token is needed, see functionsfetchCustomAction
andfetchCustomActionProperties
.
- Change CustomActionRequest for a custom action (instance_id to custom_action_id)
- Add support for Custom Action plugins
- Refuse to process calls before the initialization
- Fix : properly pass data and stats object in the onUserSegmentUpdate response
- Update interface for the expected output of the onUserSegmentUpdate which optional parameters.
- Fix logs, enable the use of macros such as %j instead of using JSON.stringify()
- Fix this.logger and /log_level routes that were broken since winston 3.x upgrade.
- Expose new helper method
itFactory
used to test an Activity Analyzer plugin.
- Fix handlebars dependency issue
- Add variability in the instance context refresh interval to avoid 'burst' on the Gateway API
- Change the default refresh interval from 2 minutes to 10 minutes
- Fix Handlebars typescript declaration conflicts
- Fix undefined port proxy url
- Remove stack trace from messages when returning an error in
AudienceFeedConnectorBasePlugin
- Add proxy url configuration with environment variables, by default it use
http://plugin-gateway.platform:8081
- Fix a bug concerning Audience Feed support: we were improperly returning
statusCode: 200
even when the Plugin implementation was returningstatus: error
in its response.
- Support of new Plugin Properties types:
ASSET_FILE
&ASSET_FOLDER
- Update compartment_id type from number to string
- Fix interface UserActivity.EmailHash
- Rename the
recommenderProperties
field toproperties
for Recommender support - Change the type of
properties
in the Instance Context of Audience Feed & Recommender fromPluginProperty[]
toPropertiesWrapper
- Replace
click_urls
field withclick_urls_info
in AdRendererRequest, which contains the propertyredirect_count
in addition tourl
for each entry.
- Change the Template design (for AdRenderer and EmailRenderer). See
README.md
- Add the
forceReload=true
support for AdRenderer & EmailRenderer InstanceContext build to make sure the creative displayed on navigator is always up to date with the configuration of the plugin instance on mediarithmics platform - Remove unused
instanceContext
property inActivityAnalyzerBasePlugin
&AdRendererBasePlugin
- Fix Email Renderer bug (wrong Id to store the InstanceContext)
- Support for EmailRenderer with Templating features
- New Handlebar templating engine that list the macros used in the template
- New Templating engine interface to implement if you want to let the Plugin Impl. have a look into the Templating macros
- New
BasePlugin
helpers:requestPublicMicsApiHelper()
to do API requests on the mediarithmics APIfetchDatamarts()
to fetch the list of Datamarts inside an organisationfetchDatamartCompartments()
to fetch the list of Compartments inside a Datamart
- New types definition for
Datamart
andCompartment
- New
PropertyWrapper
methodfindBooleanProperty()
requestGatewayHelper()
is now explicitely not using any proxy, even if one is configured in an environment variable (ex:http_proxy
/HTTP_PROXY
/https_proxy
/HTTPS_PROXY
)
- Fix some typo in debug log text
requestGatewayHelper()
is now logging the basic auth user&password used to authenticate on the Gateway
- Fix a regression on the property values (they can be null)
- Fix a crash with handlebars when the template is null
- Muti process support (new parameter to pass to the ProductionPluginRunner), disabled by default
- Improve Audience External Feed support (
getInstanceContext
helper) - Better support of types with Instance properties fetching
- Some naming changes (see the migration seciton in
README
)\
- Add an option to return a 429 HTTP code when the plugin is too busy
- Fix invalid characters issues in the DisplayContext header
- Add
creative_variant
on theBidOptimizerPluginResponse
interface - Add
compartment_id
on theUserAccountIdentifierInfo
interface
- Add
blast_id
on theEmailRoutingRequest
interface - Add
creative_variant
on theAdRendererRequest
interface
- Fix Audience Feed support (wrong initial integration which was not aligned with the API)
- Add an Helper to do the Handlebars macros mapping for AdRenderer with Templating using the Handlebars Engine
- Update IAS TAG integration for AdRenderer using the Handlebars engine (escape the media_id as it's passed in an IAS URL)
- Fix overiding request options parameters in requestGatewayHelper
- Add support for Audience Feed Connectors plugins
- Remove a console.log in the handlebars engine
- Improve error handling with async/await
- Fix error message of gateway helper
- Fix the JSON vs non JSON situations
- Add async middleware to stop using try catch in routes
- Add async middleware to all plugin routes
- Remove legacy log
- Update IAS Tag integration
- New "Templating" support with AdRendererTemplatePlugin class (for AdRenderer that don't need recommendations)
- Add support for email router and email renderer
- Fix User Activity Interface
- Add a MailJet Email router as an implementation example
- Updated the UserActivityEventProperty Interface
- Fix some Activity Analyzer tests
- Fix user_agent_id interface
- Add testing of User Agent id (case: null & check if correctly passed to recommender)
- Added support of the BidOptimizer plugins
- Fix PluginProperty interface
- Added a BidOptimizer example
- Removed package-lock.json from examples for SDK release testing purposes
- Added some Geolocation helpers
- Breaking changes in the SDK public API > Now relying on Javascript ES6 Class APIs. Not compatible with the 0.1.x versions of the SDK
- New interfaces for UserActivity / Recommendations objects
- New Plugin type to implement Ad Renderer using Recommendations and Templating features
- Handlebars.js template engine integration
- Testing capbility of plugin built with this SDK. See the examples to see how it works.
- SDK Tests: The SDK itself is now tested, you can run the tests by typing
npm test
- Doc generation: Use
npm doc
to generate the documentation (using typedoc)
- Fix missing value in ValueInterface (=> url)
- Fix log level case issue
- Add fetchDataFile helper (which return binary)
- Add custom InstanceContext builder use in Activity Analyzer example
- Fix error catching issue
- Exposed ActivityAnalyzer & ActivityAnalyzerProperty interfaces
- Include the
build/
directory in the published package
- Initial release