{"id":32565833,"url":"https://github.com/stackql/stackql-provider-datadog","last_synced_at":"2025-10-29T04:53:43.728Z","repository":{"id":314946027,"uuid":"1056817994","full_name":"stackql/stackql-provider-datadog","owner":"stackql","description":"generate stackql provider for Datadog from openapi specs","archived":false,"fork":false,"pushed_at":"2025-09-15T18:59:13.000Z","size":1096,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-15T20:36:54.211Z","etag":null,"topics":["datadog","stackql","stackql-provider"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stackql.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-14T21:29:04.000Z","updated_at":"2025-09-15T18:59:20.000Z","dependencies_parsed_at":"2025-09-15T20:47:03.051Z","dependency_job_id":null,"html_url":"https://github.com/stackql/stackql-provider-datadog","commit_stats":null,"previous_names":["stackql/stackql-provider-datadog"],"tags_count":null,"template":false,"template_full_name":"stackql/stackql-provider-TEMPLATE","purl":"pkg:github/stackql/stackql-provider-datadog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackql%2Fstackql-provider-datadog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackql%2Fstackql-provider-datadog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackql%2Fstackql-provider-datadog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackql%2Fstackql-provider-datadog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stackql","download_url":"https://codeload.github.com/stackql/stackql-provider-datadog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackql%2Fstackql-provider-datadog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281563798,"owners_count":26522704,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-29T02:00:06.901Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["datadog","stackql","stackql-provider"],"created_at":"2025-10-29T04:53:39.414Z","updated_at":"2025-10-29T04:53:43.722Z","avatar_url":"https://github.com/stackql.png","language":"JavaScript","readme":"# `datadog` provider for [`stackql`](https://github.com/stackql/stackql)\r\n\r\nThis repository is used to generate and document the `datadog` provider for StackQL, allowing you to query and manipulate DataDog resources using SQL-like syntax. The provider is built using the `@stackql/provider-utils` package, which provides tools for converting OpenAPI specifications into StackQL-compatible provider schemas.\r\n\r\n## Prerequisites\r\n\r\nTo use the DataDog provider with StackQL, you'll need:\r\n\r\n1. A DataDog account with appropriate API credentials\r\n2. DataDog API and Application keys with sufficient permissions for the resources you want to access\r\n3. StackQL CLI installed on your system (see [StackQL](https://github.com/stackql/stackql))\r\n\r\n## 1. Download the Open API Specification\r\n\r\nFirst, download the DataDog API OpenAPI specification:\r\n\r\n```bash\r\nrm -rf provider-dev/downloaded/*\r\ncurl -L https://raw.githubusercontent.com/DataDog/datadog-api-client-typescript/refs/heads/master/.generator/schemas/v2/openapi.yaml \\\r\n-o provider-dev/downloaded/openapi.yaml\r\n```\r\n\r\n## 2. Split into Service Specs\r\n\r\nNext, split the monolithic OpenAPI specification into service-specific files:\r\n\r\n```bash\r\nrm -rf provider-dev/source/*\r\nnpm run split -- \\\r\n  --provider-name datadog \\\r\n  --api-doc provider-dev/downloaded/openapi.yaml \\\r\n  --svc-discriminator path \\\r\n  --output-dir provider-dev/source \\\r\n  --overwrite \\\r\n  --svc-name-overrides \"$(cat \u003c\u003cEOF\r\n{\r\n  \"actions_datastores\": \"actions\",\r\n  \"scorecard\": \"apm\",\r\n  \"apicatalog\":\"catalog\",\r\n  \"cost_by_tag\": \"cloud_costs\",\r\n  \"cost\": \"cloud_costs\",\r\n  \"dashboard\": \"dashboards\",\r\n  \"powerpacks\": \"dashboards\",\r\n  \"rum\": \"digital_experience\",\r\n  \"integration\": \"integrations\",\r\n  \"containers\": \"infrastructure\",\r\n  \"container\": \"infrastructure\",\r\n  \"container_images\": \"infrastructure\",\r\n  \"processes\": \"infrastructure\",\r\n  \"network\": \"infrastructure\",\r\n  \"spa\": \"infrastructure\",\r\n  \"ndm\": \"infrastructure\",\r\n  \"app_builder\": \"infrastructure\",\r\n  \"spans\": \"metrics\",\r\n  \"series\": \"metrics\",\r\n  \"query\": \"metrics\",\r\n  \"datasets\": \"metrics\",\r\n  \"monitor\": \"monitoring\",\r\n  \"synthetics\": \"monitoring\",\r\n  \"user_invitations\": \"organization\",\r\n  \"service_accounts\": \"organization\",\r\n  \"api_keys\": \"organization\",\r\n  \"application_keys\": \"organization\",\r\n  \"current_user\": \"organization\",\r\n  \"audit\": \"organization\",\r\n  \"authn_mappings\": \"organization\",\r\n  \"saml_configurations\": \"organization\",\r\n  \"org_connections\": \"organization\",\r\n  \"team\": \"organization\",\r\n  \"users\": \"organization\",\r\n  \"org_configs\": \"organization\",\r\n  \"roles\": \"organization\",\r\n  \"domain_allowlist\": \"organization\",\r\n  \"ip_allowlist\": \"organization\",\r\n  \"permissions\": \"organization\",\r\n  \"restriction_policy\": \"organization\",\r\n  \"usage\": \"organization\",\r\n  \"deletion\": \"organization\",\r\n  \"cloud_security_management\": \"security\",\r\n  \"posture_management\": \"security\",\r\n  \"sensitive_data_scanner\": \"security\",\r\n  \"siem_historical_detections\": \"security\",\r\n  \"csm\": \"security\",\r\n  \"security_monitoring\": \"security\",\r\n  \"agentless_scanning\": \"security\",\r\n  \"incidents\": \"service_management\",\r\n  \"services\": \"service_management\",\r\n  \"teams\": \"service_management\",\r\n  \"slo\":\"service_management\",\r\n  \"cases\":\"service_management\",\r\n  \"events\":\"service_management\",\r\n  \"on_call\":\"service_management\",\r\n  \"error_tracking\":\"service_management\",\r\n  \"downtime\":\"service_management\",          \r\n  \"ci\": \"software_delivery\",\r\n  \"dora\": \"software_delivery\",\r\n  \"workflows\": \"software_delivery\"\r\n}\r\nEOF\r\n)\"\r\n```\r\n\r\n## 3. Generate Mappings\r\n\r\nGenerate the mapping configuration that connects OpenAPI operations to StackQL resources:\r\n\r\n```bash\r\nnpm run generate-mappings -- \\\r\n  --provider-name datadog \\\r\n  --input-dir provider-dev/source \\\r\n  --output-dir provider-dev/config\r\n```\r\n\r\nUpdate the resultant `provider-dev/config/all_services.csv` to add the `stackql_resource_name`, `stackql_method_name`, `stackql_verb` values for each operation.\r\n\r\n## 4. Generate Provider\r\n\r\nThis step transforms the split OpenAPI service specs into a fully-functional StackQL provider by applying the resource and method mappings defined in your CSV file.\r\n\r\n```bash\r\nrm -rf provider-dev/openapi/*\r\nnpm run generate-provider -- \\\r\n  --provider-name datadog \\\r\n  --input-dir provider-dev/source \\\r\n  --output-dir provider-dev/openapi/src/datadog \\\r\n  --config-path provider-dev/config/all_services.csv \\\r\n  --servers '[{\"url\": \"https://{region:^(?:[^\\\\:/]+(?:\\\\:[0-9]+)?|[0-9]+\\\\.[0-9]+\\\\.[0-9]+\\\\.[0-9]+(?:\\\\:[0-9]+)?)$}/\",\"variables\": {\"region\": {\"default\": \"datadoghq.com\"}}}]' \\\r\n  --provider-config '{\"auth\": { \"type\": \"custom\", \"location\": \"header\", \"name\": \"DD-API-KEY\", \"credentialsenvvar\": \"DD_API_KEY\", \"successor\": { \"type\": \"custom\", \"location\": \"header\", \"name\": \"DD-APPLICATION-KEY\", \"credentialsenvvar\": \"DD_APP_KEY\" }}}' \\\r\n  --overwrite\r\n```\r\n```bash\r\nsh provider-dev/scripts/fix_broken_links.sh\r\n```\r\n## 5. Test Provider\r\n\r\n### Starting the StackQL Server\r\n\r\nBefore running tests, start a StackQL server with your provider:\r\n\r\n```bash\r\nPROVIDER_REGISTRY_ROOT_DIR=\"$(pwd)/provider-dev/openapi\"\r\nnpm run start-server -- --provider datadog --registry $PROVIDER_REGISTRY_ROOT_DIR\r\n```\r\n\r\n### Test Meta Routes\r\n\r\nTest all metadata routes (services, resources, methods) in the provider:\r\n\r\n```bash\r\nnpm run test-meta-routes -- datadog --verbose\r\n```\r\n\r\nWhen you're done testing, stop the StackQL server:\r\n\r\n```bash\r\nnpm run stop-server\r\n```\r\n\r\nUse this command to view the server status:\r\n\r\n```bash\r\nnpm run server-status\r\n```\r\n\r\n### Run test queries\r\n\r\nRun some test queries against the provider using the `stackql shell`:\r\n\r\n```bash\r\nPROVIDER_REGISTRY_ROOT_DIR=\"$(pwd)/provider-dev/openapi\"\r\nREG_STR='{\"url\": \"file://'${PROVIDER_REGISTRY_ROOT_DIR}'\", \"localDocRoot\": \"'${PROVIDER_REGISTRY_ROOT_DIR}'\", \"verifyConfig\": {\"nopVerify\": true}}'\r\n./stackql shell --registry=\"${REG_STR}\"\r\n```\r\n\r\nExample queries to try:\r\n\r\n```sql\r\n-- Get organization details\r\nSELECT \r\nname,\r\ndescription,\r\npublic_id,\r\ncreated,\r\nmodified\r\nFROM datadog.organizations.organization;\r\n\r\n-- List all active monitors\r\nSELECT\r\nid,\r\nname,\r\nstatus,\r\ncreator,\r\ncreated,\r\nmodified,\r\ntype,\r\ntags\r\nFROM datadog.monitors.monitors\r\nWHERE status = 'Alert';\r\n\r\n-- View service level objectives\r\nSELECT\r\nid,\r\nname,\r\ndescription,\r\ntags,\r\ntype,\r\ncreated_at,\r\nmodified_at,\r\nthresholds\r\nFROM datadog.service_level_objectives.slos;\r\n\r\n-- Check all dashboard lists\r\nSELECT\r\nid,\r\nname,\r\nauthor,\r\ncreated,\r\nmodified,\r\ndashboard_count\r\nFROM datadog.dashboards.lists;\r\n\r\n-- View host metrics\r\nSELECT\r\nhost,\r\nmetric_name,\r\nmetric_value,\r\ntags\r\nFROM datadog.metrics.query\r\nWHERE metric_name = 'system.cpu.user'\r\nAND from_time = unix_timestamp() - 3600\r\nAND to_time = unix_timestamp();\r\n```\r\n\r\n## 6. Publish the provider\r\n\r\nTo publish the provider push the `datadog` dir to `providers/src` in a feature branch of the [`stackql-provider-registry`](https://github.com/stackql/stackql-provider-registry). Follow the [registry release flow](https://github.com/stackql/stackql-provider-registry/blob/dev/docs/build-and-deployment.md).  \r\n\r\nLaunch the StackQL shell:\r\n\r\n```bash\r\nexport DEV_REG=\"{ \\\"url\\\": \\\"https://registry-dev.stackql.app/providers\\\" }\"\r\n./stackql --registry=\"${DEV_REG}\" shell\r\n```\r\n\r\nPull the latest dev `datadog` provider:\r\n\r\n```sql\r\nregistry pull datadog;\r\n```\r\n\r\nRun some test queries to verify the provider works as expected.\r\n\r\n## 7. Generate web docs\r\n\r\nProvider doc microsites are built using Docusaurus and published using GitHub Pages.  \r\n\r\na. Update `headerContent1.txt` and `headerContent2.txt` accordingly in `provider-dev/docgen/provider-data/`  \r\n\r\nb. Update the following in `website/docusaurus.config.js`:  \r\n\r\n```js\r\n// Provider configuration - change these for different providers\r\nconst providerName = \"datadog\";\r\nconst providerTitle = \"DataDog Provider\";\r\n```\r\n\r\nc. Then generate docs using...\r\n\r\n```bash\r\nnpm run generate-docs -- \\\r\n  --provider-name datadog \\\r\n  --provider-dir ./provider-dev/openapi/src/datadog/v00.00.00000 \\\r\n  --output-dir ./website \\\r\n  --provider-data-dir ./provider-dev/docgen/provider-data\r\n```  \r\n\r\n## 8. Test web docs locally\r\n\r\n```bash\r\ncd website\r\n# test build\r\nyarn build\r\n\r\n# run local dev server\r\nyarn start\r\n```\r\n\r\n## 9. Publish web docs to GitHub Pages\r\n\r\nUnder __Pages__ in the repository, in the __Build and deployment__ section select __GitHub Actions__ as the __Source__. In Netlify DNS create the following records:\r\n\r\n| Source Domain | Record Type  | Target |\r\n|---------------|--------------|--------|\r\n| datadog-provider.stackql.io | CNAME | stackql.github.io. |\r\n\r\n## License\r\n\r\nMIT\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Please feel free to submit a Pull Request.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstackql%2Fstackql-provider-datadog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstackql%2Fstackql-provider-datadog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstackql%2Fstackql-provider-datadog/lists"}