diff --git a/.github/workflows/config/labeler.yml b/.github/workflows/config/labeler.yml index 6084caed5feff..1d154f593b765 100644 --- a/.github/workflows/config/labeler.yml +++ b/.github/workflows/config/labeler.yml @@ -39,6 +39,8 @@ integration/activemq: - activemq/**/* integration/activemq_xml: - activemq_xml/**/* +integration/adyen: +- adyen/**/* integration/aerospike: - aerospike/**/* integration/agent_metrics: diff --git a/adyen/CHANGELOG.md b/adyen/CHANGELOG.md new file mode 100644 index 0000000000000..798f81136ab38 --- /dev/null +++ b/adyen/CHANGELOG.md @@ -0,0 +1,7 @@ +# CHANGELOG - Adyen + +## 1.0.0 / 2024-09-26 + +***Added***: + +* Initial Release \ No newline at end of file diff --git a/adyen/README.md b/adyen/README.md new file mode 100644 index 0000000000000..453adf9c008c5 --- /dev/null +++ b/adyen/README.md @@ -0,0 +1,66 @@ +# Adyen + +## Overview +[Adyen][1] is a global payment platform that provides a comprehensive suite of payment solutions for businesses. It enables companies to accept payments online, on mobile, and in-store. Adyen supports a wide range of payment methods, including credit cards, mobile wallets, and local payment options, and offers services such as fraud prevention and risk management. + +The Adyen integration collects transaction, dispute, and payout data using Adyen's webhook capability and ingests it into Datadog for comprehensive analysis. + +## Setup + +Follow the instructions below to configure this integration for your Adyen account. + +### Configuration + +#### Webhook Configuration +Configure the Datadog endpoint to forward Adyen events as logs to Datadog. For more details, see [Adyen webhook overview][2]. + + 1. Copy the generated URL inside the **Configuration** tab on the Datadog [Adyen integration tile][4]. + 2. Sign in to your [Adyen][1] account with a user which has a **Merchant technical integrator** role along with default roles, and has access to **Company account and all associated merchant accounts**. + 3. Under the **Developers** section, click **Webhooks**. + 4. Click on **Create new webhook**. + 5. In the Recommended Webhooks section, select the **Add** option located next to the **Standard Webhook**. + 6. Under **General**, configure the following: + + | Setting | Configuration | + |------------------------------ |-----------------------------------------------------------------------------------------| + | Version | Select webhook version 1 | + | Description | Add a description to the webhook | + | Merchant accounts | Choose whether to keep all merchant accounts or select specific accounts for which data needs to be ingested into Datadog | + + 7. Under **Server configuration**, configure the following: + + | Setting | Configuration | + |------------------------------ |-----------------------------------------------------------------------------------------| + | URL | Enter the endpoint URL that you generated in step 1 of [Webhook configuration](#webhook-configuration). | + | Method | JSON | + | Encryption protocol | TLSv1.3 | + 8. Under **Events**, keep the default selected events as per **Standard Webhook**. + 9. Click **Save configuration**. + + +## Data Collected + +### Logs + +The Adyen integration collects and forwards transaction, dispute, and payout logs to Datadog. + +### Metrics + +The Adyen integration does not include any metrics. + +### Events + +The Adyen integration does not include any events. + +### Service Checks + +The Adyen integration does not include any service checks. + +## Support + +For further assistance, contact [Datadog Support][3]. + +[1]: https://www.adyen.com/ +[2]: https://docs.adyen.com/development-resources/webhooks/ +[3]: https://docs.datadoghq.com/help/ +[4]: https://app.datadoghq.com/integrations/adyen \ No newline at end of file diff --git a/adyen/assets/adyen.svg b/adyen/assets/adyen.svg new file mode 100644 index 0000000000000..8cd6608f95c7c --- /dev/null +++ b/adyen/assets/adyen.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/adyen/assets/dashboards/adyen_disputes.json b/adyen/assets/dashboards/adyen_disputes.json new file mode 100644 index 0000000000000..3f83b9e3b60d0 --- /dev/null +++ b/adyen/assets/dashboards/adyen_disputes.json @@ -0,0 +1,1111 @@ +{ + "title": "Adyen Disputes", + "description": "This dashboard provides a comprehensive overview of key logs related to dispute events. The dashboard visualizes chargeback overview, fraud, and dispute analytics. Additionally, it provide insights related to chargebacks by merchant account.", + "widgets": [ + { + "id": 7687241876619038, + "definition": { + "type": "image", + "url": "https://cdn-assets-eu.frontify.com/s3/frontify-enterprise-files-eu/eyJwYXRoIjoiYWR5ZW5cL2ZpbGVcL1ZBanFlS3N5Ulc2ckZhVms5NTI1LnN2ZyJ9:adyen:r06pNrzaXXGyE0fhpig2QP-tBs3hC99-cwKlx-PdS68", + "url_dark_theme": "https://cdn-assets-eu.frontify.com/s3/frontify-enterprise-files-eu/eyJwYXRoIjoiYWR5ZW5cL2ZpbGVcL1BrU051WngzanVnamZZZ0FZR0JrLnN2ZyJ9:adyen:qWZTSS0KDkayjczU8jwAJNPlbHzmxs1Wq_hYu7QR-Q4", + "sizing": "cover", + "has_background": false, + "has_border": false, + "vertical_align": "center", + "horizontal_align": "center" + }, + "layout": { + "x": 0, + "y": 0, + "width": 6, + "height": 2 + } + }, + { + "id": 186195290867710, + "definition": { + "title": "Monitors Summary", + "background_color": "vivid_green", + "show_title": true, + "type": "group", + "layout_type": "ordered", + "widgets": [ + { + "id": 4935332869161822, + "definition": { + "title": "Monitors Summary", + "type": "manage_status", + "display_format": "countsAndList", + "color_preference": "text", + "hide_zero_counts": true, + "show_status": true, + "last_triggered_format": "relative", + "query": "tag:(source:adyen AND service:dispute)", + "sort": "status,asc", + "count": 50, + "start": 0, + "summary_type": "monitors", + "show_priority": false, + "show_last_triggered": false + }, + "layout": { + "x": 0, + "y": 0, + "width": 6, + "height": 5 + } + } + ] + }, + "layout": { + "x": 6, + "y": 0, + "width": 6, + "height": 6 + } + }, + { + "id": 8664679548486656, + "definition": { + "type": "note", + "content": "**Overview**\n\nThis dashboard provides a comprehensive overview of key logs related to dispute events. The dashboard visualizes chargeback overviews, fraud, and dispute analytics, along with insights on chargebacks by merchant account.\n\nFor more information, see the [Adyen Integration Documentation](https://docs.datadoghq.com/integrations/adyen/).\n\n**Tips**\n- Use the timeframe selector in the top right of the dashboard to change the default timeframe.\n- Clone this dashboard to rearrange, modify and add widgets and visualizations.", + "background_color": "white", + "font_size": "14", + "text_align": "left", + "vertical_align": "top", + "show_tick": false, + "tick_pos": "50%", + "tick_edge": "left", + "has_padding": true + }, + "layout": { + "x": 0, + "y": 2, + "width": 6, + "height": 4 + } + }, + { + "id": 8846779929019656, + "definition": { + "title": "Chargeback Overview", + "background_color": "vivid_green", + "show_title": true, + "type": "group", + "layout_type": "ordered", + "widgets": [ + { + "id": 4437822100258310, + "definition": { + "type": "note", + "content": "To learn more about the dispute flow and process, see the [Adyen Dispute Documentation](https://docs.adyen.com/risk-management/understanding-disputes/dispute-process-and-flow/)", + "background_color": "yellow", + "font_size": "16", + "text_align": "left", + "vertical_align": "center", + "show_tick": true, + "tick_pos": "50%", + "tick_edge": "right", + "has_padding": true + }, + "layout": { + "x": 0, + "y": 0, + "width": 3, + "height": 3 + } + }, + { + "id": 8952129363890986, + "definition": { + "title": "Chargeback Notifications", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:dispute @evt.name:NOTIFICATION_OF_CHARGEBACK $MerchantAccount $PaymentMethod" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_yellow", + "custom_bg_color": "#d6c7ff" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 2, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 3, + "y": 0, + "width": 3, + "height": 3 + } + }, + { + "id": 1442350089093946, + "definition": { + "title": "Total Chargebacks ", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:dispute @evt.name:CHARGEBACK $MerchantAccount $PaymentMethod" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "custom_bg", + "custom_bg_color": "#d6c7ff" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 2, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 6, + "y": 0, + "width": 3, + "height": 3 + } + }, + { + "id": 7809641657550002, + "definition": { + "title": "Total Second Chargebacks ", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:dispute @evt.name:SECOND_CHARGEBACK $MerchantAccount $PaymentMethod" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_red", + "custom_bg_color": "#d6c7ff" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 2, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 9, + "y": 0, + "width": 3, + "height": 3 + } + }, + { + "id": 935243487362654, + "definition": { + "title": "Top Reasons for NoC", + "title_size": "16", + "title_align": "left", + "type": "toplist", + "requests": [ + { + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.reason", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:dispute @evt.name:NOTIFICATION_OF_CHARGEBACK $MerchantAccount $PaymentMethod -@notificationItems.NotificationRequestItem.reason:\"\"" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "white_on_red" + } + ], + "formulas": [ + { + "formula": "query1" + } + ], + "sort": { + "count": 10, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + } + } + ], + "style": { + "display": { + "type": "stacked", + "legend": "automatic" + } + } + }, + "layout": { + "x": 0, + "y": 3, + "width": 6, + "height": 4 + } + }, + { + "id": 1842471959234388, + "definition": { + "title": "Lost Pre-arbitration Cases", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:dispute @evt.name:PREARBITRATION_LOST $MerchantAccount $PaymentMethod" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_red", + "custom_bg_color": "#d6c7ff" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 2, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 6, + "y": 3, + "width": 3, + "height": 2 + } + }, + { + "id": 2925453883001420, + "definition": { + "title": "Won Pre-arbitration Cases", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:dispute @evt.name:PREARBITRATION_WON $MerchantAccount $PaymentMethod" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_green", + "custom_bg_color": "#d6c7ff" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 2, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 9, + "y": 3, + "width": 3, + "height": 2 + } + }, + { + "id": 4197302775386064, + "definition": { + "title": "Total Request for Information (RFI)", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:dispute @evt.name:REQUEST_FOR_INFORMATION $MerchantAccount $PaymentMethod" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_yellow", + "custom_bg_color": "#d6c7ff" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 2, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 6, + "y": 5, + "width": 3, + "height": 2 + } + }, + { + "id": 6221171436580578, + "definition": { + "title": "Reversed Chargebacks", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:dispute @evt.name:CHARGEBACK_REVERSED $MerchantAccount $PaymentMethod" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_green", + "custom_bg_color": "#d6c7ff" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 2, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 9, + "y": 5, + "width": 3, + "height": 2 + } + }, + { + "id": 2637130255059616, + "definition": { + "title": "Top Reasons for Second Chargeback", + "title_size": "16", + "title_align": "left", + "type": "toplist", + "requests": [ + { + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.reason", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:dispute @evt.name:SECOND_CHARGEBACK $MerchantAccount $PaymentMethod -@notificationItems.NotificationRequestItem.reason:\"\"" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">", + "value": 0, + "palette": "white_on_red" + } + ], + "formulas": [ + { + "formula": "query1" + } + ], + "sort": { + "count": 10, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + } + } + ], + "style": { + "display": { + "type": "stacked", + "legend": "automatic" + } + } + }, + "layout": { + "x": 0, + "y": 7, + "width": 6, + "height": 4 + } + }, + { + "id": 4434774958434120, + "definition": { + "title": "NoCs by Merchant Account", + "title_size": "16", + "title_align": "left", + "requests": [ + { + "response_format": "scalar", + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.merchantAccountCode", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:dispute @evt.name:NOTIFICATION_OF_CHARGEBACK $MerchantAccount $PaymentMethod" + }, + "storage": "hot" + } + ], + "style": { + "palette": "datadog16" + }, + "sort": { + "count": 10, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + } + } + ], + "type": "sunburst", + "legend": { + "type": "automatic" + } + }, + "layout": { + "x": 6, + "y": 7, + "width": 6, + "height": 4 + } + } + ] + }, + "layout": { + "x": 0, + "y": 6, + "width": 12, + "height": 12 + } + }, + { + "id": 4628493529131032, + "definition": { + "title": "Fraud and Dispute Analytics", + "background_color": "vivid_green", + "show_title": true, + "type": "group", + "layout_type": "ordered", + "widgets": [ + { + "id": 5090269811400060, + "definition": { + "title": "Fraud Notifications", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:dispute @evt.name:NOTIFICATION_OF_FRAUD $MerchantAccount $PaymentMethod" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_red", + "custom_bg_color": "#d6c7ff" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 2, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 0, + "y": 0, + "width": 4, + "height": 4 + } + }, + { + "id": 8664545062940364, + "definition": { + "title": "NoFs by Merchant Account", + "title_size": "16", + "title_align": "left", + "requests": [ + { + "response_format": "scalar", + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.merchantAccountCode", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:dispute @evt.name:NOTIFICATION_OF_FRAUD $MerchantAccount $PaymentMethod" + }, + "storage": "hot" + } + ], + "style": { + "palette": "datadog16" + }, + "sort": { + "count": 10, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + } + } + ], + "type": "sunburst", + "legend": { + "type": "table" + } + }, + "layout": { + "x": 4, + "y": 0, + "width": 8, + "height": 4 + } + }, + { + "id": 4850596776264180, + "definition": { + "title": "Top Reasons for NoF", + "title_size": "16", + "title_align": "left", + "type": "toplist", + "requests": [ + { + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.reason", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:dispute @evt.name:NOTIFICATION_OF_FRAUD $MerchantAccount $PaymentMethod -@notificationItems.NotificationRequestItem.reason:\"\"" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "white_on_red" + } + ], + "formulas": [ + { + "formula": "query1" + } + ], + "sort": { + "count": 10, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + } + } + ], + "style": { + "display": { + "type": "stacked", + "legend": "automatic" + } + } + }, + "layout": { + "x": 0, + "y": 4, + "width": 12, + "height": 4 + } + } + ] + }, + "layout": { + "x": 0, + "y": 18, + "width": 12, + "height": 9 + } + }, + { + "id": 1765265865571710, + "definition": { + "title": "Dispute Logs over Time", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "count" + }, + "group_by": [ + { + "facet": "@evt.name", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "count" + } + } + ], + "search": { + "query": "source:adyen service:dispute" + }, + "storage": "hot" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "order_by": "values", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 0, + "y": 0, + "width": 12, + "height": 4 + } + }, + { + "id": 2986745038735583, + "definition": { + "title": "Dispute Logs", + "title_size": "16", + "title_align": "left", + "requests": [ + { + "response_format": "event_list", + "query": { + "data_source": "logs_stream", + "query_string": "source:adyen service:dispute ", + "indexes": [], + "storage": "hot", + "sort": { + "order": "desc", + "column": "timestamp" + } + }, + "columns": [ + { + "field": "status_line", + "width": "auto" + }, + { + "field": "timestamp", + "width": "auto" + }, + { + "field": "content", + "width": "auto" + } + ] + } + ], + "type": "list_stream" + }, + "layout": { + "x": 0, + "y": 4, + "width": 12, + "height": 4 + } + } + ], + "template_variables": [ + { + "name": "MerchantAccount", + "prefix": "@notificationItems.NotificationRequestItem.merchantAccountCode", + "available_values": [], + "default": "*" + }, + { + "name": "PaymentMethod", + "available_values": [], + "default": "*" + } + ], + "layout_type": "ordered", + "notify_list": [], + "reflow_type": "fixed" +} \ No newline at end of file diff --git a/adyen/assets/dashboards/adyen_payouts.json b/adyen/assets/dashboards/adyen_payouts.json new file mode 100644 index 0000000000000..f2977a4084e53 --- /dev/null +++ b/adyen/assets/dashboards/adyen_payouts.json @@ -0,0 +1,710 @@ +{ + "title": "Adyen Payouts", + "description": "This Dashboard provides a comprehensive overview of key logs related to third party payout events. The dashboard visualizes total, successful, failed, expired, declined, and reversed payouts. Additionally, it highlights payout trends over time, top reasons for failed payouts, and a breakdown of payouts by merchant account. ", + "widgets": [ + { + "id": 6720697615291836, + "definition": { + "type": "image", + "url": "https://cdn-assets-eu.frontify.com/s3/frontify-enterprise-files-eu/eyJwYXRoIjoiYWR5ZW5cL2ZpbGVcL1ZBanFlS3N5Ulc2ckZhVms5NTI1LnN2ZyJ9:adyen:r06pNrzaXXGyE0fhpig2QP-tBs3hC99-cwKlx-PdS68", + "url_dark_theme": "https://cdn-assets-eu.frontify.com/s3/frontify-enterprise-files-eu/eyJwYXRoIjoiYWR5ZW5cL2ZpbGVcL1BrU051WngzanVnamZZZ0FZR0JrLnN2ZyJ9:adyen:qWZTSS0KDkayjczU8jwAJNPlbHzmxs1Wq_hYu7QR-Q4", + "sizing": "cover", + "has_background": false, + "has_border": false, + "vertical_align": "center", + "horizontal_align": "center" + }, + "layout": { + "x": 0, + "y": 0, + "width": 6, + "height": 2 + } + }, + { + "id": 1724941175031632, + "definition": { + "title": "Monitors Summary", + "background_color": "vivid_green", + "show_title": true, + "type": "group", + "layout_type": "ordered", + "widgets": [ + { + "id": 3062917458280874, + "definition": { + "title": "Monitors Summary", + "type": "manage_status", + "display_format": "countsAndList", + "color_preference": "text", + "hide_zero_counts": true, + "show_status": true, + "last_triggered_format": "relative", + "query": "tag:(source:adyen AND service:payout)", + "sort": "status,asc", + "count": 50, + "start": 0, + "summary_type": "monitors", + "show_priority": false, + "show_last_triggered": false + }, + "layout": { + "x": 0, + "y": 0, + "width": 6, + "height": 5 + } + } + ] + }, + "layout": { + "x": 6, + "y": 0, + "width": 6, + "height": 6 + } + }, + { + "id": 6437951956107458, + "definition": { + "type": "note", + "content": "**Overview**\n\nThis Dashboard provides a comprehensive overview of key logs related to third party payout events. The dashboard visualizes total, successful, failed, expired, declined, and reversed payouts. Additionally, it highlights payout trends over time, top reasons for failed payouts, and a breakdown of payouts by merchant account. \n\nFor more information, see the [Adyen Integration Documentation](https://docs.datadoghq.com/integrations/adyen/).\n\n**Tips**\n- Use the timeframe selector in the top right of the dashboard to change the default timeframe.\n- Clone this dashboard to rearrange, modify and add widgets and visualizations.", + "background_color": "white", + "font_size": "14", + "text_align": "left", + "vertical_align": "top", + "show_tick": false, + "tick_pos": "50%", + "tick_edge": "left", + "has_padding": true + }, + "layout": { + "x": 0, + "y": 2, + "width": 6, + "height": 4 + } + }, + { + "id": 6710917235899192, + "definition": { + "title": "Payout Overview", + "background_color": "vivid_green", + "show_title": true, + "type": "group", + "layout_type": "ordered", + "widgets": [ + { + "id": 3208550364818198, + "definition": { + "type": "note", + "content": "To learn more about the payout status, see the [Adyen Payout Documentation](https://docs.adyen.com/online-payments/online-payouts/payout-webhook/#payouts-to-bank-accounts-or-wallets)", + "background_color": "yellow", + "font_size": "16", + "text_align": "left", + "vertical_align": "center", + "show_tick": true, + "tick_pos": "50%", + "tick_edge": "right", + "has_padding": true + }, + "layout": { + "x": 0, + "y": 0, + "width": 4, + "height": 3 + } + }, + { + "id": 2393649027681696, + "definition": { + "title": "Successful Payout Requests", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:payout @evt.name:PAYOUT_THIRDPARTY @notificationItems.NotificationRequestItem.success:true $MerchantAccount $Currency" + }, + "storage": "hot" + } + ], + "formulas": [ + { + "formula": "query1" + } + ], + "conditional_formats": [ + { + "comparator": ">", + "value": 0, + "palette": "black_on_light_green" + } + ] + } + ], + "autoscale": true, + "precision": 2, + "timeseries_background": { + "type": "area" + } + }, + "layout": { + "x": 4, + "y": 0, + "width": 4, + "height": 3 + } + }, + { + "id": 3438683775240316, + "definition": { + "title": "Failed Payout Requests", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:payout @evt.name:PAYOUT_THIRDPARTY @notificationItems.NotificationRequestItem.success:false $MerchantAccount $Currency" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_red", + "custom_bg_color": "#d6c7ff" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 2, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 8, + "y": 0, + "width": 4, + "height": 3 + } + }, + { + "id": 3351392517239628, + "definition": { + "title": "Expired Payouts", + "title_size": "16", + "title_align": "left", + "time": { + "hide_incomplete_cost_data": true + }, + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:payout @evt.name:PAYOUT_EXPIRE $MerchantAccount $Currency" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_yellow", + "custom_bg_color": "#d6c7ff" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 2, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 0, + "y": 3, + "width": 4, + "height": 3 + } + }, + { + "id": 705054495257446, + "definition": { + "title": "Declined Payouts", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:payout @evt.name:PAYOUT_DECLINE $MerchantAccount $Currency" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_red", + "custom_bg_color": "#d6c7ff" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 2, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 4, + "y": 3, + "width": 4, + "height": 3 + } + }, + { + "id": 8528478242983446, + "definition": { + "title": "Reversed Payouts", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:payout @evt.name:PAIDOUT_REVERSED $MerchantAccount $Currency" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_yellow", + "custom_bg_color": "#d6c7ff" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 2, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 8, + "y": 3, + "width": 4, + "height": 3 + } + } + ] + }, + "layout": { + "x": 0, + "y": 6, + "width": 12, + "height": 7 + } + }, + { + "id": 7939253554036440, + "definition": { + "title": "Payout Insights", + "background_color": "vivid_green", + "show_title": true, + "type": "group", + "layout_type": "ordered", + "widgets": [ + { + "id": 6530326882880688, + "definition": { + "title": "Top Failed Payout Reasons", + "title_size": "16", + "title_align": "left", + "type": "toplist", + "requests": [ + { + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.reason", + "limit": 5, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:payout @evt.name:PAYOUT_THIRDPARTY @notificationItems.NotificationRequestItem.success:false -@notificationItems.NotificationRequestItem.reason:\"\" $MerchantAccount $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "white_on_red" + } + ], + "formulas": [ + { + "formula": "query1" + } + ], + "sort": { + "count": 5, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + } + } + ], + "style": { + "display": { + "type": "stacked", + "legend": "automatic" + } + } + }, + "layout": { + "x": 0, + "y": 0, + "width": 6, + "height": 5 + } + }, + { + "id": 179220156143192, + "definition": { + "title": "Payouts by Merchant Account", + "title_size": "16", + "title_align": "left", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.merchantAccountCode", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:payout @evt.name:PAYOUT_THIRDPARTY $MerchantAccount $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "sort": { + "count": 500, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + }, + "style": { + "palette": "datadog16" + } + } + ], + "type": "sunburst", + "legend": { + "type": "table" + } + }, + "layout": { + "x": 6, + "y": 0, + "width": 6, + "height": 5 + } + }, + { + "id": 6769909472021128, + "definition": { + "title": "Payout Logs over Time", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "alias": "Payout Logs", + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "count" + }, + "group_by": [ + { + "facet": "@evt.name", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "count" + } + } + ], + "search": { + "query": "source:adyen service:payout" + }, + "storage": "hot" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "order_by": "values", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 0, + "y": 5, + "width": 12, + "height": 4 + } + }, + { + "id": 2231277964468560, + "definition": { + "title": "Payout Logs", + "title_size": "16", + "title_align": "left", + "requests": [ + { + "response_format": "event_list", + "query": { + "data_source": "logs_stream", + "query_string": "source:adyen service:payout ", + "indexes": [], + "storage": "hot" + }, + "columns": [ + { + "field": "status_line", + "width": "auto" + }, + { + "field": "timestamp", + "width": "auto" + }, + { + "field": "content", + "width": "auto" + } + ] + } + ], + "type": "list_stream" + }, + "layout": { + "x": 0, + "y": 9, + "width": 12, + "height": 4 + } + } + ] + }, + "layout": { + "x": 0, + "y": 13, + "width": 12, + "height": 14 + } + } + ], + "template_variables": [ + { + "name": "MerchantAccount", + "prefix": "@notificationItems.NotificationRequestItem.merchantAccountCode", + "available_values": [], + "default": "*" + }, + { + "name": "Currency", + "prefix": "@notificationItems.NotificationRequestItem.amount.currency", + "available_values": [], + "default": "*" + } + ], + "layout_type": "ordered", + "notify_list": [], + "reflow_type": "fixed" +} \ No newline at end of file diff --git a/adyen/assets/dashboards/adyen_transactions.json b/adyen/assets/dashboards/adyen_transactions.json new file mode 100644 index 0000000000000..f6c4cf5e66e6e --- /dev/null +++ b/adyen/assets/dashboards/adyen_transactions.json @@ -0,0 +1,2166 @@ +{ + "title": "Adyen Transactions", + "description": "This Dashboard provides a comprehensive overview of key logs related to transaction events. The dashboard visualizes transaction overviews, refund insights, and other transaction analytics. Additionally, it provide insights related to transactions by currency, merchant account, and payment method.", + "widgets": [ + { + "id": 6509483665561548, + "definition": { + "type": "image", + "url": "https://cdn-assets-eu.frontify.com/s3/frontify-enterprise-files-eu/eyJwYXRoIjoiYWR5ZW5cL2ZpbGVcL1ZBanFlS3N5Ulc2ckZhVms5NTI1LnN2ZyJ9:adyen:r06pNrzaXXGyE0fhpig2QP-tBs3hC99-cwKlx-PdS68", + "url_dark_theme": "https://cdn-assets-eu.frontify.com/s3/frontify-enterprise-files-eu/eyJwYXRoIjoiYWR5ZW5cL2ZpbGVcL1BrU051WngzanVnamZZZ0FZR0JrLnN2ZyJ9:adyen:qWZTSS0KDkayjczU8jwAJNPlbHzmxs1Wq_hYu7QR-Q4", + "sizing": "cover", + "has_background": false, + "has_border": false, + "vertical_align": "center", + "horizontal_align": "center" + }, + "layout": { + "x": 0, + "y": 0, + "width": 6, + "height": 2 + } + }, + { + "id": 4312287967442976, + "definition": { + "title": "Monitors Summary", + "background_color": "vivid_green", + "show_title": true, + "type": "group", + "layout_type": "ordered", + "widgets": [ + { + "id": 7229231341568784, + "definition": { + "title": "Monitors Summary", + "type": "manage_status", + "display_format": "countsAndList", + "color_preference": "text", + "hide_zero_counts": true, + "show_status": true, + "last_triggered_format": "relative", + "query": "tag:(source:adyen AND service:transaction)", + "sort": "status,asc", + "count": 50, + "start": 0, + "summary_type": "monitors", + "show_priority": false, + "show_last_triggered": false + }, + "layout": { + "x": 0, + "y": 0, + "width": 6, + "height": 5 + } + } + ] + }, + "layout": { + "x": 6, + "y": 0, + "width": 6, + "height": 6 + } + }, + { + "id": 8436695922142380, + "definition": { + "type": "note", + "content": "**Overview**\n\nThis Dashboard provides a comprehensive overview of key logs related to transaction events. The dashboard visualizes transaction overviews, refund insights, and other transaction analytics. Additionally, it provide insights related to transactions by currency, merchant account, and payment method.\n\nFor more information, see the [Adyen Integration Documentation](https://docs.datadoghq.com/integrations/adyen/).\n\n**Tips**\n- Use the timeframe selector in the top right of the dashboard to change the default timeframe.\n- Clone this dashboard to rearrange, modify and add widgets and visualizations.", + "background_color": "white", + "font_size": "14", + "text_align": "left", + "vertical_align": "top", + "show_tick": false, + "tick_pos": "50%", + "tick_edge": "left", + "has_padding": true + }, + "layout": { + "x": 0, + "y": 2, + "width": 6, + "height": 4 + } + }, + { + "id": 456217064815528, + "definition": { + "title": "Authorisation and Capture", + "background_color": "vivid_green", + "show_title": true, + "type": "group", + "layout_type": "ordered", + "widgets": [ + { + "id": 6961499151036918, + "definition": { + "title": "Total Transactions", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_green", + "custom_bg_color": "#a3f093" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 0, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 0, + "y": 0, + "width": 3, + "height": 3 + } + }, + { + "id": 1697490278253126, + "definition": { + "title": "Authorised Transactions", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION @notificationItems.NotificationRequestItem.success:true $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_green", + "custom_bg_color": "#84f5e8" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 0, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 3, + "y": 0, + "width": 3, + "height": 3 + } + }, + { + "id": 4348831624447672, + "definition": { + "title": "Unauthorised Transactions", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "response_format": "scalar", + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION @notificationItems.NotificationRequestItem.success:false $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "custom_bg", + "custom_bg_color": "#f3bec4" + } + ], + "formulas": [ + { + "formula": "query1" + } + ] + } + ], + "autoscale": true, + "precision": 0, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 6, + "y": 0, + "width": 3, + "height": 3 + } + }, + { + "id": 8735802905445058, + "definition": { + "title": "Cancelled Transactions", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:CANCELLATION $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_yellow", + "custom_bg_color": "#cff08a" + } + ] + } + ], + "autoscale": true, + "precision": 0, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 9, + "y": 0, + "width": 3, + "height": 3 + } + }, + { + "id": 296396547853044, + "definition": { + "title": "Successful Capture Transactions", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:CAPTURE @notificationItems.NotificationRequestItem.success:true $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_green", + "custom_bg_color": "#abaede" + } + ] + } + ], + "autoscale": true, + "precision": 0, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 0, + "y": 3, + "width": 3, + "height": 3 + } + }, + { + "id": 750885913573374, + "definition": { + "title": "Failed Capture Transactions", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:CAPTURE @notificationItems.NotificationRequestItem.success:false $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_red", + "custom_bg_color": "#abaede" + } + ] + } + ], + "autoscale": true, + "precision": 0, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 3, + "y": 3, + "width": 3, + "height": 3 + } + }, + { + "id": 4352217977559220, + "definition": { + "title": "Card Scheme Capture Rejections", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:CAPTURE_FAILED $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_red", + "custom_bg_color": "#bfeaf3" + } + ] + } + ], + "autoscale": true, + "precision": 0, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 6, + "y": 3, + "width": 3, + "height": 3 + } + }, + { + "id": 2566711069376236, + "definition": { + "title": "Externally Handled Transactions", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:HANDLED_EXTERNALLY $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_yellow" + } + ] + } + ], + "autoscale": true, + "precision": 0, + "timeseries_background": { + "yaxis": { + "include_zero": true + }, + "type": "area" + } + }, + "layout": { + "x": 9, + "y": 3, + "width": 3, + "height": 3 + } + }, + { + "id": 651378961103242, + "definition": { + "title": "Top Reasons for Unauthorized Transactions", + "title_size": "16", + "title_align": "left", + "type": "toplist", + "requests": [ + { + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.reason", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION @notificationItems.NotificationRequestItem.success:false $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "white_on_red" + } + ], + "formulas": [ + { + "formula": "query1" + } + ], + "sort": { + "count": 10, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + } + } + ], + "style": { + "display": { + "type": "stacked", + "legend": "automatic" + } + } + }, + "layout": { + "x": 0, + "y": 6, + "width": 6, + "height": 4 + } + }, + { + "id": 2492046748209724, + "definition": { + "title": "Top Reasons for Failed Capture Transactions", + "title_size": "16", + "title_align": "left", + "type": "toplist", + "requests": [ + { + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.reason", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:transaction @evt.name:CAPTURE @notificationItems.NotificationRequestItem.success:false $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "white_on_red" + } + ], + "formulas": [ + { + "formula": "query1" + } + ], + "sort": { + "count": 10, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + } + } + ], + "style": { + "display": { + "type": "stacked", + "legend": "automatic" + } + } + }, + "layout": { + "x": 6, + "y": 6, + "width": 6, + "height": 4 + } + }, + { + "id": 8289074476620792, + "definition": { + "title": "Authorised and Unauthorised Transaction Logs over Time", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "alias": "Authorised", + "style": { + "palette": "green", + "palette_index": 4 + }, + "formula": "query1" + }, + { + "alias": "Unauthorised", + "style": { + "palette": "warm", + "palette_index": 4 + }, + "formula": "query2" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION @notificationItems.NotificationRequestItem.success:true $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + }, + { + "data_source": "logs", + "name": "query2", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION @notificationItems.NotificationRequestItem.success:false $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "order_by": "values", + "order_reverse": false, + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ], + "yaxis": { + "include_zero": true, + "scale": "linear", + "min": "auto" + } + }, + "layout": { + "x": 0, + "y": 10, + "width": 12, + "height": 4 + } + }, + { + "id": 7373601600498598, + "definition": { + "title": "Captured Transaction Logs over Time", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "alias": "Successful Captures", + "style": { + "palette": "green", + "palette_index": 4 + }, + "formula": "query1" + }, + { + "alias": "Card Scheme Capture Rejections", + "style": { + "palette": "orange", + "palette_index": 4 + }, + "formula": "query2" + }, + { + "alias": "Failed Captures", + "style": { + "palette": "warm", + "palette_index": 4 + }, + "formula": "query3" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:CAPTURE @notificationItems.NotificationRequestItem.success:true $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + }, + { + "data_source": "logs", + "name": "query2", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:CAPTURE_FAILED $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + }, + { + "data_source": "logs", + "name": "query3", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:CAPTURE @notificationItems.NotificationRequestItem.success:false $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "order_by": "values", + "order_reverse": false, + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ], + "yaxis": { + "include_zero": true, + "scale": "linear", + "min": "auto" + } + }, + "layout": { + "x": 0, + "y": 14, + "width": 12, + "height": 4 + } + } + ] + }, + "layout": { + "x": 0, + "y": 6, + "width": 12, + "height": 19 + } + }, + { + "id": 5472163624460398, + "definition": { + "title": "Refund Transactions", + "background_color": "vivid_green", + "show_title": true, + "type": "group", + "layout_type": "ordered", + "widgets": [ + { + "id": 7563511495707992, + "definition": { + "title": "Successful Refunds", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:REFUND @notificationItems.NotificationRequestItem.success:true $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_green", + "custom_bg_color": "#b0ae73" + } + ] + } + ], + "autoscale": true, + "precision": 0 + }, + "layout": { + "x": 0, + "y": 0, + "width": 4, + "height": 3 + } + }, + { + "id": 4040977939989402, + "definition": { + "title": "Reversed Refunds", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:REFUNDED_REVERSED $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_yellow", + "custom_bg_color": "#f5d0b8" + } + ] + } + ], + "autoscale": true, + "precision": 0 + }, + "layout": { + "x": 4, + "y": 0, + "width": 4, + "height": 3 + } + }, + { + "id": 5494881480544940, + "definition": { + "title": "Cancel or Refund Transactions", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:CANCEL_OR_REFUND $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_yellow", + "custom_bg_color": "#a5e0ee" + } + ] + } + ], + "autoscale": true, + "precision": 0 + }, + "layout": { + "x": 8, + "y": 0, + "width": 4, + "height": 3 + } + }, + { + "id": 4771099778664500, + "definition": { + "title": "Top Reasons for Failed Refund Transactions", + "title_size": "16", + "title_align": "left", + "type": "toplist", + "requests": [ + { + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.reason", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:transaction @evt.name:REFUND @notificationItems.NotificationRequestItem.success:false $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "white_on_red" + } + ], + "formulas": [ + { + "formula": "query1" + } + ], + "sort": { + "count": 10, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + } + } + ], + "style": { + "display": { + "type": "stacked", + "legend": "automatic" + } + } + }, + "layout": { + "x": 0, + "y": 3, + "width": 9, + "height": 4 + } + }, + { + "id": 4979038803851076, + "definition": { + "title": "Failed Refunds", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:REFUND @notificationItems.NotificationRequestItem.success:false $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_red", + "custom_bg_color": "#b0ae73" + } + ] + } + ], + "autoscale": true, + "precision": 0 + }, + "layout": { + "x": 9, + "y": 3, + "width": 3, + "height": 2 + } + }, + { + "id": 675396501883988, + "definition": { + "title": "Card Scheme Refund Rejections", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:REFUND_FAILED $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_red", + "custom_bg_color": "#ede3b1" + } + ] + } + ], + "autoscale": true, + "precision": 0 + }, + "layout": { + "x": 9, + "y": 5, + "width": 3, + "height": 2 + } + }, + { + "id": 451265545877860, + "definition": { + "title": "Refund Transactions over Time", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "auto", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "style": { + "palette": "green", + "palette_index": 4 + }, + "alias": "Successful Refunds", + "formula": "query1" + }, + { + "style": { + "palette": "warm", + "palette_index": 4 + }, + "alias": "Card Scheme Refund Rejections", + "formula": "query2" + }, + { + "style": { + "palette": "orange", + "palette_index": 4 + }, + "alias": "Reversed Refunds", + "formula": "query3" + }, + { + "style": { + "palette": "classic", + "palette_index": 5 + }, + "alias": "Cancel/Refund Transactions", + "formula": "query4" + }, + { + "style": { + "palette": "classic", + "palette_index": 5 + }, + "alias": "Failed Refunds", + "formula": "query5" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:REFUND @notificationItems.NotificationRequestItem.success:true $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + }, + { + "data_source": "logs", + "name": "query2", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:REFUND_FAILED $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + }, + { + "data_source": "logs", + "name": "query3", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:REFUNDED_REVERSED $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + }, + { + "data_source": "logs", + "name": "query4", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:CANCEL_OR_REFUND $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + }, + { + "data_source": "logs", + "name": "query5", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:REFUND @notificationItems.NotificationRequestItem.success:false $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "order_by": "values", + "order_reverse": false, + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ], + "yaxis": { + "include_zero": true, + "scale": "linear", + "min": "auto" + } + }, + "layout": { + "x": 0, + "y": 7, + "width": 12, + "height": 4 + } + } + ] + }, + "layout": { + "x": 0, + "y": 25, + "width": 12, + "height": 12 + } + }, + { + "id": 5723766196303778, + "definition": { + "title": "Authorisation Adjustments", + "background_color": "vivid_green", + "show_title": true, + "type": "group", + "layout_type": "ordered", + "widgets": [ + { + "id": 4678060022058734, + "definition": { + "title": "Successful Authorised Adjustments", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION_ADJUSTMENT @notificationItems.NotificationRequestItem.success:true $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_green" + } + ] + } + ], + "autoscale": true, + "precision": 0 + }, + "layout": { + "x": 0, + "y": 0, + "width": 4, + "height": 4 + } + }, + { + "id": 4057284384980950, + "definition": { + "title": "Authorised Adjustments by Merchant Account", + "title_size": "16", + "title_align": "left", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.merchantAccountCode", + "limit": 50, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION_ADJUSTMENT $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "sort": { + "count": 500, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + }, + "style": { + "palette": "datadog16" + } + } + ], + "type": "sunburst", + "legend": { + "type": "table" + } + }, + "layout": { + "x": 4, + "y": 0, + "width": 8, + "height": 4 + } + }, + { + "id": 4653596805177202, + "definition": { + "title": "Failed Authorised Adjustments", + "title_size": "16", + "title_align": "left", + "type": "query_value", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION_ADJUSTMENT @notificationItems.NotificationRequestItem.success:false $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "black_on_light_red" + } + ] + } + ], + "autoscale": true, + "precision": 0 + }, + "layout": { + "x": 0, + "y": 4, + "width": 4, + "height": 4 + } + }, + { + "id": 5598094566475786, + "definition": { + "title": "Top Reasons for Failed Authorised Adjustments", + "title_size": "16", + "title_align": "left", + "type": "toplist", + "requests": [ + { + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.reason", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION_ADJUSTMENT @notificationItems.NotificationRequestItem.success:false $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "conditional_formats": [ + { + "comparator": ">=", + "value": 0, + "palette": "white_on_red" + } + ], + "formulas": [ + { + "formula": "query1" + } + ], + "sort": { + "count": 10, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + } + } + ], + "style": { + "display": { + "type": "stacked", + "legend": "automatic" + } + } + }, + "layout": { + "x": 4, + "y": 4, + "width": 8, + "height": 4 + } + } + ] + }, + "layout": { + "x": 0, + "y": 37, + "width": 12, + "height": 9 + } + }, + { + "id": 5377373309638162, + "definition": { + "title": "Transaction Analytics", + "background_color": "vivid_green", + "show_title": true, + "type": "group", + "layout_type": "ordered", + "widgets": [ + { + "id": 2756476904721266, + "definition": { + "title": "Transactions by Currency", + "title_size": "16", + "title_align": "left", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.amount.currency", + "limit": 15, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "sort": { + "count": 500, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + }, + "style": { + "palette": "datadog16" + } + } + ], + "type": "sunburst", + "legend": { + "type": "table" + } + }, + "layout": { + "x": 0, + "y": 0, + "width": 6, + "height": 4 + } + }, + { + "id": 3219374678265600, + "definition": { + "title": "Transactions by Merchant Account", + "title_size": "16", + "title_align": "left", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.merchantAccountCode", + "limit": 50, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "sort": { + "count": 500, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + }, + "style": { + "palette": "datadog16" + } + } + ], + "type": "sunburst", + "legend": { + "type": "table" + } + }, + "layout": { + "x": 6, + "y": 0, + "width": 6, + "height": 4 + } + }, + { + "id": 4249622615816588, + "definition": { + "title": "Authorised Transactions by Payment Method", + "title_size": "16", + "title_align": "left", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.paymentMethod", + "limit": 50, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION @notificationItems.NotificationRequestItem.success:true $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "sort": { + "count": 500, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + }, + "style": { + "palette": "datadog16" + } + } + ], + "type": "sunburst", + "legend": { + "type": "table" + } + }, + "layout": { + "x": 0, + "y": 4, + "width": 6, + "height": 4 + } + }, + { + "id": 3283450362478202, + "definition": { + "title": "Unauthorised Transactions by Payment Method", + "title_size": "16", + "title_align": "left", + "requests": [ + { + "formulas": [ + { + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "cardinality", + "metric": "@pspReference" + }, + "group_by": [ + { + "facet": "@notificationItems.NotificationRequestItem.paymentMethod", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "cardinality", + "metric": "@pspReference" + } + } + ], + "search": { + "query": "source:adyen service:transaction @evt.name:AUTHORISATION @notificationItems.NotificationRequestItem.success:false $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "scalar", + "sort": { + "count": 500, + "order_by": [ + { + "type": "formula", + "index": 0, + "order": "desc" + } + ] + }, + "style": { + "palette": "datadog16" + } + } + ], + "type": "sunburst", + "legend": { + "type": "table" + } + }, + "layout": { + "x": 6, + "y": 4, + "width": 6, + "height": 4 + } + } + ] + }, + "layout": { + "x": 0, + "y": 46, + "width": 12, + "height": 9 + } + }, + { + "id": 1363938150356684, + "definition": { + "title": "Transaction Logs over Time", + "title_size": "16", + "title_align": "left", + "show_legend": true, + "legend_layout": "horizontal", + "legend_columns": [ + "avg", + "min", + "max", + "value", + "sum" + ], + "type": "timeseries", + "requests": [ + { + "formulas": [ + { + "alias": "Transaction Logs", + "formula": "query1" + } + ], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": [ + "*" + ], + "compute": { + "aggregation": "count" + }, + "group_by": [ + { + "facet": "@evt.name", + "limit": 10, + "sort": { + "order": "desc", + "aggregation": "count" + } + } + ], + "search": { + "query": "source:adyen service:transaction $MerchantAccount $PaymentMethod $Currency" + }, + "storage": "hot" + } + ], + "response_format": "timeseries", + "style": { + "palette": "datadog16", + "order_by": "values", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + } + ] + }, + "layout": { + "x": 0, + "y": 0, + "width": 12, + "height": 4 + } + }, + { + "id": 2473521832667872, + "definition": { + "title": "Transaction Logs", + "title_size": "16", + "title_align": "left", + "time": { + "hide_incomplete_cost_data": true + }, + "requests": [ + { + "response_format": "event_list", + "query": { + "data_source": "logs_stream", + "query_string": "source:adyen service:transaction $MerchantAccount $PaymentMethod $Currency ", + "indexes": [], + "storage": "hot" + }, + "columns": [ + { + "field": "status_line", + "width": "auto" + }, + { + "field": "timestamp", + "width": "auto" + }, + { + "field": "service", + "width": "auto" + }, + { + "field": "content", + "width": "auto" + } + ] + } + ], + "type": "list_stream" + }, + "layout": { + "x": 0, + "y": 4, + "width": 12, + "height": 4 + } + } + ], + "template_variables": [ + { + "name": "MerchantAccount", + "prefix": "@notificationItems.NotificationRequestItem.merchantAccountCode", + "available_values": [], + "default": "*" + }, + { + "name": "PaymentMethod", + "prefix": "@notificationItems.NotificationRequestItem.paymentMethod", + "available_values": [], + "default": "*" + }, + { + "name": "Currency", + "prefix": "@notificationItems.NotificationRequestItem.amount.currency", + "available_values": [], + "default": "*" + } + ], + "layout_type": "ordered", + "notify_list": [], + "reflow_type": "fixed" +} \ No newline at end of file diff --git a/adyen/assets/logs/adyen.yaml b/adyen/assets/logs/adyen.yaml new file mode 100644 index 0000000000000..30eaaf3f84b3f --- /dev/null +++ b/adyen/assets/logs/adyen.yaml @@ -0,0 +1,83 @@ +id: adyen +metric_id: adyen +backend_only: false +facets: + - groups: + - Event + name: Event Name + path: evt.name + source: log +pipeline: + type: pipeline + name: Adyen + enabled: true + filter: + query: "source:adyen" + processors: + - type: string-builder-processor + name: Map `notificationItems.NotificationRequestItem.eventCode` to `evt.name` + enabled: true + template: "%{notificationItems.NotificationRequestItem.eventCode}" + target: evt.name + replaceMissing: false + - type: string-builder-processor + name: Map `notificationItems.NotificationRequestItem.eventDate` to `eventDate` + enabled: true + template: "%{notificationItems.NotificationRequestItem.eventDate}" + target: eventDate + replaceMissing: false + - type: string-builder-processor + name: Map `notificationItems.NotificationRequestItem.pspReference` to + `pspReference` + enabled: true + template: "%{notificationItems.NotificationRequestItem.pspReference}" + target: pspReference + replaceMissing: false + - type: date-remapper + name: Define `eventDate` as the official date of the log + enabled: true + sources: + - eventDate + - name: Lookup for `evt.name` to `service` + enabled: true + source: evt.name + target: service + lookupTable: |- + AUTHORISATION, transaction + AUTHORISATION_ADJUSTMENT, transaction + AUTORESCUE, transaction + CANCEL_AUTORESCUE, transaction + CANCEL_OR_REFUND, transaction + CANCELLATION, transaction + CAPTURE, transaction + CAPTURE_FAILED, transaction + CHARGEBACK, dispute + CHARGEBACK_REVERSED, dispute + HANDLED_EXTERNALLY, transaction + NOTIFICATION_OF_CHARGEBACK, dispute + NOTIFICATION_OF_FRAUD, dispute + ORDER_CLOSED, transaction + ORDER_OPENED, transaction + PAIDOUT_REVERSED, payout + PAYOUT_DECLINE, payout + PAYOUT_EXPIRE, payout + PAYOUT_THIRDPARTY, payout + PENDING, transaction + POSTPONED_REFUND, transaction + PREARBITRATION_LOST, dispute + PREARBITRATION_WON, dispute + REFUND, transaction + REFUND_FAILED, transaction + REFUND_WITH_DATA, transaction + REFUNDED_REVERSED, transaction + REPORT_AVAILABLE, transaction + REQUEST_FOR_INFORMATION, dispute + SECOND_CHARGEBACK, dispute + TECHNICAL_CANCEL, transaction + VOID_PENDING_REFUND, transaction + type: lookup-processor + - type: service-remapper + name: Define `service` as the official service of the log + enabled: true + sources: + - service \ No newline at end of file diff --git a/adyen/assets/logs/adyen_tests.yaml b/adyen/assets/logs/adyen_tests.yaml new file mode 100644 index 0000000000000..43b004fa78a77 --- /dev/null +++ b/adyen/assets/logs/adyen_tests.yaml @@ -0,0 +1,261 @@ +id: adyen +tests: + - sample: |- + { + "notificationItems": [ + { + "NotificationRequestItem": { + "eventCode": "AUTHORISATION", + "merchantAccountCode": "ABCD123", + "reason": "1234:7777:12/2012", + "amount": { + "currency": "EUR", + "value": 101 + }, + "operations": [ + "CANCEL", + "CAPTURE", + "REFUND" + ], + "success": "true", + "paymentMethod": "visa", + "additionalData": { + "expiryDate": "12/2012", + "authCode": "1234", + "cardSummary": "7777", + "totalFraudScore": "10", + "hmacSignature": "snUIAaCX6vgmaF4vr65BYPyvl4D9QX1VICKbpBXD8=", + "NAME2": "VALUE2", + "NAME1": "VALUE1", + "fraudCheck-6-ShopperIpUsage": "10" + }, + "merchantReference": "8313840770001", + "pspReference": "PB5FVSKW5N6DN65", + "eventDate": "2024-09-24T14:47:01+02:00" + } + } + ], + "live": "true" + } + service: "transaction" + result: + custom: + eventDate: "2024-09-24T14:47:01+02:00" + evt: + name: "AUTHORISATION" + live: "true" + notificationItems: + - + NotificationRequestItem: + eventCode: "AUTHORISATION" + merchantAccountCode: "ABCD123" + reason: "1234:7777:12/2012" + amount: + currency: "EUR" + value: 101 + operations: + - "CANCEL" + - "CAPTURE" + - "REFUND" + success: "true" + paymentMethod: "visa" + additionalData: + expiryDate: "12/2012" + authCode: "1234" + cardSummary: "7777" + totalFraudScore: "10" + hmacSignature: "snUIAaCX6vgmaF4vr65BYPyvl4D9QX1VICKbpBXD8=" + NAME2: "VALUE2" + NAME1: "VALUE1" + fraudCheck-6-ShopperIpUsage: "10" + merchantReference: "8313840770001" + pspReference: "PB5FVSKW5N6DN65" + eventDate: "2024-09-24T14:47:01+02:00" + pspReference: "PB5FVSKW5N6DN65" + service: "transaction" + message: |- + { + "notificationItems" : [ { + "NotificationRequestItem" : { + "eventCode" : "AUTHORISATION", + "merchantAccountCode" : "ABCD123", + "reason" : "1234:7777:12/2012", + "amount" : { + "currency" : "EUR", + "value" : 101 + }, + "operations" : [ "CANCEL", "CAPTURE", "REFUND" ], + "success" : "true", + "paymentMethod" : "visa", + "additionalData" : { + "expiryDate" : "12/2012", + "authCode" : "1234", + "cardSummary" : "7777", + "totalFraudScore" : "10", + "hmacSignature" : "snUIAaCX6vgmaF4vr65BYPyvl4D9QX1VICKbpBXD8=", + "NAME2" : "VALUE2", + "NAME1" : "VALUE1", + "fraudCheck-6-ShopperIpUsage" : "10" + }, + "merchantReference" : "8313840770001", + "pspReference" : "PB5FVSKW5N6DN65", + "eventDate" : "2024-09-24T14:47:01+02:00" + } + } ], + "live" : "true" + } + service: "transaction" + tags: + - "source:LOGS_SOURCE" + timestamp: 1727182021000 + - sample: |- + { + "notificationItems": [ + { + "NotificationRequestItem": { + "eventCode": "PAYOUT_THIRDPARTY", + "merchantAccountCode": "ABCD123", + "originalReference": "pspReference of the PAYOUT_THIRDPARTY", + "reason": "", + "amount": { + "currency": "EUR", + "value": 0 + }, + "success": "true", + "additionalData": { + "hmacSignature": "moFrJq/s/SzE8devOIm2EYFaEQQsRWHp8e4OdwB5Y=" + }, + "merchantReference": "testMerchantRf1", + "pspReference": "HVC6JNTJW3DV65", + "eventDate": "2024-09-24T14:48:29+02:00" + } + } + ], + "live": "true" + } + service: "payout" + result: + custom: + eventDate: "2024-09-24T14:48:29+02:00" + evt: + name: "PAYOUT_THIRDPARTY" + live: "true" + notificationItems: + - + NotificationRequestItem: + eventCode: "PAYOUT_THIRDPARTY" + merchantAccountCode: "ABCD123" + originalReference: "pspReference of the PAYOUT_THIRDPARTY" + reason: "" + amount: + currency: "EUR" + value: 0 + success: "true" + additionalData: + hmacSignature: "moFrJq/s/SzE8devOIm2EYFaEQQsRWHp8e4OdwB5Y=" + merchantReference: "testMerchantRf1" + pspReference: "HVC6JNTJW3DV65" + eventDate: "2024-09-24T14:48:29+02:00" + pspReference: "HVC6JNTJW3DV65" + service: "payout" + message: |- + { + "notificationItems" : [ { + "NotificationRequestItem" : { + "eventCode" : "PAYOUT_THIRDPARTY", + "merchantAccountCode" : "ABCD123", + "originalReference" : "pspReference of the PAYOUT_THIRDPARTY", + "reason" : "", + "amount" : { + "currency" : "EUR", + "value" : 0 + }, + "success" : "true", + "additionalData" : { + "hmacSignature" : "moFrJq/s/SzE8devOIm2EYFaEQQsRWHp8e4OdwB5Y=" + }, + "merchantReference" : "testMerchantRf1", + "pspReference" : "HVC6JNTJW3DV65", + "eventDate" : "2024-09-24T14:48:29+02:00" + } + } ], + "live" : "true" + } + service: "payout" + tags: + - "source:LOGS_SOURCE" + timestamp: 1727182109000 + - sample: |- + { + "notificationItems": [ + { + "NotificationRequestItem": { + "eventCode": "CHARGEBACK", + "merchantAccountCode": "ABCD123", + "reason": "", + "amount": { + "currency": "EUR", + "value": 0 + }, + "success": "true", + "additionalData": { + "hmacSignature": "jJgfaV99ZVYh/AIigUxaNKIMwsK2cWzA+7qqUWaeA=" + }, + "merchantReference": "testMrchantRef1", + "pspReference": "HHCPTJW39ZDV65", + "eventDate": "2024-09-24T14:49:59+02:00" + } + } + ], + "live": "true" + } + service: "dispute" + result: + custom: + eventDate: "2024-09-24T14:49:59+02:00" + evt: + name: "CHARGEBACK" + live: "true" + notificationItems: + - + NotificationRequestItem: + eventCode: "CHARGEBACK" + merchantAccountCode: "ABCD123" + reason: "" + amount: + currency: "EUR" + value: 0 + success: "true" + additionalData: + hmacSignature: "jJgfaV99ZVYh/AIigUxaNKIMwsK2cWzA+7qqUWaeA=" + merchantReference: "testMrchantRef1" + pspReference: "HHCPTJW39ZDV65" + eventDate: "2024-09-24T14:49:59+02:00" + pspReference: "HHCPTJW39ZDV65" + service: "dispute" + message: |- + { + "notificationItems" : [ { + "NotificationRequestItem" : { + "eventCode" : "CHARGEBACK", + "merchantAccountCode" : "ABCD123", + "reason" : "", + "amount" : { + "currency" : "EUR", + "value" : 0 + }, + "success" : "true", + "additionalData" : { + "hmacSignature" : "jJgfaV99ZVYh/AIigUxaNKIMwsK2cWzA+7qqUWaeA=" + }, + "merchantReference" : "testMrchantRef1", + "pspReference" : "HHCPTJW39ZDV65", + "eventDate" : "2024-09-24T14:49:59+02:00" + } + } ], + "live" : "true" + } + service: "dispute" + tags: + - "source:LOGS_SOURCE" + timestamp: 1727182199000 \ No newline at end of file diff --git a/adyen/assets/monitors/expired_payout_detected.json b/adyen/assets/monitors/expired_payout_detected.json new file mode 100644 index 0000000000000..755c76c5cd52a --- /dev/null +++ b/adyen/assets/monitors/expired_payout_detected.json @@ -0,0 +1,37 @@ +{ + "version": 2, + "created_at": "2024-09-24", + "last_updated_at": "2024-09-24", + "title": "Expired payout detected", + "description": "Expired payouts occur when payout requests are not processed within the designated timeframe, potentially disrupting disbursements and delaying fund transfers. This monitor tracks and alerts on such events, ensuring timely action to maintain operational efficiency.", + "definition": { + "id": 154507628, + "name": "Expired payout detected", + "type": "log alert", + "query": "logs(\"source:adyen service:payout @evt.name:PAYOUT_EXPIRE\").index(\"*\").rollup(\"count\").by(\"@pspReference\").last(\"5m\") > 0", + "message": "{{#is_alert}}\nExpired payouts refer to payout requests that were not processed within the allowed time frame, leading to a failure in completing the transaction.\n\nExpired payout has been detected with pspReference {{log.attributes.pspReference}}, which could impact timely disbursements and may cause delays in fund transfers. This requires immediate attention to ensure smooth operations.\n{{/is_alert}}", + "tags": [ + "source:adyen", + "service:payout" + ], + "options": { + "thresholds": { + "critical": 0 + }, + "enable_logs_sample": false, + "notify_audit": false, + "on_missing_data": "default", + "include_tags": false, + "new_group_delay": 0, + "groupby_simple_monitor": false, + "silenced": {} + }, + "priority": null, + "restriction_policy": { + "bindings": [] + } + }, + "tags": [ + "integration:adyen" + ] +} \ No newline at end of file diff --git a/adyen/assets/monitors/failed_capture_detected_due_to_a_rejection_by_the_card_scheme.json b/adyen/assets/monitors/failed_capture_detected_due_to_a_rejection_by_the_card_scheme.json new file mode 100644 index 0000000000000..55ba135efea33 --- /dev/null +++ b/adyen/assets/monitors/failed_capture_detected_due_to_a_rejection_by_the_card_scheme.json @@ -0,0 +1,37 @@ +{ + "version": 2, + "created_at": "2024-09-26", + "last_updated_at": "2024-09-26", + "title": "Failed capture detected due to a rejection by the card scheme", + "description": "This monitor tracks and alerts for failed captures caused by a rejection from the card scheme. These failures occur when payments cannot be secured, typically due to issues with the card issuer or network, and require prompt investigation to prevent payment processing disruptions.", + "definition": { + "id": 154282075, + "name": "Failed capture detected due to a rejection by the card scheme", + "type": "log alert", + "query": "logs(\"source:adyen service:transaction @evt.name:CAPTURE_FAILED\").index(\"*\").rollup(\"count\").by(\"@pspReference\").last(\"5m\") > 0", + "message": "{{#is_alert}}\nFailed capture due to card scheme refers to a failure in the transaction capture process, where the payment from the customer's card could not be secured, typically due to problems with the card issuer or network.\n\nThis requires prompt investigation (pspReference:{{log.attributes.pspReference}}) to avoid disruption in payment processing.\n{{/is_alert}}", + "tags": [ + "source:adyen", + "service:transaction" + ], + "options": { + "thresholds": { + "critical": 0 + }, + "enable_logs_sample": false, + "notify_audit": false, + "on_missing_data": "default", + "include_tags": false, + "new_group_delay": 0, + "groupby_simple_monitor": false, + "silenced": {} + }, + "priority": null, + "restriction_policy": { + "bindings": [] + } + }, + "tags": [ + "integration:adyen" + ] +} \ No newline at end of file diff --git a/adyen/assets/monitors/failed_refund_detected_due_to_a_rejection_by_the_card_scheme.json b/adyen/assets/monitors/failed_refund_detected_due_to_a_rejection_by_the_card_scheme.json new file mode 100644 index 0000000000000..018495f29780d --- /dev/null +++ b/adyen/assets/monitors/failed_refund_detected_due_to_a_rejection_by_the_card_scheme.json @@ -0,0 +1,37 @@ +{ + "version": 2, + "created_at": "2024-09-26", + "last_updated_at": "2024-09-26", + "title": "Failed refund detected due to a rejection by the card scheme", + "description": "Failed refunds occur when card networks, such as Visa or Mastercard, reject refund requests, preventing funds from being returned to customers. This monitor tracks such failures to ensure prompt investigation and resolution, maintaining timely refunds and customer satisfaction.", + "definition": { + "id": 154211495, + "name": "Failed refund detected due to a rejection by the card scheme", + "type": "log alert", + "query": "logs(\"source:adyen service:transaction @evt.name:REFUND_FAILED\").index(\"*\").rollup(\"count\").by(\"@pspReference\").last(\"5m\") > 0", + "message": "{{#is_alert}}Failed refund due to a rejection by the card scheme refers to the failure of a refund transaction caused by an issue with the card scheme, which is the network that processes credit and debit card payments (such as Visa or Mastercard). This means the card network could not process the refund and further action is required\n\nPlease investigate the transaction details (pspReference: {{log.attributes.pspReference}}) and resolve the issue to ensure timely refunds and avoid potential customer dissatisfaction.{{/is_alert}}", + "tags": [ + "source:adyen", + "service:transaction" + ], + "options": { + "thresholds": { + "critical": 0 + }, + "enable_logs_sample": false, + "notify_audit": false, + "on_missing_data": "default", + "include_tags": false, + "new_group_delay": 0, + "groupby_simple_monitor": false, + "silenced": {} + }, + "priority": null, + "restriction_policy": { + "bindings": [] + } + }, + "tags": [ + "integration:adyen" + ] +} \ No newline at end of file diff --git a/adyen/assets/monitors/high_number_of_declined_payouts_detected.json b/adyen/assets/monitors/high_number_of_declined_payouts_detected.json new file mode 100644 index 0000000000000..0d84f51bfc21b --- /dev/null +++ b/adyen/assets/monitors/high_number_of_declined_payouts_detected.json @@ -0,0 +1,37 @@ +{ + "version": 2, + "created_at": "2024-09-26", + "last_updated_at": "2024-09-26", + "title": "High number of declined payouts detected", + "description": "Declined payouts occur when disbursement requests are rejected due to issues such as invalid bank details, insufficient funds, or compliance failures. This monitor tracks declined payouts exceeding the threshold to ensure timely action and prevent operational delays.", + "definition": { + "id": 154507580, + "name": "High number of declined payouts detected", + "type": "log alert", + "query": "logs(\"source:adyen service:payout @evt.name:PAYOUT_DECLINE\").index(\"*\").rollup(\"cardinality\", \"@pspReference\").last(\"1d\") > 10", + "message": "{{#is_alert}}\nDeclined payouts occurs when a payout request is rejected due to issues like invalid bank details, insufficient funds, or compliance failures.\n\nThe number of declined payouts have exceeded the threshold, which could impact timely disbursements and may cause delays in fund transfers. This requires immediate attention to ensure smooth operations.\n{{/is_alert}}", + "tags": [ + "source:adyen", + "service:payout" + ], + "options": { + "thresholds": { + "critical": 10 + }, + "enable_logs_sample": false, + "notify_audit": false, + "on_missing_data": "default", + "include_tags": false, + "new_host_delay": 300, + "groupby_simple_monitor": false, + "silenced": {} + }, + "priority": null, + "restriction_policy": { + "bindings": [] + } + }, + "tags": [ + "integration:adyen" + ] +} \ No newline at end of file diff --git a/adyen/assets/monitors/high_number_of_failed_captures_detected.json b/adyen/assets/monitors/high_number_of_failed_captures_detected.json new file mode 100644 index 0000000000000..67568d4bf87b2 --- /dev/null +++ b/adyen/assets/monitors/high_number_of_failed_captures_detected.json @@ -0,0 +1,37 @@ +{ + "version": 2, + "created_at": "2024-09-26", + "last_updated_at": "2024-09-26", + "title": "High number of failed captures detected", + "description": "Failed captures occur when authorized funds cannot be collected, often due to issues with the payment method or card issuer. This monitor tracks capture failures to ensure prompt action and prevent disruptions in transaction processing.", + "definition": { + "id": 154605619, + "name": "High number of failed captures detected", + "type": "log alert", + "query": "logs(\"source:adyen service:transaction @evt.name:CAPTURE @notificationItems.NotificationRequestItem.success:false\").index(\"*\").rollup(\"cardinality\", \"@pspReference\").last(\"1d\") > 10", + "message": "{{#is_alert}}Failed capture refers to a transaction for which the funds that were authorized could not be successfully taken from the customer's account, typically due to issues with the payment method or card issuer.\n\nImmediate attention is required to resolve the issue and ensure the transaction completes successfully.{{/is_alert}}", + "tags": [ + "source:adyen", + "service:transaction" + ], + "options": { + "thresholds": { + "critical": 10 + }, + "enable_logs_sample": false, + "notify_audit": false, + "on_missing_data": "default", + "include_tags": false, + "new_host_delay": 300, + "groupby_simple_monitor": false, + "silenced": {} + }, + "priority": null, + "restriction_policy": { + "bindings": [] + } + }, + "tags": [ + "integration:adyen" + ] +} \ No newline at end of file diff --git a/adyen/assets/monitors/high_number_of_failed_payout_requests_detected.json b/adyen/assets/monitors/high_number_of_failed_payout_requests_detected.json new file mode 100644 index 0000000000000..4567c21a5d8d1 --- /dev/null +++ b/adyen/assets/monitors/high_number_of_failed_payout_requests_detected.json @@ -0,0 +1,37 @@ +{ + "version": 2, + "created_at": "2024-09-26", + "last_updated_at": "2024-09-26", + "title": "High number of failed payout requests detected", + "description": "Failed payout requests occur when disbursement attempts are unsuccessful, potentially causing delays and operational disruptions. This monitor tracks failed payout requests to ensure timely action and maintain efficient operations.", + "definition": { + "id": 154607493, + "name": "High number of failed payout requests detected", + "type": "log alert", + "query": "logs(\"source:adyen service:payout @evt.name:PAYOUT_THIRDPARTY @notificationItems.NotificationRequestItem.success:false\").index(\"*\").rollup(\"cardinality\", \"@pspReference\").last(\"1d\") > 10", + "message": "{{#is_alert}}\n'Failed payout requests' refer to third party payout requests that lead to a failure in completing the transaction. Please review and take action to ensure successful payout processing.\n\nThe failed payout requests have exceeded the threshold, which could impact timely disbursements and may cause delays in fund transfers. This requires immediate attention to ensure smooth operations.\n{{/is_alert}}", + "tags": [ + "source:adyen", + "service:payout" + ], + "options": { + "thresholds": { + "critical": 10 + }, + "enable_logs_sample": false, + "notify_audit": false, + "on_missing_data": "default", + "include_tags": false, + "new_host_delay": 300, + "groupby_simple_monitor": false, + "silenced": {} + }, + "priority": null, + "restriction_policy": { + "bindings": [] + } + }, + "tags": [ + "integration:adyen" + ] +} \ No newline at end of file diff --git a/adyen/assets/monitors/high_number_of_failed_refunds_detected.json b/adyen/assets/monitors/high_number_of_failed_refunds_detected.json new file mode 100644 index 0000000000000..a8eb6088fdf47 --- /dev/null +++ b/adyen/assets/monitors/high_number_of_failed_refunds_detected.json @@ -0,0 +1,37 @@ +{ + "version": 2, + "created_at": "2024-09-26", + "last_updated_at": "2024-09-26", + "title": "High number of failed refunds detected", + "description": "Failed refunds occur when refund attempts cannot be processed, potentially impacting customer satisfaction and trust. This monitor tracks the occurrence of failed refunds to ensure timely resolution and maintain operational efficiency.", + "definition": { + "id": 154602429, + "name": "High number of failed refunds detected", + "type": "log alert", + "query": "logs(\"source:adyen service:transaction @evt.name:REFUND @notificationItems.NotificationRequestItem.success:false\").index(\"*\").rollup(\"cardinality\", \"@pspReference\").last(\"1d\") > 10", + "message": "{{#is_alert}}\nFailed Refund refers that a transaction could not be reversed, possibly due to issues with the payment method, insufficient funds, or card network problems.\n\nA refund attempt was unsuccessful, meaning the funds were not returned to the customer. This issue needs immediate attention to ensure proper resolution and avoid customer dissatisfaction.\n{{/is_alert}}", + "tags": [ + "source:adyen", + "service:transaction" + ], + "options": { + "thresholds": { + "critical": 10 + }, + "enable_logs_sample": false, + "notify_audit": false, + "on_missing_data": "default", + "include_tags": false, + "new_host_delay": 300, + "groupby_simple_monitor": false, + "silenced": {} + }, + "priority": null, + "restriction_policy": { + "bindings": [] + } + }, + "tags": [ + "integration:adyen" + ] +} \ No newline at end of file diff --git a/adyen/assets/monitors/notification_of_chargeback.json b/adyen/assets/monitors/notification_of_chargeback.json new file mode 100644 index 0000000000000..c73de74afe682 --- /dev/null +++ b/adyen/assets/monitors/notification_of_chargeback.json @@ -0,0 +1,37 @@ +{ + "version": 2, + "created_at": "2024-09-26", + "last_updated_at": "2024-09-26", + "title": "Notification of Chargeback", + "description": "Chargeback notifications indicate disputes filed by issuing banks, requiring immediate action to review the case and compile evidence for resolution. This monitor tracks chargeback notifications to ensure timely awareness and response.", + "definition": { + "id": 154206380, + "name": "Notification of Chargeback", + "type": "log alert", + "query": "logs(\"source:adyen service:dispute @evt.name:NOTIFICATION_OF_CHARGEBACK\").index(\"*\").rollup(\"count\").by(\"@pspReference\").last(\"5m\") > 0", + "message": "{{#is_alert}}\nA Notification of Chargeback is the notification Adyen sends as soon as it is known that a dispute has been filed by the issuing bank\n\nA notification of chargeback has been detected for pspReference {{log.attributes.pspReference}}. Immediate attention is required to begin reviewing the case and compiling evidence for a defense in preparation of the upcoming Chargeback.\n{{/is_alert}}", + "tags": [ + "source:adyen", + "service:dispute" + ], + "options": { + "thresholds": { + "critical": 0 + }, + "enable_logs_sample": false, + "notify_audit": false, + "on_missing_data": "default", + "include_tags": false, + "new_group_delay": 0, + "groupby_simple_monitor": false, + "silenced": {} + }, + "priority": null, + "restriction_policy": { + "bindings": [] + } + }, + "tags": [ + "integration:adyen" + ] +} \ No newline at end of file diff --git a/adyen/assets/monitors/notification_of_fraud.json b/adyen/assets/monitors/notification_of_fraud.json new file mode 100644 index 0000000000000..9c840894abeea --- /dev/null +++ b/adyen/assets/monitors/notification_of_fraud.json @@ -0,0 +1,37 @@ +{ + "version": 2, + "created_at": "2024-09-26", + "last_updated_at": "2024-09-26", + "title": "Notification of Fraud", + "description": "Notifications of fraud signal potentially suspicious activities, such as unusual spending patterns or stolen card usage, during payment processing. This monitor tracks potential fraud incidents to ensure prompt investigation and prevent unauthorized transactions.", + "definition": { + "id": 154210471, + "name": "Notification of Fraud", + "type": "log alert", + "query": "logs(\"source:adyen service:dispute @evt.name:NOTIFICATION_OF_FRAUD\").index(\"*\").rollup(\"count\").by(\"@pspReference\").last(\"5m\") > 0", + "message": "{{#is_alert}}\nNotification of Fraud (NoF) is an alert that indicates a potentially fraudulent transaction has been identified by the payment system. This notification is triggered when Adyen detects activities such as unusual spending patterns, stolen card use, or other suspicious behaviors during payment processing. \n\nPotential fraudulent activity has been detected for pspReference {{log.attributes.pspReference}}. Immediate investigation is required to verify the legitimacy of the transactions and prevent unauthorized activity.\n{{/is_alert}}", + "tags": [ + "source:adyen", + "service:dispute" + ], + "options": { + "thresholds": { + "critical": 0 + }, + "enable_logs_sample": false, + "notify_audit": false, + "on_missing_data": "default", + "include_tags": false, + "new_group_delay": 0, + "groupby_simple_monitor": false, + "silenced": {} + }, + "priority": null, + "restriction_policy": { + "bindings": [] + } + }, + "tags": [ + "integration:adyen" + ] +} \ No newline at end of file diff --git a/adyen/assets/monitors/second_chargeback_detected.json b/adyen/assets/monitors/second_chargeback_detected.json new file mode 100644 index 0000000000000..41bcfa9ec1fd5 --- /dev/null +++ b/adyen/assets/monitors/second_chargeback_detected.json @@ -0,0 +1,37 @@ +{ + "version": 2, + "created_at": "2024-09-26", + "last_updated_at": "2024-09-26", + "title": "Second Chargeback detected", + "description": "Second chargebacks occur when the issuer rejects the defense or Adyen accepts the pre-arbitration case, marking the final stage of the chargeback process. This monitor tracks the occurrence of second chargebacks to ensure timely awareness and prompt action to address these cases effectively.", + "definition": { + "id": 154586409, + "name": "Second Chargeback detected", + "type": "log alert", + "query": "logs(\"source:adyen service:dispute @evt.name:SECOND_CHARGEBACK\").index(\"*\").rollup(\"count\").by(\"@pspReference\").last(\"5m\") > 0", + "message": "{{#is_alert}}\nSecond chargeback refers to an alert from Adyen indicating that the issuer declined the defense, or Adyen accepted their pre-arbitration case. Defense documents can not be uploaded as this is the final stage.\n\nA second chargeback has been initiated for pspReference {{log.attributes.pspReference}}. Please take necessary action accordingly.\n{{/is_alert}}", + "tags": [ + "source:adyen", + "service:dispute" + ], + "options": { + "thresholds": { + "critical": 0 + }, + "enable_logs_sample": false, + "notify_audit": false, + "on_missing_data": "default", + "include_tags": false, + "new_group_delay": 0, + "groupby_simple_monitor": false, + "silenced": {} + }, + "priority": null, + "restriction_policy": { + "bindings": [] + } + }, + "tags": [ + "integration:adyen" + ] +} \ No newline at end of file diff --git a/adyen/assets/service_checks.json b/adyen/assets/service_checks.json new file mode 100644 index 0000000000000..fe51488c7066f --- /dev/null +++ b/adyen/assets/service_checks.json @@ -0,0 +1 @@ +[] diff --git a/adyen/images/adyen_disputes.png b/adyen/images/adyen_disputes.png new file mode 100644 index 0000000000000..7e6e0bca9526d Binary files /dev/null and b/adyen/images/adyen_disputes.png differ diff --git a/adyen/images/adyen_payouts.png b/adyen/images/adyen_payouts.png new file mode 100644 index 0000000000000..0fabb82e55c59 Binary files /dev/null and b/adyen/images/adyen_payouts.png differ diff --git a/adyen/images/adyen_transaction_1.png b/adyen/images/adyen_transaction_1.png new file mode 100644 index 0000000000000..461eb64628011 Binary files /dev/null and b/adyen/images/adyen_transaction_1.png differ diff --git a/adyen/images/adyen_transaction_2.png b/adyen/images/adyen_transaction_2.png new file mode 100644 index 0000000000000..15617d2c6c655 Binary files /dev/null and b/adyen/images/adyen_transaction_2.png differ diff --git a/adyen/manifest.json b/adyen/manifest.json new file mode 100644 index 0000000000000..fed4bb224f5c7 --- /dev/null +++ b/adyen/manifest.json @@ -0,0 +1,80 @@ +{ + "manifest_version": "2.0.0", + "app_uuid": "fbf81df6-a556-4ee7-9c50-764bf129b0ec", + "app_id": "adyen", + "display_on_public_website": false, + "tile": { + "overview": "README.md#Overview", + "configuration": "README.md#Setup", + "support": "README.md#Support", + "changelog": "CHANGELOG.md", + "description": "Gain insights into Adyen Transactions, Disputes, and Payouts data", + "title": "Adyen", + "media": [ + { + "media_type": "image", + "caption": "Adyen Transactions", + "image_url": "images/adyen_transaction_1.png" + }, + { + "media_type": "image", + "caption": "Adyen Transactions", + "image_url": "images/adyen_transaction_2.png" + }, + { + "media_type": "image", + "caption": "Adyen Payouts", + "image_url": "images/adyen_payouts.png" + }, + { + "media_type": "image", + "caption": "Adyen Disputes", + "image_url": "images/adyen_disputes.png" + } + ], + "classifier_tags": [ + "Category::Log Collection", + "Submitted Data Type::Logs", + "Offering::Integration" + ] + }, + "assets": { + "integration": { + "auto_install": false, + "source_type_id": 27052339, + "source_type_name": "Adyen", + "events": { + "creates_events": false + }, + "service_checks": { + "metadata_path": "assets/service_checks.json" + } + }, + "dashboards": { + "Adyen Transactions": "assets/dashboards/adyen_transactions.json", + "Adyen Payouts": "assets/dashboards/adyen_payouts.json", + "Adyen Disputes": "assets/dashboards/adyen_disputes.json" + }, + "monitors": { + "Failed refund detected due to a rejection by the card scheme": "assets/monitors/failed_refund_detected_due_to_a_rejection_by_the_card_scheme.json", + "High number of failed refunds detected": "assets/monitors/high_number_of_failed_refunds_detected.json", + "High number of failed captures detected": "assets/monitors/high_number_of_failed_captures_detected.json", + "Failed capture detected due to a rejection by the card scheme": "assets/monitors/failed_capture_detected_due_to_a_rejection_by_the_card_scheme.json", + "High number of failed payout requests detected": "assets/monitors/high_number_of_failed_payout_requests_detected.json", + "Expired payout detected": "assets/monitors/expired_payout_detected.json", + "High number of declined payouts detected": "assets/monitors/high_number_of_declined_payouts_detected.json", + "Notification of Chargeback": "assets/monitors/notification_of_chargeback.json", + "Notification of Fraud": "assets/monitors/notification_of_fraud.json", + "Second Chargeback detected": "assets/monitors/second_chargeback_detected.json" + }, + "logs": { + "source": "adyen" + } + }, + "author": { + "support_email": "help@datadoghq.com", + "name": "Datadog", + "homepage": "https://www.datadoghq.com", + "sales_email": "info@datadoghq.com" + } +}