openapi: 3.2.0 info: title: DoiT Cloud Connect API description: Programmatic access to DoiT Platform version: v1 servers: - url: https://api.doit.com security: - api_key: [] - tenantId: [] api_key: [] tags: - name: Cloud Connect description: Manage cloud provider connections and check feature availability for connected accounts. paths: /core/v1/cloudconnect/supportedFeatures/{accountID}: get: tags: - Cloud Connect summary: Get supported features for a connected account description: 'Returns the list of supported features and their permission status for a cloud account connected via CloudConnect. The account must belong to the authenticated customer. Supports AWS and Azure accounts.' operationId: getCloudConnectSupportedFeatures parameters: - name: accountID in: path description: The cloud provider account ID (AWS account ID or Azure tenant ID). required: true schema: type: string responses: '200': description: OK - Supported features returned. content: application/json: schema: $ref: '#/components/schemas/SupportedFeaturesResponse' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': description: Not Found - No CloudConnect document found for this account. content: application/json: schema: $ref: '#/components/schemas/Error' '500': $ref: '#/components/responses/500' /core/v1/cloudconnect/aws/accounts: post: tags: - Cloud Connect summary: Create or update an AWS account role description: 'Creates or updates a CloudConnect document for an AWS account. Unlike the CloudFormation variant, this endpoint does not update Firestore channel documents or require a CloudFormation stack ID.' operationId: createAccountRole requestBody: required: true content: application/json: schema: type: object required: - accountID - roleArn - enabledFeatures properties: accountID: type: string description: The AWS account ID. example: '123456789012' roleArn: type: string description: The ARN of the IAM role created for DoiT access. example: arn:aws:iam::123456789012:role/DoiTRole s3Bucket: type: string description: S3 bucket name for CloudTrail real-time anomaly detection. Required together with s3BucketRegion. s3BucketRegion: type: string description: AWS region of the S3 bucket. Required together with s3Bucket. example: us-east-1 enabledFeatures: type: array items: type: string description: Declares which supported AWS features the caller intends to enable. Values must match feature names configured in awsFeaturePermissions on app/cloud-connect. The value is persisted and returned in account responses. When "real-time-data" is included, s3Bucket and s3BucketRegion are required; when it is not included, s3Bucket and s3BucketRegion are not allowed. example: - real-time-data responses: '200': description: OK - Role created/updated successfully. content: application/json: schema: $ref: '#/components/schemas/AwsAccountResponse' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '409': description: Conflict - Account already exists. content: application/json: schema: $ref: '#/components/schemas/Error' '500': $ref: '#/components/responses/500' /core/v1/cloudconnect/aws/accounts/{accountID}: parameters: - name: accountID in: path required: true schema: type: string description: The AWS account ID. example: '123456789012' get: tags: - Cloud Connect summary: Get an AWS account description: Returns the current state of an AWS account including role, supported features, and optional S3 bucket configuration. operationId: getAwsAccount responses: '200': description: OK - Account details returned successfully. content: application/json: schema: $ref: '#/components/schemas/AwsAccountResponse' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': description: Not Found - No CloudConnect document found for this account. content: application/json: schema: $ref: '#/components/schemas/Error' '500': $ref: '#/components/responses/500' delete: tags: - Cloud Connect summary: Delete an AWS account role description: Deletes a CloudConnect document for an AWS account. operationId: deleteAccountRole responses: '200': description: OK - Role deleted successfully. '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '500': $ref: '#/components/responses/500' put: tags: - Cloud Connect summary: Update an AWS feature description: 'Updates an AWS feature for an existing CloudConnect account. Unlike the CloudFormation variant, this endpoint does not update Firestore channel documents, require a CloudFormation stack ID, or handle StackSet member role ARNs.' operationId: updateAwsFeature requestBody: required: true content: application/json: schema: type: object required: - enabledFeatures properties: s3Bucket: type: string description: S3 bucket name for CloudTrail real-time anomaly detection. Required together with s3BucketRegion. s3BucketRegion: type: string description: AWS region of the S3 bucket. Required together with s3Bucket. example: us-east-1 enabledFeatures: type: array items: type: string description: Declares which supported AWS features the caller intends to enable. Values must match feature names configured in awsFeaturePermissions on app/cloud-connect. The value is persisted and returned in account responses. When "real-time-data" is included, s3Bucket and s3BucketRegion are required; when it is not included, s3Bucket and s3BucketRegion are not allowed. example: - real-time-data responses: '200': description: OK - Feature updated successfully. content: application/json: schema: $ref: '#/components/schemas/AwsAccountResponse' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '500': $ref: '#/components/responses/500' components: responses: '400': description: Bad Request - The server cannot process the request, often due to a malformed request. content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized - Invalid API key. content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden - The client is not authorized to perform the request. content: application/json: schema: $ref: '#/components/schemas/Error' '500': description: Internal Server Error - Something went wrong with the DoiT API server. content: application/json: schema: $ref: '#/components/schemas/Error' schemas: AwsSupportedFeature: type: object properties: name: type: string description: Feature name. example: spot-scaling hasRequiredPermissions: type: boolean description: Whether the role has the required permissions for this feature. Error: type: object description: Standard error response structure. properties: error: type: string description: Detailed error message. SupportedFeaturesResponse: type: object description: Response containing the supported features for a CloudConnect account. properties: supportedFeatures: type: array description: List of features and their permission status. items: $ref: '#/components/schemas/SupportedFeature' SupportedFeature: type: object description: A feature supported by a CloudConnect account. properties: name: type: string description: The name of the feature. example: sandbox hasRequiredPermissions: type: boolean description: Whether the connected account has the required permissions for this feature. example: true AwsAccountResponse: type: object properties: accountID: type: string description: The AWS account ID. example: '123456789012' roleArn: type: string description: The ARN of the IAM role. example: arn:aws:iam::123456789012:role/DoiTRole s3Bucket: type: string description: S3 bucket name for real-time anomaly detection. Present only if real-time is enabled. s3BucketRegion: type: string description: AWS region of the S3 bucket. Present only if s3Bucket exists. example: us-east-1 supportedFeatures: type: array items: $ref: '#/components/schemas/AwsSupportedFeature' description: List of supported features and their permission status. enabledFeatures: type: array items: type: string description: List of supported AWS features enabled by the caller. Returned in the same order as provided. timeLinked: type: string description: ISO 8601 timestamp of when the role was linked. example: '2024-01-15T10:30:00Z' securitySchemes: api_key: type: apiKey name: Authorization description: Use the "Bearer " format or sign in for autofill in: header tenantId: type: apiKey name: X-Tenant-Id description: 'Tenant (customer) ID that sets the request''s customer context. Required when the credential can access more than one tenant; omit when the credential is scoped to exactly one tenant (the server resolves that tenant automatically). If omitted for a multi-tenant credential, the request fails with `400` and code `tenant_id_required`. If the value conflicts with the credential''s tenant scope, the request fails with `400` and code `tenant_id_mismatch`. Use this header over the legacy `customerContext` query parameter, which only applies to legacy API keys and is ignored by personal and service-account API tokens. ' in: header oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://console.doit.com/sign-in/oauth tokenUrl: https://console.doit.com/api/auth/token scopes: dci: Access All Data x-samples-languages: - curl - go - node - python x-cli-config: security: oauth2 params: client_id: cli