diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6d6d600ecc..d451442ac3 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -57,6 +57,8 @@ /docontrol/ @lielran @DataDog/ecosystems-review /doctordroid/ @dimittal @DataDog/ecosystems-review /dylibso-webassembly/ @nilslice @bhelx @DataDog/ecosystems-review +/doppler/ @nmanoogian @apazzolini @doppler-admin @DataDog/ecosystems-review +/doppler/assets/logs/ @nmanoogian @apazzolini @doppler-admin @DataDog/ecosystems-review @DataDog/logs-backend /embrace_mobile/ @jpmunz @joage @DataDog/ecosystems-review /eppo/ @emetelka support@geteppo.com /eventstore/ @Xorima diff --git a/doppler/CHANGELOG.md b/doppler/CHANGELOG.md new file mode 100644 index 0000000000..3c0d7333df --- /dev/null +++ b/doppler/CHANGELOG.md @@ -0,0 +1,7 @@ +# CHANGELOG - Doppler + +## 1.0.0 / 2024-09-06 + +**_Added_**: + +* Initial Release diff --git a/doppler/README.md b/doppler/README.md new file mode 100644 index 0000000000..428eab198e --- /dev/null +++ b/doppler/README.md @@ -0,0 +1,73 @@ +# Agent Check: Doppler + +## Overview + +[Doppler][1] is a secrets manager designed with both security and developer productivity in mind. +Doppler allows you to securely store secrets (for example: API keys, database credentials, and other sensitive values) and deliver them to your applications. + +This integration sends Activity Logs from [Doppler][1] to Datadog, allowing you to monitor changes to your workplace. +This includes: + +- Modifications to projects, environments, and secrets +- Changes to your team, including new members, role changes, and removals +- Changes to workplace settings, including integrations and security features + +Doppler does not collect any data from your Datadog account. + +## Setup + +### Installation + +1. Click **Connect Accounts** on the Doppler integration tile to connect Datadog with Doppler. +2. Log into Doppler or create an account if you have not already. +3. Select the Doppler workplace that you would like to configure. This step will automatically be skipped if you only have one workplace. +4. Click **Settings** to navigate to your workplace settings. +5. Under **Logging Services** > **Datadog**, click **Connect**. +6. Choose your Datadog site from the Dropdown. +7. Log into Datadog. This step will be skipped if you are already signed in. +8. Review the Datadog permissions that will be granted to Doppler and click **Authorize**. + +Once the installation is complete, Doppler Activity Logs will automatically start flowing to Datadog. + +### Configuration + +The integration will automatically send all Doppler Activity Logs to Datadog, no further configuration is available at this time. + +### Validation + +During installation, Doppler creates a test log to verify that the installed credentials work properly. Verify that this test log is present in your logs to verify the installation. + +## Data Collected + +Doppler does not collect any information from your Datadog account. + +### Uninstallation + +- Go to your [Doppler workplace settings][4] and disconnect the Datadog integration +- Remove all API keys associated with this integration by searching for the integration name on the [Datadog API Keys page][5]. + +### Metrics + +Doppler does not report any metrics. + +### Service Checks + +Doppler does not provide any service checks. + +### Logs + +Doppler creates a log for every entry in your workplace's [Doppler Activity Log][2]. The type of log, as well as any associated log parameters, will be included in the payload. + +### Events + +Doppler does not produce any Datadog events. + +## Troubleshooting + +Need help? Contact [Doppler support][3]. + +[1]: https://www.doppler.com +[2]: https://docs.doppler.com/docs/workplace-logs +[3]: https://support.doppler.com +[4]: https://dashboard.doppler.com/workplace/settings +[5]: https://app.datadoghq.com/organization-settings/api-keys diff --git a/doppler/assets/configuration/spec.yaml b/doppler/assets/configuration/spec.yaml new file mode 100644 index 0000000000..447f6dc3eb --- /dev/null +++ b/doppler/assets/configuration/spec.yaml @@ -0,0 +1,10 @@ +name: Doppler +files: +- name: doppler.yaml + options: + - template: init_config + options: + - template: init_config/default + - template: instances + options: + - template: instances/default diff --git a/doppler/assets/dashboards/doppler_overview.json b/doppler/assets/dashboards/doppler_overview.json new file mode 100644 index 0000000000..e781282a84 --- /dev/null +++ b/doppler/assets/dashboards/doppler_overview.json @@ -0,0 +1,242 @@ +{ + "title": "Doppler Dashboard", + "description": "This dashboard provides a high-level overview of your workplace's Doppler activity.\n\nClone this template dashboard to make changes and add your own graph widgets.", + "widgets": [ + { + "id": 2579449116060402, + "definition": { + "type": "image", + "url": "https://www.doppler.com/avatar/doppler_circle_800.png", + "sizing": "contain", + "margin": "md", + "has_background": false, + "has_border": false, + "vertical_align": "center", + "horizontal_align": "center" + }, + "layout": { "x": 0, "y": 0, "width": 2, "height": 3 } + }, + { + "id": 1029719899125074, + "definition": { + "type": "note", + "content": "[Doppler](https://doppler.com) is a secrets manager designed with both security and developer productivity in mind.\n\nThis dashboard provides a high-level overview of your Doppler [Activity Logs](https://docs.doppler.com/docs/workplace-logs), allowing you to identify patterns in:\n\n- Different types of activities\n- Temporal patterns in activities\n- Which users are performing activities\n\nRead the [Doppler Datadog docs](https://docs.doppler.com/docs/datadog) for more information.", + "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": 2, "y": 0, "width": 10, "height": 3 } + }, + { + "id": 4210531550520016, + "definition": { + "title": "Activity Logs by Type", + "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": "@type", + "limit": 10, + "sort": { "order": "desc", "aggregation": "count" } + } + ], + "search": { "query": "source:doppler" }, + "storage": "hot" + } + ], + "response_format": "timeseries", + "style": { + "palette": "datadog16", + "order_by": "values", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "bars" + } + ] + }, + "layout": { "x": 0, "y": 3, "width": 8, "height": 4 } + }, + { + "id": 5108936822527020, + "definition": { + "title": "Activity Log Counts by Type", + "title_size": "16", + "title_align": "left", + "type": "query_table", + "requests": [ + { + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": ["*"], + "compute": { "aggregation": "count" }, + "group_by": [ + { + "facet": "@type", + "limit": 10, + "sort": { "order": "desc", "aggregation": "count" } + } + ], + "search": { "query": "source:doppler" }, + "storage": "hot" + } + ], + "response_format": "scalar", + "sort": { + "count": 10, + "order_by": [{ "type": "formula", "index": 0, "order": "desc" }] + }, + "formulas": [ + { + "cell_display_mode": "bar", + "alias": "Count", + "formula": "query1" + } + ] + } + ], + "has_search_bar": "auto" + }, + "layout": { "x": 8, "y": 3, "width": 4, "height": 4 } + }, + { + "id": 2954602671560148, + "definition": { + "type": "note", + "content": "Break down activity logs by type over time intervals to identify operational usage patterns.", + "background_color": "green", + "font_size": "14", + "text_align": "left", + "vertical_align": "center", + "show_tick": true, + "tick_pos": "50%", + "tick_edge": "top", + "has_padding": true + }, + "layout": { "x": 0, "y": 7, "width": 12, "height": 1 } + }, + { + "id": 788257060754552, + "definition": { + "title": "Activity Logs by Timestamp", + "title_size": "16", + "title_align": "left", + "show_legend": false, + "type": "heatmap", + "requests": [ + { + "formulas": [{ "formula": "query1" }], + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": ["*"], + "compute": { "aggregation": "count" }, + "group_by": [], + "search": { "query": "source:doppler" }, + "storage": "hot" + } + ], + "response_format": "timeseries", + "style": { "palette": "dog_classic" } + } + ] + }, + "layout": { "x": 0, "y": 8, "width": 8, "height": 3 } + }, + { + "id": 7305773172963494, + "definition": { + "title": "Activity Log Counts by User", + "title_size": "16", + "title_align": "left", + "type": "query_table", + "requests": [ + { + "queries": [ + { + "data_source": "logs", + "name": "query1", + "indexes": ["*"], + "compute": { "aggregation": "count" }, + "group_by": [ + { + "facet": "@usr.email", + "limit": 10, + "sort": { "order": "desc", "aggregation": "count" } + } + ], + "search": { "query": "source:doppler" }, + "storage": "hot" + } + ], + "response_format": "scalar", + "sort": { + "count": 10, + "order_by": [{ "type": "formula", "index": 0, "order": "desc" }] + }, + "formulas": [{ "cell_display_mode": "bar", "formula": "query1" }] + } + ], + "has_search_bar": "auto" + }, + "layout": { "x": 8, "y": 8, "width": 4, "height": 3 } + }, + { + "id": 924997396545434, + "definition": { + "type": "note", + "content": "View by timestamp to identify temporal usage patterns.", + "background_color": "green", + "font_size": "14", + "text_align": "left", + "vertical_align": "center", + "show_tick": true, + "tick_pos": "50%", + "tick_edge": "top", + "has_padding": true + }, + "layout": { "x": 0, "y": 11, "width": 8, "height": 1 } + }, + { + "id": 8957740472282574, + "definition": { + "type": "note", + "content": "View by user who completed the Doppler action.", + "background_color": "green", + "font_size": "14", + "text_align": "left", + "vertical_align": "center", + "show_tick": true, + "tick_pos": "50%", + "tick_edge": "top", + "has_padding": true + }, + "layout": { "x": 8, "y": 11, "width": 4, "height": 1 } + } + ], + "template_variables": [], + "layout_type": "ordered", + "notify_list": [], + "reflow_type": "fixed" +} diff --git a/doppler/assets/logs/doppler.yaml b/doppler/assets/logs/doppler.yaml new file mode 100644 index 0000000000..fcbedc9615 --- /dev/null +++ b/doppler/assets/logs/doppler.yaml @@ -0,0 +1,76 @@ +id: doppler +metric_id: doppler +backend_only: false +facets: + - groups: + - User + name: User Name + path: usr.name + source: log + - groups: + - User + name: User Email + path: usr.email + source: log + - groups: + - Event + name: Type + path: type + source: log +pipeline: + type: pipeline + name: Doppler + enabled: true + filter: + query: "source:doppler" + processors: + - type: date-remapper + name: Define `createdAt` as the official date of the log + enabled: true + sources: + - createdAt + - type: message-remapper + name: Define `text` as the official message of the log + enabled: true + sources: + - text + - type: attribute-remapper + name: Map `user.name` to `usr.name` + enabled: true + sources: + - user.name + sourceType: attribute + target: usr.name + targetType: attribute + preserveSource: false + overrideOnConflict: false + - type: attribute-remapper + name: Map `user.email` to `usr.email` + enabled: true + sources: + - user.email + sourceType: attribute + target: usr.email + targetType: attribute + preserveSource: false + overrideOnConflict: false + - type: attribute-remapper + name: Map `user.username` to `usr.username` + enabled: true + sources: + - user.username + sourceType: attribute + target: usr.username + targetType: attribute + preserveSource: false + overrideOnConflict: false + - type: attribute-remapper + name: Map `user.profile_image_url` to `usr.profileImageUrl` + enabled: true + sources: + - user.profile_image_url + sourceType: attribute + target: usr.profileImageUrl + targetType: attribute + preserveSource: false + overrideOnConflict: false diff --git a/doppler/assets/logs/doppler_tests.yaml b/doppler/assets/logs/doppler_tests.yaml new file mode 100644 index 0000000000..10b0074215 --- /dev/null +++ b/doppler/assets/logs/doppler_tests.yaml @@ -0,0 +1,201 @@ +id: doppler +tests: + - sample: >- + { + "ddsource": "doppler", + "createdAt": "2024-07-02T14:24:51.920Z", + "link": "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/logs?id=wpmULcSfO9sNxKdVUeaO0HK2", + "type": "services.datadog.connect", + "title": "Activity Log: wpmULcSfO9sNxKdVUeaO0HK2", + "text" : "Connected Datadog service", + "user": { + "name": "Nic Manoogian", + "profile_image_url": "https://www.gravatar.com/avatar/7f447a6cfe4f594f91c149b9c9ca872d?s=500&d=retro", + "email": "nic.manoogian@doppler.com", + "username": "nic" + }, + "workplace": { + "name": "Rocketship Co", + "id": "30bd9e7d881446ce1bf8" + }, + "slug": "wpmULcSfO9sNxKdVUeaO0HK2" + } + result: + custom: + createdAt: "2024-07-02T14:24:51.920Z" + ddsource: "doppler" + link: "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/logs?id=wpmULcSfO9sNxKdVUeaO0HK2" + slug: "wpmULcSfO9sNxKdVUeaO0HK2" + title: "Activity Log: wpmULcSfO9sNxKdVUeaO0HK2" + type: "services.datadog.connect" + usr: + name: "Nic Manoogian" + profileImageUrl: "https://www.gravatar.com/avatar/7f447a6cfe4f594f91c149b9c9ca872d?s=500&d=retro" + email: "nic.manoogian@doppler.com" + username: "nic" + workplace: + id: "30bd9e7d881446ce1bf8" + name: "Rocketship Co" + message: "Connected Datadog service" + tags: + - "source:LOGS_SOURCE" + timestamp: 1719930291920 + - sample: >- + { + "ddsource": "doppler", + "createdAt": "2024-07-02T14:25:02.812Z", + "metadata": { + "projectUrl": "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/projects/payments", + "projectName": "payments", + "projectId": "payments" + }, + "link": "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/logs?id=fOypzrlnQ6H3OMLq6RV12ZMO", + "type": "enclave.project.create", + "title": "Activity Log: fOypzrlnQ6H3OMLq6RV12ZMO", + "text": "Created payments project", + "user": { + "name": "Nic Manoogian", + "profile_image_url": "https://www.gravatar.com/avatar/7f447a6cfe4f594f91c149b9c9ca872d?s=500&d=retro", + "email": "nic.manoogian@doppler.com", + "username": "nic" + }, + "workplace": { + "name": "Rocketship Co", + "id": "30bd9e7d881446ce1bf8" + }, + "slug": "fOypzrlnQ6H3OMLq6RV12ZMO" + } + result: + custom: + createdAt: "2024-07-02T14:25:02.812Z" + ddsource: "doppler" + link: "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/logs?id=fOypzrlnQ6H3OMLq6RV12ZMO" + metadata: + projectId: "payments" + projectName: "payments" + projectUrl: "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/projects/payments" + slug: "fOypzrlnQ6H3OMLq6RV12ZMO" + title: "Activity Log: fOypzrlnQ6H3OMLq6RV12ZMO" + type: "enclave.project.create" + usr: + name: "Nic Manoogian" + profileImageUrl: "https://www.gravatar.com/avatar/7f447a6cfe4f594f91c149b9c9ca872d?s=500&d=retro" + email: "nic.manoogian@doppler.com" + username: "nic" + workplace: + id: "30bd9e7d881446ce1bf8" + name: "Rocketship Co" + message: 'Created payments project' + tags: + - "source:LOGS_SOURCE" + timestamp: 1719930302812 + - sample: >- + { + "ddsource": "doppler", + "createdAt": "2024-07-02T14:25:14.172Z", + "metadata": { + "configName": "dev", + "configUrl": "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/projects/payments/configs/dev", + "projectUrl": "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/projects/payments", + "diffUrl": "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/projects/payments/configs/dev/logs?id=H0wdEmtL0hJtzpPjoL7d6GXx", + "diff": { + "added": [ + "STRIPE_API_KEY" + ] + }, + "projectName": "payments", + "projectId": "payments" + }, + "link": "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/logs?id=Z3XK3tynBCd3u7bzBKJS6ntN", + "type": "enclave.project.config.secrets.update", + "title": "Activity Log: Z3XK3tynBCd3u7bzBKJS6ntN", + "text" : "Modified secrets in dev of payments project with 1 added:
• STRIPE_API_KEY", + "user": { + "name": "Nic Manoogian", + "profile_image_url": "https://www.gravatar.com/avatar/7f447a6cfe4f594f91c149b9c9ca872d?s=500&d=retro", + "email": "nic.manoogian@doppler.com", + "username": "nic" + }, + "workplace": { + "name": "Rocketship Co", + "id": "30bd9e7d881446ce1bf8" + }, + "slug": "Z3XK3tynBCd3u7bzBKJS6ntN" + } + result: + custom: + createdAt: "2024-07-02T14:25:14.172Z" + ddsource: "doppler" + link: "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/logs?id=Z3XK3tynBCd3u7bzBKJS6ntN" + metadata: + configName: "dev" + configUrl: "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/projects/payments/configs/dev" + diff: + added: + - "STRIPE_API_KEY" + diffUrl: "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/projects/payments/configs/dev/logs?id=H0wdEmtL0hJtzpPjoL7d6GXx" + projectId: "payments" + projectName: "payments" + projectUrl: "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/projects/payments" + slug: "Z3XK3tynBCd3u7bzBKJS6ntN" + title: "Activity Log: Z3XK3tynBCd3u7bzBKJS6ntN" + type: "enclave.project.config.secrets.update" + usr: + name: "Nic Manoogian" + profileImageUrl: "https://www.gravatar.com/avatar/7f447a6cfe4f594f91c149b9c9ca872d?s=500&d=retro" + email: "nic.manoogian@doppler.com" + username: "nic" + workplace: + id: "30bd9e7d881446ce1bf8" + name: "Rocketship Co" + message: 'Modified secrets in dev of payments project with 1 added:
• STRIPE_API_KEY' + tags: + - "source:LOGS_SOURCE" + timestamp: 1719930314172 + - sample: >- + { + "ddsource": "doppler", + "createdAt": "2024-07-02T14:25:51.870Z", + "metadata": { + "oldWorkplaceRole": "collaborator", + "newWorkplaceRole": "admin" + }, + "link": "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/logs?id=fcClWl8kGawkw9I7fm4MlCYs", + "type": "team.seat.update", + "title": "Activity Log: fcClWl8kGawkw9I7fm4MlCYs", + "text" : "Changed Nic Manoogian 1 access from collaborator to admin", + "user": { + "name": "Nic Manoogian", + "profile_image_url": "https://www.gravatar.com/avatar/7f447a6cfe4f594f91c149b9c9ca872d?s=500&d=retro", + "email": "nic.manoogian@doppler.com", + "username": "nic" + }, + "workplace": { + "name": "Rocketship Co", + "id": "30bd9e7d881446ce1bf8" + }, + "slug": "fcClWl8kGawkw9I7fm4MlCYs" + } + result: + custom: + createdAt: "2024-07-02T14:25:51.870Z" + ddsource: "doppler" + link: "https://dashboard.doppler.com/workplace/30bd9e7d881446ce1bf8/logs?id=fcClWl8kGawkw9I7fm4MlCYs" + metadata: + newWorkplaceRole: "admin" + oldWorkplaceRole: "collaborator" + slug: "fcClWl8kGawkw9I7fm4MlCYs" + title: "Activity Log: fcClWl8kGawkw9I7fm4MlCYs" + type: "team.seat.update" + usr: + email: "nic.manoogian@doppler.com" + profileImageUrl: "https://www.gravatar.com/avatar/7f447a6cfe4f594f91c149b9c9ca872d?s=500&d=retro" + name: "Nic Manoogian" + username: "nic" + workplace: + id: "30bd9e7d881446ce1bf8" + name: "Rocketship Co" + message: 'Changed Nic Manoogian 1 access from collaborator to admin' + tags: + - "source:LOGS_SOURCE" + timestamp: 1719930351870 diff --git a/doppler/assets/oauth_clients.json b/doppler/assets/oauth_clients.json new file mode 100644 index 0000000000..9cd4ae2e56 --- /dev/null +++ b/doppler/assets/oauth_clients.json @@ -0,0 +1,13 @@ +{ + "integration": { + "scopes": ["api_keys_write"], + "client_role": "integration", + "name": "Doppler API", + "onboarding_url": "https://dashboard.doppler.com/notification_services/datadog/connect", + "description": "Doppler API Client", + "redirect_uris": [ + "https://dashboard.doppler.com/notification_services/datadog/callback" + ], + "id": "87fdb7f6-542c-11ef-abb5-da7ad0900002" + } +} diff --git a/doppler/assets/service_checks.json b/doppler/assets/service_checks.json new file mode 100644 index 0000000000..fe51488c70 --- /dev/null +++ b/doppler/assets/service_checks.json @@ -0,0 +1 @@ +[] diff --git a/doppler/images/dashboard.png b/doppler/images/dashboard.png new file mode 100644 index 0000000000..28ac2d16cd Binary files /dev/null and b/doppler/images/dashboard.png differ diff --git a/doppler/images/doppler-logo.svg b/doppler/images/doppler-logo.svg new file mode 100644 index 0000000000..7ff476f73f --- /dev/null +++ b/doppler/images/doppler-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/doppler/images/example-log.png b/doppler/images/example-log.png new file mode 100644 index 0000000000..dbed9836c2 Binary files /dev/null and b/doppler/images/example-log.png differ diff --git a/doppler/images/generate.png b/doppler/images/generate.png new file mode 100644 index 0000000000..01630bed9b Binary files /dev/null and b/doppler/images/generate.png differ diff --git a/doppler/images/personal-config.png b/doppler/images/personal-config.png new file mode 100644 index 0000000000..2a270f5b8e Binary files /dev/null and b/doppler/images/personal-config.png differ diff --git a/doppler/images/projects.png b/doppler/images/projects.png new file mode 100644 index 0000000000..7dee99242d Binary files /dev/null and b/doppler/images/projects.png differ diff --git a/doppler/images/rotation.png b/doppler/images/rotation.png new file mode 100644 index 0000000000..c0342bb405 Binary files /dev/null and b/doppler/images/rotation.png differ diff --git a/doppler/images/secret-visibility.png b/doppler/images/secret-visibility.png new file mode 100644 index 0000000000..e86c6a169a Binary files /dev/null and b/doppler/images/secret-visibility.png differ diff --git a/doppler/images/version-history.png b/doppler/images/version-history.png new file mode 100644 index 0000000000..d19d736228 Binary files /dev/null and b/doppler/images/version-history.png differ diff --git a/doppler/manifest.json b/doppler/manifest.json new file mode 100644 index 0000000000..e13a04a09f --- /dev/null +++ b/doppler/manifest.json @@ -0,0 +1,88 @@ +{ + "manifest_version": "2.0.0", + "app_uuid": "e22c8861-f652-42a9-9582-6470504b421f", + "app_id": "doppler", + "display_on_public_website": true, + "tile": { + "overview": "README.md#Overview", + "configuration": "README.md#Setup", + "support": "README.md#Support", + "uninstallation": "README.md#Uninstallation", + "changelog": "CHANGELOG.md", + "description": "Doppler Secrets Management", + "title": "Doppler", + "media": [ + { + "media_type": "image", + "caption": "Organize secrets into projects", + "image_url": "images/projects.png" + }, + { + "media_type": "image", + "caption": "Configure secret visibility to prevent accidental access", + "image_url": "images/secret-visibility.png" + }, + { + "media_type": "image", + "caption": "Provide existing secrets or generate cryptographically random values", + "image_url": "images/generate.png" + }, + { + "media_type": "image", + "caption": "Set up automatic rotation", + "image_url": "images/rotation.png" + }, + { + "media_type": "image", + "caption": "Allow individual developers to override values in personal configs", + "image_url": "images/personal-config.png" + }, + { + "media_type": "image", + "caption": "Track all secret reads and writes", + "image_url": "images/version-history.png" + }, + { + "media_type": "image", + "caption": "Analyze activity patterns", + "image_url": "images/dashboard.png" + } + ], + "classifier_tags": [ + "Supported OS::Linux", + "Supported OS::Windows", + "Supported OS::macOS", + "Category::Security", + "Category::Developer Tools", + "Category::Log Collection", + "Offering::Integration", + "Submitted Data Type::Logs" + ] + }, + "assets": { + "integration": { + "auto_install": true, + "source_type_id": 25660413, + "source_type_name": "doppler", + "configuration": { + "spec": "assets/configuration/spec.yaml" + }, + "events": { + "creates_events": false + }, + "service_checks": { + "metadata_path": "assets/service_checks.json" + } + }, + "dashboards": { + "Doppler": "assets/dashboards/doppler_overview.json" + }, + "oauth": "assets/oauth_clients.json" + }, + "author": { + "support_email": "support@doppler.com", + "name": "Doppler", + "homepage": "https://doppler.com", + "sales_email": "sales@doppler.com" + } +}