Skip to content

Commit 83925bd

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add API spec for AWS Integrations standard and resource collection IAM permissions (DataDog#3362)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 5aac107 commit 83925bd

13 files changed

Lines changed: 381 additions & 0 deletions

.generator/schemas/v2/openapi.yaml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59638,6 +59638,39 @@ paths:
5963859638
summary: Get AWS integration IAM permissions
5963959639
tags:
5964059640
- AWS Integration
59641+
/api/v2/integration/aws/iam_permissions/resource_collection:
59642+
get:
59643+
description: Get all resource collection AWS IAM permissions required for the
59644+
AWS integration.
59645+
operationId: GetAWSIntegrationIAMPermissionsResourceCollection
59646+
responses:
59647+
'200':
59648+
content:
59649+
application/json:
59650+
schema:
59651+
$ref: '#/components/schemas/AWSIntegrationIamPermissionsResponse'
59652+
description: AWS integration resource collection IAM permissions.
59653+
'429':
59654+
$ref: '#/components/responses/TooManyRequestsResponse'
59655+
summary: Get resource collection IAM permissions
59656+
tags:
59657+
- AWS Integration
59658+
/api/v2/integration/aws/iam_permissions/standard:
59659+
get:
59660+
description: Get all standard AWS IAM permissions required for the AWS integration.
59661+
operationId: GetAWSIntegrationIAMPermissionsStandard
59662+
responses:
59663+
'200':
59664+
content:
59665+
application/json:
59666+
schema:
59667+
$ref: '#/components/schemas/AWSIntegrationIamPermissionsResponse'
59668+
description: AWS integration standard IAM permissions.
59669+
'429':
59670+
$ref: '#/components/responses/TooManyRequestsResponse'
59671+
summary: Get AWS integration standard IAM permissions
59672+
tags:
59673+
- AWS Integration
5964159674
/api/v2/integration/aws/logs/services:
5964259675
get:
5964359676
description: Get a list of AWS services that can send logs to Datadog.

api/datadogV2/api_aws_integration.go

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,160 @@ func (a *AWSIntegrationApi) GetAWSIntegrationIAMPermissions(ctx _context.Context
395395
return localVarReturnValue, localVarHTTPResponse, nil
396396
}
397397

398+
// GetAWSIntegrationIAMPermissionsResourceCollection Get resource collection IAM permissions.
399+
// Get all resource collection AWS IAM permissions required for the AWS integration.
400+
func (a *AWSIntegrationApi) GetAWSIntegrationIAMPermissionsResourceCollection(ctx _context.Context) (AWSIntegrationIamPermissionsResponse, *_nethttp.Response, error) {
401+
var (
402+
localVarHTTPMethod = _nethttp.MethodGet
403+
localVarPostBody interface{}
404+
localVarReturnValue AWSIntegrationIamPermissionsResponse
405+
)
406+
407+
localBasePath, err := a.Client.Cfg.ServerURLWithContext(ctx, "v2.AWSIntegrationApi.GetAWSIntegrationIAMPermissionsResourceCollection")
408+
if err != nil {
409+
return localVarReturnValue, nil, datadog.GenericOpenAPIError{ErrorMessage: err.Error()}
410+
}
411+
412+
localVarPath := localBasePath + "/api/v2/integration/aws/iam_permissions/resource_collection"
413+
414+
localVarHeaderParams := make(map[string]string)
415+
localVarQueryParams := _neturl.Values{}
416+
localVarFormParams := _neturl.Values{}
417+
localVarHeaderParams["Accept"] = "application/json"
418+
419+
if a.Client.Cfg.DelegatedTokenConfig != nil {
420+
err = datadog.UseDelegatedTokenAuth(ctx, &localVarHeaderParams, a.Client.Cfg.DelegatedTokenConfig)
421+
if err != nil {
422+
return localVarReturnValue, nil, err
423+
}
424+
} else {
425+
datadog.SetAuthKeys(
426+
ctx,
427+
&localVarHeaderParams,
428+
[2]string{"apiKeyAuth", "DD-API-KEY"},
429+
[2]string{"appKeyAuth", "DD-APPLICATION-KEY"},
430+
)
431+
}
432+
req, err := a.Client.PrepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, nil)
433+
if err != nil {
434+
return localVarReturnValue, nil, err
435+
}
436+
437+
localVarHTTPResponse, err := a.Client.CallAPI(req)
438+
if err != nil || localVarHTTPResponse == nil {
439+
return localVarReturnValue, localVarHTTPResponse, err
440+
}
441+
442+
localVarBody, err := datadog.ReadBody(localVarHTTPResponse)
443+
if err != nil {
444+
return localVarReturnValue, localVarHTTPResponse, err
445+
}
446+
447+
if localVarHTTPResponse.StatusCode >= 300 {
448+
newErr := datadog.GenericOpenAPIError{
449+
ErrorBody: localVarBody,
450+
ErrorMessage: localVarHTTPResponse.Status,
451+
}
452+
if localVarHTTPResponse.StatusCode == 429 {
453+
var v APIErrorResponse
454+
err = a.Client.Decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
455+
if err != nil {
456+
return localVarReturnValue, localVarHTTPResponse, newErr
457+
}
458+
newErr.ErrorModel = v
459+
}
460+
return localVarReturnValue, localVarHTTPResponse, newErr
461+
}
462+
463+
err = a.Client.Decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
464+
if err != nil {
465+
newErr := datadog.GenericOpenAPIError{
466+
ErrorBody: localVarBody,
467+
ErrorMessage: err.Error(),
468+
}
469+
return localVarReturnValue, localVarHTTPResponse, newErr
470+
}
471+
472+
return localVarReturnValue, localVarHTTPResponse, nil
473+
}
474+
475+
// GetAWSIntegrationIAMPermissionsStandard Get AWS integration standard IAM permissions.
476+
// Get all standard AWS IAM permissions required for the AWS integration.
477+
func (a *AWSIntegrationApi) GetAWSIntegrationIAMPermissionsStandard(ctx _context.Context) (AWSIntegrationIamPermissionsResponse, *_nethttp.Response, error) {
478+
var (
479+
localVarHTTPMethod = _nethttp.MethodGet
480+
localVarPostBody interface{}
481+
localVarReturnValue AWSIntegrationIamPermissionsResponse
482+
)
483+
484+
localBasePath, err := a.Client.Cfg.ServerURLWithContext(ctx, "v2.AWSIntegrationApi.GetAWSIntegrationIAMPermissionsStandard")
485+
if err != nil {
486+
return localVarReturnValue, nil, datadog.GenericOpenAPIError{ErrorMessage: err.Error()}
487+
}
488+
489+
localVarPath := localBasePath + "/api/v2/integration/aws/iam_permissions/standard"
490+
491+
localVarHeaderParams := make(map[string]string)
492+
localVarQueryParams := _neturl.Values{}
493+
localVarFormParams := _neturl.Values{}
494+
localVarHeaderParams["Accept"] = "application/json"
495+
496+
if a.Client.Cfg.DelegatedTokenConfig != nil {
497+
err = datadog.UseDelegatedTokenAuth(ctx, &localVarHeaderParams, a.Client.Cfg.DelegatedTokenConfig)
498+
if err != nil {
499+
return localVarReturnValue, nil, err
500+
}
501+
} else {
502+
datadog.SetAuthKeys(
503+
ctx,
504+
&localVarHeaderParams,
505+
[2]string{"apiKeyAuth", "DD-API-KEY"},
506+
[2]string{"appKeyAuth", "DD-APPLICATION-KEY"},
507+
)
508+
}
509+
req, err := a.Client.PrepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, nil)
510+
if err != nil {
511+
return localVarReturnValue, nil, err
512+
}
513+
514+
localVarHTTPResponse, err := a.Client.CallAPI(req)
515+
if err != nil || localVarHTTPResponse == nil {
516+
return localVarReturnValue, localVarHTTPResponse, err
517+
}
518+
519+
localVarBody, err := datadog.ReadBody(localVarHTTPResponse)
520+
if err != nil {
521+
return localVarReturnValue, localVarHTTPResponse, err
522+
}
523+
524+
if localVarHTTPResponse.StatusCode >= 300 {
525+
newErr := datadog.GenericOpenAPIError{
526+
ErrorBody: localVarBody,
527+
ErrorMessage: localVarHTTPResponse.Status,
528+
}
529+
if localVarHTTPResponse.StatusCode == 429 {
530+
var v APIErrorResponse
531+
err = a.Client.Decode(&v, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
532+
if err != nil {
533+
return localVarReturnValue, localVarHTTPResponse, newErr
534+
}
535+
newErr.ErrorModel = v
536+
}
537+
return localVarReturnValue, localVarHTTPResponse, newErr
538+
}
539+
540+
err = a.Client.Decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
541+
if err != nil {
542+
newErr := datadog.GenericOpenAPIError{
543+
ErrorBody: localVarBody,
544+
ErrorMessage: err.Error(),
545+
}
546+
return localVarReturnValue, localVarHTTPResponse, newErr
547+
}
548+
549+
return localVarReturnValue, localVarHTTPResponse, nil
550+
}
551+
398552
// ListAWSAccountsOptionalParameters holds optional parameters for ListAWSAccounts.
399553
type ListAWSAccountsOptionalParameters struct {
400554
AwsAccountId *string

api/datadogV2/doc.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
// - [AWSIntegrationApi.DeleteAWSAccount]
2020
// - [AWSIntegrationApi.GetAWSAccount]
2121
// - [AWSIntegrationApi.GetAWSIntegrationIAMPermissions]
22+
// - [AWSIntegrationApi.GetAWSIntegrationIAMPermissionsResourceCollection]
23+
// - [AWSIntegrationApi.GetAWSIntegrationIAMPermissionsStandard]
2224
// - [AWSIntegrationApi.ListAWSAccounts]
2325
// - [AWSIntegrationApi.ListAWSNamespaces]
2426
// - [AWSIntegrationApi.UpdateAWSAccount]
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Get resource collection IAM permissions returns "AWS integration resource collection IAM permissions." response
2+
3+
package main
4+
5+
import (
6+
"context"
7+
"encoding/json"
8+
"fmt"
9+
"os"
10+
11+
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
12+
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
13+
)
14+
15+
func main() {
16+
ctx := datadog.NewDefaultContext(context.Background())
17+
configuration := datadog.NewConfiguration()
18+
apiClient := datadog.NewAPIClient(configuration)
19+
api := datadogV2.NewAWSIntegrationApi(apiClient)
20+
resp, r, err := api.GetAWSIntegrationIAMPermissionsResourceCollection(ctx)
21+
22+
if err != nil {
23+
fmt.Fprintf(os.Stderr, "Error when calling `AWSIntegrationApi.GetAWSIntegrationIAMPermissionsResourceCollection`: %v\n", err)
24+
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
25+
}
26+
27+
responseContent, _ := json.MarshalIndent(resp, "", " ")
28+
fmt.Fprintf(os.Stdout, "Response from `AWSIntegrationApi.GetAWSIntegrationIAMPermissionsResourceCollection`:\n%s\n", responseContent)
29+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Get resource collection IAM permissions returns "AWS IAM Permissions object" response
2+
3+
package main
4+
5+
import (
6+
"context"
7+
"encoding/json"
8+
"fmt"
9+
"os"
10+
11+
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
12+
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
13+
)
14+
15+
func main() {
16+
ctx := datadog.NewDefaultContext(context.Background())
17+
configuration := datadog.NewConfiguration()
18+
apiClient := datadog.NewAPIClient(configuration)
19+
api := datadogV2.NewAWSIntegrationApi(apiClient)
20+
resp, r, err := api.GetAWSIntegrationIAMPermissionsResourceCollection(ctx)
21+
22+
if err != nil {
23+
fmt.Fprintf(os.Stderr, "Error when calling `AWSIntegrationApi.GetAWSIntegrationIAMPermissionsResourceCollection`: %v\n", err)
24+
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
25+
}
26+
27+
responseContent, _ := json.MarshalIndent(resp, "", " ")
28+
fmt.Fprintf(os.Stdout, "Response from `AWSIntegrationApi.GetAWSIntegrationIAMPermissionsResourceCollection`:\n%s\n", responseContent)
29+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Get AWS integration standard IAM permissions returns "AWS integration standard IAM permissions." response
2+
3+
package main
4+
5+
import (
6+
"context"
7+
"encoding/json"
8+
"fmt"
9+
"os"
10+
11+
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
12+
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
13+
)
14+
15+
func main() {
16+
ctx := datadog.NewDefaultContext(context.Background())
17+
configuration := datadog.NewConfiguration()
18+
apiClient := datadog.NewAPIClient(configuration)
19+
api := datadogV2.NewAWSIntegrationApi(apiClient)
20+
resp, r, err := api.GetAWSIntegrationIAMPermissionsStandard(ctx)
21+
22+
if err != nil {
23+
fmt.Fprintf(os.Stderr, "Error when calling `AWSIntegrationApi.GetAWSIntegrationIAMPermissionsStandard`: %v\n", err)
24+
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
25+
}
26+
27+
responseContent, _ := json.MarshalIndent(resp, "", " ")
28+
fmt.Fprintf(os.Stdout, "Response from `AWSIntegrationApi.GetAWSIntegrationIAMPermissionsStandard`:\n%s\n", responseContent)
29+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Get AWS integration standard IAM permissions returns "AWS IAM Permissions object" response
2+
3+
package main
4+
5+
import (
6+
"context"
7+
"encoding/json"
8+
"fmt"
9+
"os"
10+
11+
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
12+
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
13+
)
14+
15+
func main() {
16+
ctx := datadog.NewDefaultContext(context.Background())
17+
configuration := datadog.NewConfiguration()
18+
apiClient := datadog.NewAPIClient(configuration)
19+
api := datadogV2.NewAWSIntegrationApi(apiClient)
20+
resp, r, err := api.GetAWSIntegrationIAMPermissionsStandard(ctx)
21+
22+
if err != nil {
23+
fmt.Fprintf(os.Stderr, "Error when calling `AWSIntegrationApi.GetAWSIntegrationIAMPermissionsStandard`: %v\n", err)
24+
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
25+
}
26+
27+
responseContent, _ := json.MarshalIndent(resp, "", " ")
28+
fmt.Fprintf(os.Stdout, "Response from `AWSIntegrationApi.GetAWSIntegrationIAMPermissionsStandard`:\n%s\n", responseContent)
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2025-09-17T18:27:22.560Z
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
interactions:
2+
- request:
3+
body: ''
4+
form: {}
5+
headers:
6+
Accept:
7+
- application/json
8+
id: 0
9+
method: GET
10+
url: https://api.datadoghq.com/api/v2/integration/aws/iam_permissions/standard
11+
response:
12+
body: '{"data":{"id":"permissions","type":"permissions","attributes":{"permissions":["account:GetAccountInformation","airflow:GetEnvironment","airflow:ListEnvironments","apigateway:GET","appsync:ListGraphqlApis","autoscaling:Describe*","backup:List*","batch:DescribeJobDefinitions","bcm-data-exports:GetExport","bcm-data-exports:ListExports","budgets:ViewBudget","cloudfront:GetDistributionConfig","cloudfront:ListDistributions","cloudtrail:DescribeTrails","cloudtrail:GetTrail","cloudtrail:GetTrailStatus","cloudtrail:ListTrails","cloudtrail:LookupEvents","cloudwatch:Describe*","cloudwatch:Get*","cloudwatch:List*","codebuild:BatchGetProjects","codebuild:ListProjects","codedeploy:BatchGet*","codedeploy:List*","cur:DescribeReportDefinitions","directconnect:Describe*","dms:DescribeReplicationInstances","dynamodb:Describe*","dynamodb:List*","ec2:Describe*","ecs:Describe*","ecs:List*","eks:DescribeCluster","eks:ListClusters","elasticache:Describe*","elasticache:List*","elasticfilesystem:DescribeAccessPoints","elasticfilesystem:DescribeFileSystems","elasticfilesystem:DescribeTags","elasticloadbalancing:Describe*","elasticmapreduce:Describe*","elasticmapreduce:List*","es:DescribeElasticsearchDomains","es:ListDomainNames","es:ListTags","events:CreateEventBus","fsx:DescribeFileSystems","fsx:ListTagsForResource","health:DescribeAffectedEntities","health:DescribeEventDetails","health:DescribeEvents","iam:ListAccountAliases","kinesis:Describe*","kinesis:List*","lambda:List*","logs:DeleteSubscriptionFilter","logs:DescribeDeliveries","logs:DescribeDeliverySources","logs:DescribeLogGroups","logs:DescribeLogStreams","logs:DescribeSubscriptionFilters","logs:FilterLogEvents","logs:GetDeliveryDestination","logs:PutSubscriptionFilter","logs:TestMetricFilter","network-firewall:DescribeLoggingConfiguration","network-firewall:ListFirewalls","oam:ListAttachedLinks","oam:ListSinks","organizations:Describe*","organizations:List*","rds:Describe*","rds:List*","redshift-serverless:ListNamespaces","redshift:DescribeClusters","redshift:DescribeLoggingStatus","route53:List*","route53resolver:ListResolverQueryLogConfigs","s3:GetBucketLocation","s3:GetBucketLogging","s3:GetBucketNotification","s3:GetBucketTagging","s3:ListAllMyBuckets","s3:PutBucketNotification","ses:Get*","ses:List*","sns:GetSubscriptionAttributes","sns:List*","sns:Publish","sqs:ListQueues","ssm:GetServiceSetting","ssm:ListCommands","states:DescribeStateMachine","states:ListStateMachines","support:DescribeTrustedAdvisor*","support:RefreshTrustedAdvisorCheck","tag:GetResources","tag:GetTagKeys","tag:GetTagValues","timestream:DescribeEndpoints","wafv2:ListLoggingConfigurations","xray:BatchGetTraces","xray:GetTraceSummaries"]}}}'
13+
code: 200
14+
duration: 0ms
15+
headers:
16+
Content-Type:
17+
- application/vnd.api+json
18+
status: 200 OK
19+
version: 2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2025-09-17T18:27:22.885Z

0 commit comments

Comments
 (0)