From 491431d8d7d4afa49d9d993cf73e0db4a501502f Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 15 Sep 2026 12:01:26 +0200 Subject: [PATCH 01/17] Generate OpenAPI spec from dev --- .../multi-version-api-spec.flattened.yml | 3954 ++++++++++++++-- .../raw-multi-version-api-spec.yml | 4105 +++++++++++++++-- 2 files changed, 7463 insertions(+), 596 deletions(-) diff --git a/tools/codegen/atlasapispec/multi-version-api-spec.flattened.yml b/tools/codegen/atlasapispec/multi-version-api-spec.flattened.yml index e99fd33558..eaf266c4e6 100644 --- a/tools/codegen/atlasapispec/multi-version-api-spec.flattened.yml +++ b/tools/codegen/atlasapispec/multi-version-api-spec.flattened.yml @@ -625,6 +625,11 @@ components: $ref: "#/components/schemas/AdvancedComputeAutoScaling" diskGB: $ref: "#/components/schemas/DiskGBAutoScaling" + storageConfig: + allOf: + - $ref: "#/components/schemas/StorageConfig" + description: "Available in Public Preview: Settings that determine the per-shard data-size limit for this cluster. Applies only to Atlas INFINITE clusters. MongoDB Cloud accepts these settings only on `autoScaling` and rejects them on `analyticsAutoScaling`, including when you send them as `null`. In a request that includes `replicationSpecs`, omitting `storageConfig` or sending it as `null` or `{}` clears the limit. Omitting `replicationSpecs` preserves it." + nullable: true title: Automatic Scaling Settings type: object AdvancedClusterDescription: @@ -702,7 +707,6 @@ components: enum: - FULLY_WARMED - VISIBLE_EARLIER - - ENHANCED_FULLY_WARMED externalDocs: description: Reduce Secondary Disk Warming Impact url: https://docs.atlas.mongodb.com/reference/replica-set-tags/#reduce-secondary-disk-warming-impact @@ -1146,6 +1150,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -1310,16 +1323,19 @@ components: - COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_ANALYTICS - COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - COMPUTE_AUTO_SCALE_OPLOG_FAIL_ANALYTICS + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_ANALYTICS - DISK_AUTO_SCALE_INITIATED - DISK_AUTO_SCALE_MAX_DISK_SIZE_FAIL - DISK_AUTO_SCALE_OPLOG_FAIL + - COMPUTE_AUTO_SCALE_DOWNSCALE_SKIPPED_FALLBACK_BASE + - COMPUTE_AUTO_SCALE_DOWNSCALE_SKIPPED_FALLBACK_ANALYTICS + - CLUSTER_AUTO_SHARDING_INITIATED + - CLUSTER_RESHARDING_COMPLETED - PREDICTIVE_COMPUTE_AUTO_SCALE_INITIATED_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - - CLUSTER_AUTO_SHARDING_INITIATED - - CLUSTER_RESHARDING_COMPLETED - - COMPUTE_AUTO_SCALE_DOWNSCALE_SKIPPED_FALLBACK_BASE - - COMPUTE_AUTO_SCALE_DOWNSCALE_SKIPPED_FALLBACK_ANALYTICS + - PREDICTIVE_COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE - CPS_DATA_PROTECTION_ENABLE_REQUESTED - CPS_DATA_PROTECTION_ENABLED - CPS_DATA_PROTECTION_UPDATE_REQUESTED @@ -1392,6 +1408,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -1496,6 +1521,7 @@ components: - US3 - US5 - AP1 + - AP2 - US1_FED externalDocs: description: Datadog regions @@ -1825,6 +1851,290 @@ components: - DEFAULT type: string type: object + ApiAtlasClusterDescriptionPreview: + properties: + acceptDataRisksAndForceReplicaSetReconfig: + description: If reconfiguration is necessary to regain a primary due to a regional outage, submit this field alongside your topology reconfiguration to request a new regional outage resistant topology. Forced reconfigurations during an outage of the majority of electable nodes carry a risk of data loss if replicated writes (even majority committed writes) have not been replicated to the new primary node. MongoDB Atlas docs contain more information. To proceed with an operation which carries that risk, set `acceptDataRisksAndForceReplicaSetReconfig` to the current date. This parameter expresses its value in the ISO 8601 timestamp format in UTC. + externalDocs: + description: Reconfiguring a Replica Set during a regional outage + url: https://dochub.mongodb.org/core/regional-outage-reconfigure-replica-set + format: date-time + type: string + adaptiveCapacity: + description: Governs adaptive capacity behavior of Azure nodes in single-cloud Azure clusters or multi-cloud clusters that include Azure nodes. Adaptive capacity enables fallback hardware selection when the primary instance family is unavailable. ``ENABLED`` means the cluster explicitly opts in to adaptive capacity. ``DISABLED`` means the cluster explicitly opts out; the cluster receives capacity errors instead of being placed on fallback hardware. ``null`` means the field is unset; Azure clusters use adaptive capacity by default when the feature is enabled at the group level. Setting this field for single-cloud AWS or GCP clusters is a no-op. + enum: + - ENABLED + - DISABLED + nullable: true + type: string + advancedConfiguration: + $ref: "#/components/schemas/ApiAtlasClusterAdvancedConfigurationView" + backupEnabled: + default: false + description: Flag that indicates whether the cluster can perform backups. If set to `true`, the cluster can perform backups. You must set this value to `true` for NVMe clusters. Backup uses Cloud Backups for dedicated clusters and [Shared Cluster Backups](https://docs.atlas.mongodb.com/backup/shared-tier/overview/) for tenant clusters. If set to `false`, the cluster doesn't use backups. + externalDocs: + description: Cloud Backups + url: https://docs.atlas.mongodb.com/backup/cloud-backup/overview/ + type: boolean + biConnector: + $ref: "#/components/schemas/BiConnector" + clusterType: + description: Configuration of nodes that comprise the cluster. + enum: + - REPLICASET + - SHARDED + - GEOSHARDED + type: string + configServerManagementMode: + default: ATLAS_MANAGED + description: Config Server Management Mode for creating or updating a sharded cluster. When configured as `ATLAS_MANAGED`, Atlas may automatically switch the cluster's config server type for optimal performance and savings. When configured as `FIXED_TO_DEDICATED`, the cluster will always use a dedicated config server. + enum: + - ATLAS_MANAGED + - FIXED_TO_DEDICATED + externalDocs: + description: MongoDB Sharded Cluster Config Servers + url: https://dochub.mongodb.org/docs/manual/core/sharded-cluster-config-servers + type: string + configServerType: + description: Describes a sharded cluster's config server type. + enum: + - DEDICATED + - EMBEDDED + externalDocs: + description: MongoDB Sharded Cluster Config Servers + url: https://dochub.mongodb.org/docs/manual/core/sharded-cluster-config-servers + readOnly: true + type: string + connectionStrings: + $ref: "#/components/schemas/ClusterConnectionStrings" + createDate: + description: Date and time when MongoDB Cloud created this cluster. This parameter expresses its value in ISO 8601 format in UTC. + format: date-time + readOnly: true + type: string + databaseEdition: + description: "Available in Public Preview: Optional field that indicates whether your cluster will be Atlas INFINITE or CORE. You can set it only when you create the cluster, or when you upgrade a Free or Flex cluster to a dedicated cluster. This value is immutable once the dedicated cluster exists; attempting to change it on an update request returns an error." + enum: + - CORE + - INFINITE + type: string + diskWarmingMode: + default: FULLY_WARMED + description: Disk warming mode selection. + enum: + - FULLY_WARMED + - VISIBLE_EARLIER + externalDocs: + description: Reduce Secondary Disk Warming Impact + url: https://docs.atlas.mongodb.com/reference/replica-set-tags/#reduce-secondary-disk-warming-impact + type: string + effectiveDatabaseEdition: + description: "Available in Public Preview: Field that represents whether your cluster is Atlas INFINITE or CORE. This is read-only and always returned in the response. It reflects the actual cluster state. This value matches `databaseEdition` if it was set, otherwise it reflects the default database edition assigned to the cluster." + enum: + - CORE + - INFINITE + readOnly: true + type: string + effectiveReplicationSpecs: + description: List of settings that represent the actual cluster state. This is read-only and always returned in the response. It reflects the current cluster configuration, which may differ from `replicationSpecs` due to system-managed changes. + items: + $ref: "#/components/schemas/ReplicationSpec20240805" + readOnly: true + type: array + encryptionAtRestProvider: + description: 'Cloud service provider that manages your customer keys to provide an additional layer of encryption at rest for the cluster. To enable customer key management for encryption at rest, the cluster `replicationSpecs[n].regionConfigs[m].{type}Specs.instanceSize` setting must be `M10` or higher and `"backupEnabled" : false` or omitted entirely.' + enum: + - NONE + - AWS + - AZURE + - GCP + externalDocs: + description: Encryption at Rest using Customer Key Management + url: https://www.mongodb.com/docs/atlas/security-kms-encryption/ + type: string + featureCompatibilityVersion: + description: Feature compatibility version of the cluster. This will always appear regardless of whether FCV is pinned. + readOnly: true + type: string + featureCompatibilityVersionExpirationDate: + description: Feature compatibility version expiration date. Will only appear if FCV is pinned. This parameter expresses its value in the ISO 8601 timestamp format in UTC. + format: date-time + readOnly: true + type: string + globalClusterSelfManagedSharding: + description: |- + Set this field to configure the Sharding Management Mode when creating a new Global Cluster. + + When set to false, the management mode is set to Atlas-Managed Sharding. This mode fully manages the sharding of your Global Cluster and is built to provide a seamless deployment experience. + + When set to true, the management mode is set to Self-Managed Sharding. This mode leaves the management of shards in your hands and is built to provide an advanced and flexible deployment experience. + + This setting cannot be changed once the cluster is deployed. + externalDocs: + description: Creating a Global Cluster + url: https://dochub.mongodb.org/core/global-cluster-management + type: boolean + groupId: + description: Unique 24-hexadecimal character string that identifies the project. + example: 32b6e34b3d91647abb20e7b8 + pattern: ^([a-f0-9]{24})$ + readOnly: true + type: string + id: + description: Unique 24-hexadecimal digit string that identifies the cluster. + example: 32b6e34b3d91647abb20e7b8 + pattern: ^([a-f0-9]{24})$ + readOnly: true + type: string + internalClusterRole: + description: "Internal classification of the cluster's role. Possible values: `NONE` (regular user cluster), `SYSTEM_CLUSTER` (system cluster for backup), `INTERNAL_SHADOW_CLUSTER` (internal use shadow cluster for testing)." + enum: + - NONE + - SYSTEM_CLUSTER + - INTERNAL_SHADOW_CLUSTER + readOnly: true + type: string + labels: + deprecated: true + description: |- + Collection of key-value pairs between 1 to 255 characters in length that tag and categorize the cluster. The MongoDB Cloud console doesn't display your labels. + + Cluster labels are deprecated and will be removed in a future release. We strongly recommend that you use Resource Tags instead. + externalDocs: + description: Resource Tags + url: https://dochub.mongodb.org/core/add-cluster-tag-atlas + items: + $ref: "#/components/schemas/ComponentLabel" + type: array + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: "#/components/schemas/Link" + readOnly: true + type: array + mongoDBEmployeeAccessGrant: + $ref: "#/components/schemas/EmployeeAccessGrantView" + mongoDBMajorVersion: + description: |- + MongoDB major version of the cluster. Set to the binary major version. + + On creation: Choose from the available versions of MongoDB, or leave unspecified for the current recommended default in the MongoDB Cloud platform. The recommended version is a recent Long Term Support version. The default is not guaranteed to be the most recently released version throughout the entire release cycle. For versions available in a specific project, see the linked documentation or use the API endpoint for [project LTS versions endpoint](#tag/Projects/operation/getProjectLtsVersions). + + On update: Increase version only by 1 major version at a time. If the cluster is pinned to a MongoDB feature compatibility version exactly one major version below the current MongoDB version, the MongoDB version can be downgraded to the previous major version. + externalDocs: + description: Available MongoDB Versions in Atlas + url: https://www.mongodb.com/docs/atlas/reference/faq/database/#which-versions-of-mongodb-do-service-clusters-use- + type: string + mongoDBVersion: + description: Version of MongoDB that the cluster runs. + pattern: ([\d]+\.[\d]+\.[\d]+) + readOnly: true + type: string + mongosTopology: + $ref: "#/components/schemas/MongosTopology" + name: + description: Human-readable label that identifies the cluster. + pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ + type: string + paused: + description: Flag that indicates whether the cluster is paused. + type: boolean + pitEnabled: + description: Flag that indicates whether the cluster uses continuous cloud backups. + externalDocs: + description: Continuous Cloud Backups + url: https://docs.atlas.mongodb.com/backup/cloud-backup/overview/ + type: boolean + redactClientLogData: + description: |- + Enable or disable log redaction. + + This setting configures the ``mongod`` or ``mongos`` to redact any document field contents from a message accompanying a given log event before logging. This prevents the program from writing potentially sensitive data stored on the database to the diagnostic log. Metadata such as error or operation codes, line numbers, and source file names are still visible in the logs. + + Use ``redactClientLogData`` in conjunction with Encryption at Rest and TLS/SSL (Transport Encryption) to assist compliance with regulatory requirements. + + *Note*: changing this setting on a cluster will trigger a rolling restart as soon as the cluster is updated. + externalDocs: + description: Log Redaction + url: https://www.mongodb.com/docs/manual/administration/monitoring/#log-redaction + type: boolean + replicaSetScalingStrategy: + default: WORKLOAD_TYPE + description: |- + Set this field to configure the replica set scaling mode for your cluster. + + By default, Atlas scales under `WORKLOAD_TYPE`. This mode allows Atlas to scale your analytics nodes in parallel to your operational nodes. + + When configured as `SEQUENTIAL`, Atlas scales all nodes sequentially. This mode is intended for steady-state workloads and applications performing latency-sensitive secondary reads. + + When configured as `NODE_TYPE`, Atlas scales your electable nodes in parallel with your read-only and analytics nodes. This mode is intended for large, dynamic workloads requiring frequent and timely cluster tier scaling. This is the fastest scaling strategy, but it might impact latency of workloads when performing extensive secondary reads. + enum: + - SEQUENTIAL + - WORKLOAD_TYPE + - NODE_TYPE + externalDocs: + description: Modify the Replica Set Scaling Mode + url: https://dochub.mongodb.org/core/scale-nodes + type: string + replicationSpecs: + description: List of settings that configure your cluster regions. This array has one object per shard representing node configurations in each shard. For replica sets there is only one object representing node configurations. + items: + $ref: "#/components/schemas/ReplicationSpec20240805" + type: array + retainBackups: + default: false + description: Flag that indicates whether the cluster retains backups. + type: boolean + rootCertType: + default: ISRGROOTX1 + description: Root Certificate Authority that MongoDB Atlas cluster uses. MongoDB Cloud supports Internet Security Research Group. + enum: + - ISRGROOTX1 + type: string + stateName: + description: |- + Human-readable label that indicates any current activity being taken on this cluster by the Atlas control plane. With the exception of CREATING and DELETING states, clusters should always be available and have a Primary node even when in states indicating ongoing activity. + + - `IDLE`: Atlas is making no changes to this cluster and all changes requested via the UI or API can be assumed to have been applied. + - `CREATING`: A cluster being provisioned for the very first time returns state CREATING until it is ready for connections. Ensure IP Access List and DB Users are configured before attempting to connect. + - `UPDATING`: A change requested via the UI, API, AutoScaling, or other scheduled activity is taking place. + - `DELETING`: The cluster is in the process of deletion and will soon be deleted. + - `REPAIRING`: One or more nodes in the cluster are being returned to service by the Atlas control plane. Other nodes should continue to provide service as normal. + enum: + - IDLE + - CREATING + - UPDATING + - DELETING + - REPAIRING + readOnly: true + type: string + tags: + description: List that contains key-value pairs between 1 to 255 characters in length for tagging and categorizing the cluster. + externalDocs: + description: Resource Tags + url: https://dochub.mongodb.org/core/add-cluster-tag-atlas + items: + $ref: "#/components/schemas/ResourceTag" + type: array + terminationProtectionEnabled: + default: false + description: Flag that indicates whether termination protection is enabled on the cluster. If set to `true`, MongoDB Cloud won't delete the cluster. If set to `false`, MongoDB Cloud will delete the cluster. + type: boolean + useAwsTimeBasedSnapshotCopyForFastInitialSync: + default: false + description: Flag that indicates whether AWS time-based snapshot copies will be used instead of slower standard snapshot copies during fast Atlas cross-region initial syncs. This flag is only relevant for clusters containing AWS nodes. + type: boolean + versionReleaseSystem: + default: LTS + description: Method by which the cluster maintains the MongoDB versions. If value is `CONTINUOUS`, you must not specify `mongoDBMajorVersion`. + enum: + - LTS + - CONTINUOUS + type: string + type: object ApiAtlasCollectionRestoreCollectionStateResponse: description: Collection-level state within a collection restore job. properties: @@ -1921,7 +2231,7 @@ components: collections: description: List of collections to restore (up to 100 items). items: - $ref: "#/components/schemas/ApiAtlasRestoreNamespaceView" + $ref: "#/components/schemas/ApiAtlasRestoreCollectionNamespaceView" maxItems: 100 type: array databaseSuffix: @@ -1931,7 +2241,7 @@ components: databases: description: List of databases to restore (up to 100 items). items: - $ref: "#/components/schemas/ApiAtlasRestoreNamespaceView" + $ref: "#/components/schemas/ApiAtlasRestoreDatabaseNamespaceView" maxItems: 100 type: array indexStrategy: @@ -1990,7 +2300,7 @@ components: collections: description: List of collections in the restore scope (up to 100 items). items: - $ref: "#/components/schemas/ApiAtlasRestoreNamespaceView" + $ref: "#/components/schemas/ApiAtlasRestoreCollectionNamespaceView" maxItems: 100 type: array createdAt: @@ -2004,7 +2314,7 @@ components: databases: description: List of databases in the restore scope (up to 100 items). items: - $ref: "#/components/schemas/ApiAtlasRestoreNamespaceView" + $ref: "#/components/schemas/ApiAtlasRestoreDatabaseNamespaceView" maxItems: 100 type: array errorMessage: @@ -2055,7 +2365,7 @@ components: pattern: ^([a-f0-9]{24})$ type: string state: - description: Current state of the collection restore job. + description: Current state of the collection restore job. A `SUCCESSFUL` job can include individual `UNSUPPORTED` collection restores. Use the restore job collections endpoint to get per-collection detailed states. enum: - INITIALIZING - IN_PROGRESS @@ -2456,14 +2766,26 @@ components: readOnly: true type: string type: object - ApiAtlasRestoreNamespaceView: - description: Source and optional target namespace for a restore. + ApiAtlasRestoreCollectionNamespaceView: + description: Source and optional target collection for a restore. properties: sourceNamespace: - description: Namespace requested to restore (e.g. database name or `database.collection`). + description: Collection requested to restore, as `database.collection`. type: string targetNamespace: - description: Requested target namespace for the restored data; if empty, source namespace is used. + description: Requested target collection as `database.collection`; if empty, source namespace is used. + type: string + required: + - sourceNamespace + type: object + ApiAtlasRestoreDatabaseNamespaceView: + description: Source and optional target database for a restore. + properties: + sourceNamespace: + description: Database name requested to restore. + type: string + targetNamespace: + description: Requested target database name; if empty, source database name is used. type: string required: - sourceNamespace @@ -2623,6 +2945,19 @@ components: readOnly: true title: BSON Timestamp type: object + ApiChartsDashboardImportResponseView: + description: Imported dashboard and associated imported items. + properties: + dashboard: + $ref: "#/components/schemas/ImportedDashboard" + items: + description: Imported items. + items: + $ref: "#/components/schemas/ImportedItem" + type: array + required: + - items + type: object ApiCheckpointPartView: description: Metadata contained in one document that describes the complete snapshot taken for this node. properties: @@ -2928,6 +3263,62 @@ components: - DESCENDING type: string type: object + ApiSearchAutoScalingView: + description: Settings that let Atlas change the Search Node tier on its own. Bounds apply to the whole deployment, and Atlas scales each region and shard independently within them. Omit to keep autoscaling off. + properties: + compute: + $ref: "#/components/schemas/ApiSearchComputeAutoScalingView" + type: object + ApiSearchComputeAutoScalingView: + description: Settings that control Search Node tier scaling based on load. + properties: + enabled: + default: false + description: Flag that indicates whether Atlas raises the Search Node tier when the nodes are under sustained load. If set to `true`, you must also set `maxInstanceTier`. + type: boolean + maxInstanceTier: + description: Highest Search Node tier that Atlas can scale up to. Required when `enabled` is `true`. + enum: + - S10 + - S20 + - S30 + - S40 + - S50 + - S60 + - S70 + - S80 + - S90 + - S100 + - S110 + - S120 + - S130 + - S135 + - S140 + type: string + minInstanceTier: + description: Lowest Search Node tier that Atlas can scale down to. Required when `scaleDownEnabled` is `true`. Scaling down is not supported yet, so setting this returns an error. + enum: + - S10 + - S20 + - S30 + - S40 + - S50 + - S60 + - S70 + - S80 + - S90 + - S100 + - S110 + - S120 + - S130 + - S135 + - S140 + type: string + scaleDownEnabled: + default: false + description: Flag that indicates whether Atlas lowers the Search Node tier when load drops. Takes effect only when `enabled` is `true`. If set to `true`, you must also set `minInstanceTier`. Scaling down is not supported yet, so setting this to `true` returns an error. + type: boolean + type: object ApiSearchDeploymentEffectiveSpecView: properties: cloudProvider: @@ -2970,7 +3361,7 @@ components: readOnly: true type: string nodeCount: - description: Number of Search Nodes in this region. + description: Number of Search Nodes for this configuration. example: 2 format: int32 maximum: 32 @@ -2982,6 +3373,10 @@ components: example: US_EAST_1 readOnly: true type: string + shardId: + description: Shard that owns this Search Node configuration. + readOnly: true + type: string type: object ApiSearchDeploymentRequestSpecView: properties: @@ -3041,6 +3436,10 @@ components: type: object ApiSearchDeploymentRequestView: properties: + autoScaling: + allOf: + - $ref: "#/components/schemas/ApiSearchAutoScalingView" + description: Settings that let Atlas change the Search Node tier on its own. Bounds apply to the whole deployment, and Atlas scales each region and shard independently within them. Omit to keep autoscaling off. defaultNodeCount: description: Default number of Search Nodes per region. Applied to a region without an explicit override. example: 2 @@ -3060,8 +3459,19 @@ components: type: object ApiSearchDeploymentResponseView: properties: + autoScaling: + allOf: + - $ref: "#/components/schemas/ApiSearchAutoScalingView" + description: Autoscaling settings configured for this Search deployment. + readOnly: true + baselineSpecs: + description: List of starting settings for the Search Nodes in each cluster region. + items: + $ref: "#/components/schemas/ApiSearchDeploymentEffectiveSpecView" + readOnly: true + type: array effectiveSpecs: - description: List of settings that configure the Search Nodes for your cluster, with per-region detail including the region name and cloud provider. + description: List of settings that configure the Search Nodes for your cluster. Each entry describes one region or, when `shardId` is present, one shard in one region. items: $ref: "#/components/schemas/ApiSearchDeploymentEffectiveSpecView" readOnly: true @@ -3307,6 +3717,12 @@ components: - standbyLinkId - status type: object + ApiVersion: + properties: + version: + description: Object representing a version of the Atlas Admin API. + type: string + type: object AssociatedInvoice: description: An invoice associated with an organization. properties: @@ -3370,6 +3786,48 @@ components: required: - name type: object + AtlasRateLimitBucketState: + description: Configuration and current state of a single rate limit token bucket. + properties: + capacity: + description: The capacity of the bucket. + format: int64 + readOnly: true + type: integer + name: + description: The name of the bucket. + readOnly: true + type: string + remaining: + description: The remaining tokens of the bucket. + format: int64 + readOnly: true + type: integer + type: object + AtlasRateLimitInspectionResponse: + description: Rate limit inspection response containing bucket states for debugging and monitoring. + properties: + limits: + description: List of bucket states. + items: + $ref: "#/components/schemas/AtlasRateLimitBucketState" + readOnly: true + type: array + scope: + description: The scope type of the rate limit. + enum: + - GROUP + - ORGANIZATION + - USER + - IP + readOnly: true + type: string + scopeId: + description: The scope id associated to the bucket. + nullable: true + readOnly: true + type: string + type: object AtlasSearchAnalyzer: properties: charFilters: @@ -3467,17 +3925,29 @@ components: format: date-time readOnly: true type: string + databaseEdition: + description: "Available in Public Preview: Optional field that indicates whether your cluster will be Atlas INFINITE or CORE. You can set it only when you create the cluster, or when you upgrade a Free or Flex cluster to a dedicated cluster. This value is immutable once the dedicated cluster exists; attempting to change it on an update request returns an error." + enum: + - CORE + - INFINITE + type: string diskWarmingMode: default: FULLY_WARMED description: Disk warming mode selection. enum: - FULLY_WARMED - VISIBLE_EARLIER - - ENHANCED_FULLY_WARMED externalDocs: description: Reduce Secondary Disk Warming Impact url: https://docs.atlas.mongodb.com/reference/replica-set-tags/#reduce-secondary-disk-warming-impact type: string + effectiveDatabaseEdition: + description: "Available in Public Preview: Field that represents whether your cluster is Atlas INFINITE or CORE. This is read-only and always returned in the response. It reflects the actual cluster state. This value matches `databaseEdition` if it was set, otherwise it reflects the default database edition assigned to the cluster." + enum: + - CORE + - INFINITE + readOnly: true + type: string effectiveReplicationSpecs: description: List of settings that represent the actual cluster state. This is read-only and always returned in the response. It reflects the current cluster configuration, which may differ from `replicationSpecs` due to system-managed changes. items: @@ -3759,6 +4229,15 @@ components: type: string title: export type: object + AutoScalingSettings: + description: Options that determine how this cluster handles resource scaling. + properties: + compute: + $ref: "#/components/schemas/AdvancedComputeAutoScaling" + diskGB: + $ref: "#/components/schemas/DiskGBAutoScaling" + title: Automatic Scaling Settings + type: object AvailableCloudProviderRegion: properties: default: @@ -4716,6 +5195,7 @@ components: - M140_GEN_2 - M200_GEN_2 - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -6538,11 +7018,11 @@ components: - ASIA_SOUTH_2 - ASIA_SOUTHEAST_2 analyticsAutoScaling: - $ref: "#/components/schemas/AdvancedAutoScalingSettings" + $ref: "#/components/schemas/AutoScalingSettings" analyticsSpecs: $ref: "#/components/schemas/DedicatedHardwareSpec" autoScaling: - $ref: "#/components/schemas/AdvancedAutoScalingSettings" + $ref: "#/components/schemas/AutoScalingSettings" readOnlySpecs: $ref: "#/components/schemas/DedicatedHardwareSpec" backingProviderName: @@ -6875,6 +7355,24 @@ components: type: boolean title: Automatic Cluster Scaling Settings type: object + ClusterBackupSubscriptionResponse: + description: Paid-backup subscription state for a free (M0) cluster. + properties: + enabled: + description: Flag that indicates whether paid backups are enabled for the free (M0) cluster. + type: boolean + required: + - enabled + title: Cluster Backup Subscription Response + type: object + ClusterBackupSubscriptionUpdateRequest: + description: Paid-backup subscription state to apply to a free (M0) cluster. Omit enabled to leave the subscription unchanged. + properties: + enabled: + description: Flag that indicates whether paid backups are enabled for the free (M0) cluster. Omit this field to leave the subscription unchanged. + type: boolean + title: Cluster Backup Subscription Update Request + type: object ClusterCloudProviderInstanceSize: properties: availableRegions: @@ -6904,6 +7402,52 @@ components: description: Flag that indicates whether the cluster tier can scale down via reactive auto-scaling. This is required if `autoScaling.compute.enabled` is `true`. If you enable this option, specify a value for `providerSettings.autoScaling.compute.minInstanceSize`. type: boolean type: object + ClusterConfigurationValidation: + properties: + advancedConfiguration: + $ref: "#/components/schemas/ClusterDescriptionProcessArgs20240805" + clusterDescription: + $ref: "#/components/schemas/ClusterDescription20240805" + clusterName: + description: Name of the existing cluster to validate against when editing is true. + type: string + editing: + description: When true, validates the configuration as an update to an existing cluster. When false, validates as a new cluster create. + type: boolean + searchDeploymentSpec: + $ref: "#/components/schemas/ApiSearchDeploymentSpecView" + tags: + description: Optional list of resource tags. + items: + $ref: "#/components/schemas/ResourceTag" + maxItems: 50 + type: array + required: + - clusterDescription + - editing + type: object + ClusterConfigurationValidationError: + properties: + errorCode: + description: Machine-readable error code identifying the type of validation failure. + example: CLUSTER_NOT_FOUND + type: string + validationIssue: + description: Description of the validation failure. + type: string + type: object + ClusterConfigurationValidationResult: + properties: + errors: + description: List of validation errors, present only when valid is false. + items: + $ref: "#/components/schemas/ClusterConfigurationValidationError" + maxItems: 100 + type: array + valid: + description: Whether the cluster configuration is valid. + type: boolean + type: object ClusterConnectionStrings: description: Collection of Uniform Resource Locators that point to the MongoDB database. externalDocs: @@ -6975,6 +7519,26 @@ components: readOnly: true title: Cluster Connection Strings type: object + ClusterCostEstimate: + description: Estimated compute cost of running a cluster. + properties: + disclaimer: + description: Human-readable notes about what the estimate does and does not cover. Suitable for rendering to the user. Omitted for free-tier (M0) estimates. + readOnly: true + type: string + hourlyEstimateCredits: + description: Estimated compute cost per hour, in Atlas credits. One Atlas credit converts 1:1 to one US dollar. + readOnly: true + type: number + monthlyEstimateCredits: + description: Estimated compute cost per month, in Atlas credits. One Atlas credit converts 1:1 to one US dollar. + readOnly: true + type: number + required: + - hourlyEstimateCredits + - monthlyEstimateCredits + title: Cluster Cost Estimate + type: object ClusterDescription20240805: description: Configuration of a MongoDB Atlas cluster, including its replication topology, instance sizing, storage, and operational settings. properties: @@ -7037,17 +7601,29 @@ components: format: date-time readOnly: true type: string + databaseEdition: + description: "Available in Public Preview: Optional field that indicates whether your cluster will be Atlas INFINITE or CORE. You can set it only when you create the cluster, or when you upgrade a Free or Flex cluster to a dedicated cluster. This value is immutable once the dedicated cluster exists; attempting to change it on an update request returns an error." + enum: + - CORE + - INFINITE + type: string diskWarmingMode: default: FULLY_WARMED description: Disk warming mode selection. enum: - FULLY_WARMED - VISIBLE_EARLIER - - ENHANCED_FULLY_WARMED externalDocs: description: Reduce Secondary Disk Warming Impact url: https://docs.atlas.mongodb.com/reference/replica-set-tags/#reduce-secondary-disk-warming-impact type: string + effectiveDatabaseEdition: + description: "Available in Public Preview: Field that represents whether your cluster is Atlas INFINITE or CORE. This is read-only and always returned in the response. It reflects the actual cluster state. This value matches `databaseEdition` if it was set, otherwise it reflects the default database edition assigned to the cluster." + enum: + - CORE + - INFINITE + readOnly: true + type: string effectiveReplicationSpecs: description: List of settings that represent the actual cluster state. This is read-only and always returned in the response. It reflects the current cluster configuration, which may differ from `replicationSpecs` due to system-managed changes. items: @@ -8674,6 +9250,15 @@ components: required: - endpointGroupName - gcpProjectId + CreateEphemeralClusterRequest: + description: Create an Atlas Ephemeral cluster. + properties: + clusterName: + description: Human-readable label that identifies the Ephemeral cluster. Defaults to `Cluster0`. + nullable: true + pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ + type: string + type: object CreateGCPForwardingRuleRequest: properties: endpointName: @@ -8698,6 +9283,7 @@ components: $ref: "#/components/schemas/ServiceAccountIPAccessListEntry" maxItems: 200 type: array + x-xgen-array-semantic: set mcpConfigName: description: Human-readable name that identifies this MCP configuration. maxLength: 64 @@ -8713,6 +9299,7 @@ components: maxItems: 100 minItems: 1 type: array + x-xgen-array-semantic: set required: - mcpConfigName - roles @@ -8725,6 +9312,7 @@ components: $ref: "#/components/schemas/ServiceAccountIPAccessListEntry" maxItems: 200 type: array + x-xgen-array-semantic: set mcpConfigName: description: Human-readable name that identifies this MCP configuration. maxLength: 64 @@ -8746,6 +9334,7 @@ components: maxItems: 100 minItems: 1 type: array + x-xgen-array-semantic: set required: - mcpConfigName - roles @@ -9936,21 +10525,20 @@ components: type: integer diskIOPS: description: |- - Target throughput desired for storage attached to your Azure-provisioned cluster. Change this parameter if you: + Target IOPS (Input/Output Operations Per Second) desired for storage attached to this hardware. Only configurable for Gen 2 instance sizes. + + Change this parameter if you: - - set `replicationSpecs[n].regionConfigs[m].providerName` : `Azure`. - - set `replicationSpecs[n].regionConfigs[m].electableSpecs.instanceSize` : `M40` or greater not including `Mxx_NVME` tiers. + - set `replicationSpecs[n].regionConfigs[m].providerName` to `GCP`. + - set `replicationSpecs[n].regionConfigs[m].electableSpecs.instanceSize` to a Gen 2 instance size (`M30_GEN_2` or greater). The maximum input/output operations per second (IOPS) depend on the selected `.instanceSize` and `.diskSizeGB`. - This parameter defaults to the cluster tier's standard IOPS value. + This parameter defaults to the standard IOPS value for the selected `.diskSizeGB`. Changing this value impacts cluster cost. - externalDocs: - description: Programmatic API Keys - url: https://www.mongodb.com/docs/atlas/customize-storage/#extend-iops-on-azure format: int32 type: integer diskThroughput: - description: Target throughput desired for storage attached to this hardware. Only returned for Gen 2 instance sizes with Standard (GP3) volume type. + description: Throughput (in MiB/s) provisioned for storage attached to this hardware. Only returned for Gen 2 instance sizes. format: int32 readOnly: true type: integer @@ -10001,6 +10589,8 @@ components: - M80_GEN_2 - M140_GEN_2 - M200_GEN_2 + - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -10041,21 +10631,20 @@ components: type: integer diskIOPS: description: |- - Target throughput desired for storage attached to your Azure-provisioned cluster. Change this parameter if you: + Target IOPS (Input/Output Operations Per Second) desired for storage attached to this hardware. Only configurable for Gen 2 instance sizes. + + Change this parameter if you: - - set `replicationSpecs[n].regionConfigs[m].providerName` : `Azure`. - - set `replicationSpecs[n].regionConfigs[m].electableSpecs.instanceSize` : `M40` or greater not including `Mxx_NVME` tiers. + - set `"replicationSpecs[n].regionConfigs[m].providerName" : "GCP"`. + - set `"replicationSpecs[n].regionConfigs[m].electableSpecs.instanceSize"` to a Gen 2 instance size (`"M30_GEN_2"` or greater). The maximum input/output operations per second (IOPS) depend on the selected `.instanceSize` and `.diskSizeGB`. - This parameter defaults to the cluster tier's standard IOPS value. + This parameter defaults to the standard IOPS value for the selected `.diskSizeGB`. Changing this value impacts cluster cost. - externalDocs: - description: Programmatic API Keys - url: https://www.mongodb.com/docs/atlas/customize-storage/#extend-iops-on-azure format: int32 type: integer diskThroughput: - description: Target throughput desired for storage attached to this hardware. Only returned for Gen 2 instance sizes with Standard (GP3) volume type. + description: Throughput (in MiB/s) provisioned for storage attached to this hardware. Only returned for Gen 2 instance sizes. format: int32 readOnly: true type: integer @@ -10106,6 +10695,8 @@ components: - M80_GEN_2 - M140_GEN_2 - M200_GEN_2 + - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -11651,6 +12242,10 @@ components: description: Usage count (since last restart) of index. format: int64 type: integer + collation: + additionalProperties: true + description: Collation this index was built with. An index only serves a query that runs with the same collation. Absent when the index uses the default (simple) collation. + type: object index: description: List that contains documents that specify a key in the index and its sort order. items: @@ -12100,6 +12695,62 @@ components: - content - status type: object + EphemeralClusterCreated: + description: Details for the Atlas Ephemeral cluster that was created. + properties: + claimUrl: + description: Unique URL for claiming this Ephemeral cluster. Redirects to the Atlas sign-in or registration page, where a user signs in or creates an account to claim the cluster. Valid for 7 days after the cluster is created. + format: uri + type: string + clusterId: + description: Unique identifier of the Ephemeral cluster. Use this ID to retrieve the cluster's status and details in a GET request. + type: string + connectionString: + description: Connection string that uses the `mongodb+srv://` protocol to connect to the Ephemeral cluster. This string includes the unredacted SCRAM credentials (username and password) for an automatically generated database user that Atlas grants the built-in `readWriteAnyDatabase` role. + type: string + expiresAt: + description: Date and time when the cluster will be paused and no longer accessible until it is claimed. This parameter expresses its value in the ISO 8601 timestamp format in UTC. + format: date-time + type: string + status: + description: Status of the Ephemeral cluster. + enum: + - ACTIVE + - PAUSED + type: string + termsOfService: + description: Notice that by using this API, you agree to MongoDB's Cloud Terms of Service at and Privacy Policy at . Includes a link to the full terms. + type: string + type: object + EphemeralClusterStatusResponse: + description: Current status and details of an ephemeral Atlas cluster. + properties: + claimUrl: + description: Unique URL for claiming this Ephemeral cluster. Redirects to the Atlas sign-in or registration page, where a user signs in or creates an account to claim the cluster. Valid for 7 days after the cluster is created. + format: uri + type: string + clusterId: + description: Unique identifier of the Ephemeral cluster. Use this ID to retrieve the cluster's status and details in a GET request. + type: string + connectionString: + description: Connection string that uses the `mongodb+srv://` protocol to connect to the Ephemeral cluster. This string includes the SCRAM username of an automatically generated database user, but replaces the password with a placeholder. Atlas returns the password only in the create response. + nullable: true + type: string + expiresAt: + description: Date and time when the cluster will be paused and no longer accessible until it is claimed. This parameter expresses its value in the ISO 8601 timestamp format in UTC. + format: date-time + type: string + status: + description: Status of the Ephemeral cluster. + enum: + - PROVISIONING + - ACTIVE + - PAUSED + type: string + termsOfService: + description: Notice that by using this API, you agree to MongoDB's Cloud Terms of Service at and Privacy Policy at . Includes a link to the full terms. + type: string + type: object EventSeverity: description: Severity of the event. enum: @@ -12444,6 +13095,8 @@ components: - PLAN_ABANDONED - PLAN_DECLINED - PLAN_FAILURE_COUNT_RESET + - CAPACITY_RETRY_OVERRIDE_SET + - CAPACITY_RETRY_OVERRIDE_REMOVED - PLAN_ASAP_REQUESTED - INDEPENDENT_SHARD_AUTO_SCALING_AVAILABLE - INDEPENDENT_SHARD_SCALING_CLUSTER_MIGRATED @@ -12563,6 +13216,7 @@ components: - CLUSTER_FORCE_RECONFIG_REQUESTED - AGENT_FORCE_RESTART_REQUESTED - CLUSTER_RESET_FORCE_RECONFIG_REQUESTED + - CLUSTER_FORCE_PAUSE_REQUESTED - PROJECT_BYPASSED_MAINTENANCE - FEATURE_FLAG_MAINTENANCE - DATA_FEDERATION_QUERY_LIMIT_CONFIGURED @@ -12675,6 +13329,11 @@ components: - VOLUME_IMPAIRED_RESOLVED - SQL_INTERFACE_ENABLED - SQL_INTERFACE_DISABLED + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_REQUESTED + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_STARTED + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_FAILED_TO_START + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_END_REQUESTED + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_ENDED - DB_CHECK_UPDATED - CLUSTER_SAMPLED_FOR_DB_CHECK - DB_CHECK_SCHEDULED_FOR_CLUSTER @@ -12698,13 +13357,16 @@ components: - COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_ANALYTICS - COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - COMPUTE_AUTO_SCALE_OPLOG_FAIL_ANALYTICS + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_ANALYTICS - DISK_AUTO_SCALE_MAX_DISK_SIZE_FAIL - DISK_AUTO_SCALE_OPLOG_FAIL + - CLUSTER_AUTO_SHARDING_INITIATED + - CLUSTER_RESHARDING_COMPLETED - PREDICTIVE_COMPUTE_AUTO_SCALE_INITIATED_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - - CLUSTER_AUTO_SHARDING_INITIATED - - CLUSTER_RESHARDING_COMPLETED + - PREDICTIVE_COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE - MAINTENANCE_IN_ADVANCED - MAINTENANCE_AUTO_DEFERRED - MAINTENANCE_STARTED @@ -12893,6 +13555,7 @@ components: - CREDIT_PULLED_FWD - CREDIT_END_DATE_MODIFIED - PROMO_CODE_APPLIED + - PAYMENT_METHOD_DEACTIVATED - PAYMENT_FORGIVEN - REFUND_ISSUED - ACCOUNT_DOWNGRADED @@ -12983,6 +13646,11 @@ components: - ROLE_MAPPING_CREATED - ROLE_MAPPING_UPDATED - ROLE_MAPPING_DELETED + - SCIM_CLIENT_CREATED + - SCIM_CLIENT_UPDATED + - SCIM_CLIENT_DELETED + - SCIM_CLIENT_SECRET_CREATED + - SCIM_CLIENT_SECRET_DELETED - GROUP_DELETED - GROUP_CREATED - GROUP_MOVED @@ -14530,6 +15198,12 @@ components: format: date-time readOnly: true type: string + databaseEdition: + description: "Available in Public Preview: Optional field that indicates whether your tenant cluster will be upgraded to Atlas INFINITE or CORE." + enum: + - CORE + - INFINITE + type: string groupId: description: Unique 24-hexadecimal character string that identifies the project. example: 32b6e34b3d91647abb20e7b8 @@ -14606,6 +15280,12 @@ components: FlexClusterDescriptionCreate20241113: description: Settings that you can specify when you create a flex cluster. properties: + databaseEdition: + description: "Available in Public Preview: Optional field that indicates whether your tenant cluster will be upgraded to Atlas INFINITE or CORE." + enum: + - CORE + - INFINITE + type: string links: description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. externalDocs: @@ -14642,6 +15322,12 @@ components: FlexClusterDescriptionUpdate20241113: description: Settings that you can specify when you update a flex cluster. properties: + databaseEdition: + description: "Available in Public Preview: Optional field that indicates whether your tenant cluster will be upgraded to Atlas INFINITE or CORE." + enum: + - CORE + - INFINITE + type: string links: description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. externalDocs: @@ -15177,6 +15863,13 @@ components: maximum: 7 minimum: 1 type: integer + effectiveWaveAssignment: + description: "Maintenance wave that Atlas uses when scheduling maintenance for this project. This read-only value can differ from `waveAssignment` in two scenarios: (1) when the organization's `effectiveWaveAssignmentMode` is `ENV_TAG_MAPPING`, the effective wave is derived from environment tags regardless of any explicit assignment; (2) when cross-organization maintenance sequencing is active and this project's organization is a linked non-paying organization, the effective wave reflects the paying organization's mode." + format: int32 + maximum: 3 + minimum: 1 + readOnly: true + type: integer hourOfDay: description: Zero-based integer that represents the hour of the day, in the project's configured time zone (see `timeZoneId`), that the maintenance window starts according to a 24-hour clock. Use `0` for midnight and `12` for noon. If you haven't changed your project's time zone, this defaults to UTC. format: int32 @@ -15197,8 +15890,13 @@ components: description: Identifier for the current time zone of the maintenance window. This can only be updated via the Project Settings UI. readOnly: true type: string - required: - - dayOfWeek + waveAssignment: + description: Maintenance wave explicitly assigned to this project. Always returned in GET responses when a value has been set, regardless of the organization's `effectiveWaveAssignmentMode`. When the mode is `ENV_TAG_MAPPING`, this stored assignment is preserved but not used for scheduling — the effective wave is derived from environment tags instead. Not editable when the mode is `ENV_TAG_MAPPING`. Switching back to `MANUAL` restores this value as the effective wave. Must be between 1 and 3, inclusive. Pass `null` to clear an explicit assignment. + format: int32 + maximum: 3 + minimum: 1 + nullable: true + type: integer type: object GroupMaintenanceWindowPreviewResponse: properties: @@ -15254,8 +15952,6 @@ components: minimum: 1 nullable: true type: integer - required: - - dayOfWeek type: object GroupMaintenanceWindowPreviewUpdateRequest: properties: @@ -15316,6 +16012,7 @@ components: $ref: "#/components/schemas/ServiceAccountIPAccessListEntry" maxItems: 200 type: array + x-xgen-array-semantic: set mcpConfigId: description: Unique identifier that identifies this MCP configuration. example: b9254bc4-d6cc-4325-abf4-fb9d2a9de00a @@ -15335,6 +16032,7 @@ components: type: string maxItems: 100 type: array + x-xgen-array-semantic: set type: object GroupMcpConfigUpdateRequest: properties: @@ -15344,6 +16042,7 @@ components: $ref: "#/components/schemas/ServiceAccountIPAccessListEntry" maxItems: 200 type: array + x-xgen-array-semantic: set mcpConfigName: description: Updated human-readable name for this MCP configuration. maxLength: 64 @@ -15361,6 +16060,7 @@ components: maxItems: 100 minItems: 1 type: array + x-xgen-array-semantic: set type: object GroupMigrationRequest: properties: @@ -15487,6 +16187,12 @@ components: $ref: "#/components/schemas/ServiceAccountSecret" type: array uniqueItems: true + systemManaged: + description: Indicates whether the Service Account is system managed. + readOnly: true + type: boolean + required: + - systemManaged type: object GroupServiceAccountRequest: properties: @@ -15512,17 +16218,22 @@ components: minItems: 1 type: array secretExpiresAfterHours: - description: The expiration time of the new Service Account secret, provided in hours. The minimum and maximum allowed expiration times are subject to change and are controlled by the organization's settings. + description: The expiration time of the new Service Account secret, provided in hours. The minimum and maximum allowed expiration times are subject to change and are controlled by the organization's settings. Required unless `withoutInitialSecret` is true. example: 8 exclusiveMinimum: true format: int32 minimum: 0 + nullable: true type: integer + withoutInitialSecret: + default: false + description: "If true, creates the Service Account without generating an initial secret. `secretExpiresAfterHours` must not be set when this is true. Defaults to false, which preserves existing behavior: a secret is generated and returned in the response. Use the `CreateGroupServiceAccountSecret` endpoint to add a secret later." + nullable: true + type: boolean required: - description - name - roles - - secretExpiresAfterHours type: object GroupServiceAccountRoleAssignment: properties: @@ -15604,6 +16315,57 @@ components: isSchemaAdvisorEnabled: description: Flag that indicates whether to enable the Schema Advisor for the specified project. type: boolean + privateEndpointConnectionStringsEnabled: + default: false + description: Flag that indicates whether the project uses the private endpoint connection strings resource. + type: boolean + type: object + GroupSettingsPreview: + properties: + isAtlasHomePageAiAssistantEnabled: + description: Flag that indicates whether the MongoDB Assistant on the Atlas Home Page is enabled for the specified project. + type: boolean + isClusterAiAssistantEnabled: + description: Flag that indicates whether the AI Cluster Assistant is enabled for the specified project. + type: boolean + isCollectDatabaseSpecificsStatisticsEnabled: + description: Flag that indicates whether to collect database-specific metrics for the specified project. + type: boolean + isDataExplorerEnabled: + description: Flag that indicates whether to enable the Data Explorer for the specified project. + type: boolean + isDataExplorerGenAIFeaturesEnabled: + description: Flag that indicates whether to enable the use of generative AI features which make requests to 3rd party services in Data Explorer for the specified project. + type: boolean + isDataExplorerGenAISampleDocumentPassingEnabled: + default: false + description: Flag that indicates whether to enable the passing of sample field values with the use of generative AI features in the Data Explorer for the specified project. + type: boolean + isDataValidationEnabled: + description: Flag that indicates whether data validation is enabled for all clusters in the specified project. + type: boolean + isExtendedStorageSizesEnabled: + description: Flag that indicates whether to enable extended storage sizes for the specified project. + type: boolean + isNativeRerankingEnabled: + description: Flag that indicates whether to enable Native Reranking with Voyage AI models in the Aggregation Pipeline for the specified project. + type: boolean + isPerformanceAdvisorEnabled: + description: Flag that indicates whether to enable the Performance Advisor and Profiler for the specified project. + type: boolean + isQueryInsightsGenAiFeaturesEnabled: + description: Flag that indicates whether to enable AI features in Query Insights for the specified project. + type: boolean + isRealtimePerformancePanelEnabled: + description: Flag that indicates whether to enable the Real Time Performance Panel for the specified project. + type: boolean + isSchemaAdvisorEnabled: + description: Flag that indicates whether to enable the Schema Advisor for the specified project. + type: boolean + privateEndpointConnectionStringsEnabled: + default: false + description: Flag that indicates whether the project uses the private endpoint connection strings resource. + type: boolean type: object GroupUpdate: description: Request view to update the group. @@ -15775,21 +16537,20 @@ components: properties: diskIOPS: description: |- - Target throughput desired for storage attached to your Azure-provisioned cluster. Change this parameter if you: + Target IOPS (Input/Output Operations Per Second) desired for storage attached to this hardware. Only configurable for Gen 2 instance sizes. + + Change this parameter if you: - - set `replicationSpecs[n].regionConfigs[m].providerName` : `Azure`. - - set `replicationSpecs[n].regionConfigs[m].electableSpecs.instanceSize` : `M40` or greater not including `Mxx_NVME` tiers. + - set `replicationSpecs[n].regionConfigs[m].providerName` to `GCP`. + - set `replicationSpecs[n].regionConfigs[m].electableSpecs.instanceSize` to a Gen 2 instance size (`M30_GEN_2` or greater). The maximum input/output operations per second (IOPS) depend on the selected `.instanceSize` and `.diskSizeGB`. - This parameter defaults to the cluster tier's standard IOPS value. + This parameter defaults to the standard IOPS value for the selected `.diskSizeGB`. Changing this value impacts cluster cost. - externalDocs: - description: Programmatic API Keys - url: https://www.mongodb.com/docs/atlas/customize-storage/#extend-iops-on-azure format: int32 type: integer diskThroughput: - description: Target throughput desired for storage attached to this hardware. Only returned for Gen 2 instance sizes with Standard (GP3) volume type. + description: Throughput (in MiB/s) provisioned for storage attached to this hardware. Only returned for Gen 2 instance sizes. format: int32 readOnly: true type: integer @@ -15856,21 +16617,20 @@ components: type: number diskIOPS: description: |- - Target throughput desired for storage attached to your Azure-provisioned cluster. Change this parameter if you: + Target IOPS (Input/Output Operations Per Second) desired for storage attached to this hardware. Only configurable for Gen 2 instance sizes. + + Change this parameter if you: - - set `replicationSpecs[n].regionConfigs[m].providerName` : `Azure`. - - set `replicationSpecs[n].regionConfigs[m].electableSpecs.instanceSize` : `M40` or greater not including `Mxx_NVME` tiers. + - set `"replicationSpecs[n].regionConfigs[m].providerName" : "GCP"`. + - set `"replicationSpecs[n].regionConfigs[m].electableSpecs.instanceSize"` to a Gen 2 instance size (`"M30_GEN_2"` or greater). The maximum input/output operations per second (IOPS) depend on the selected `.instanceSize` and `.diskSizeGB`. - This parameter defaults to the cluster tier's standard IOPS value. + This parameter defaults to the standard IOPS value for the selected `.diskSizeGB`. Changing this value impacts cluster cost. - externalDocs: - description: Programmatic API Keys - url: https://www.mongodb.com/docs/atlas/customize-storage/#extend-iops-on-azure format: int32 type: integer diskThroughput: - description: Target throughput desired for storage attached to this hardware. Only returned for Gen 2 instance sizes with Standard (GP3) volume type. + description: Throughput (in MiB/s) provisioned for storage attached to this hardware. Only returned for Gen 2 instance sizes. format: int32 readOnly: true type: integer @@ -15931,6 +16691,38 @@ components: - name - value type: object + ImportedDashboard: + description: Imported dashboard. + properties: + embeddingId: + description: Embedding ID of the item. This field only returns if embedding is enabled for the entity. + type: string + id: + description: ID of the dashboard. + type: string + title: + description: Title of the dashboard. + type: string + required: + - id + - title + type: object + ImportedItem: + description: Imported Item. + properties: + embeddingId: + description: Embedding ID of the item. This will only be returned if embedding is enabled for the entity. + type: string + id: + description: ID of the item. + type: string + title: + description: Title of the item. + type: string + required: + - id + - title + type: object InboundControlPlaneCloudProviderIPAddresses: description: List of inbound IP addresses to the Atlas control plane, categorized by cloud provider. If your application allows outbound HTTP requests only to specific IP addresses, you must allow access to the following IP addresses so that your API requests can reach the Atlas control plane. properties: @@ -16096,6 +16888,28 @@ components: type: object type: object writeOnly: true + Info: + description: Information about the MongoDB Atlas Administration API OpenAPI Specification. + properties: + description: + description: Description of the MongoDB Atlas Administration API. + example: The MongoDB Atlas Administration API allows developers to manage all components in MongoDB Atlas. + type: string + license: + $ref: "#/components/schemas/License" + termsOfService: + description: Terms of Service URL. + example: https://www.mongodb.com/mongodb-management-service-terms-and-conditions + type: string + title: + description: Title of the MongoDB Atlas Administration API. + example: MongoDB Atlas Administration API. + type: string + version: + description: Version of the MongoDB Atlas Administration API. + example: "2.0" + type: string + type: object InvoiceLineItem: description: One service included in this invoice. properties: @@ -16510,6 +17324,12 @@ components: format: date-time readOnly: true type: string + databaseEdition: + description: "Available in Public Preview: Optional field that indicates whether your cluster will be Atlas INFINITE or CORE. This field applies only to flex and shared clusters. You can set it only when you create the cluster, or when you upgrade a flex cluster to a dedicated cluster. This value is immutable once the dedicated cluster exists; attempting to change it on an update request returns an error." + enum: + - CORE + - INFINITE + type: string deleteAfterCreationHours: description: |- Number of hours after cluster creation that this cluster will be automatically deleted. @@ -16558,11 +17378,17 @@ components: enum: - FULLY_WARMED - VISIBLE_EARLIER - - ENHANCED_FULLY_WARMED externalDocs: description: Reduce Secondary Disk Warming Impact url: https://docs.atlas.mongodb.com/reference/replica-set-tags/#reduce-secondary-disk-warming-impact type: string + effectiveDatabaseEdition: + description: "Available in Public Preview: Field that represents whether your cluster is Atlas INFINITE or CORE. This field applies only to flex and shared clusters. This is read-only and always returned in the response. It reflects the actual cluster state. This value matches `databaseEdition` if it was set, otherwise it reflects the default database edition assigned to the cluster." + enum: + - CORE + - INFINITE + readOnly: true + type: string encryptionAtRestProvider: description: 'Cloud service provider that manages your customer keys to provide an additional layer of encryption at rest for the cluster. To enable customer key management for encryption at rest, the cluster `replicationSpecs[n].regionConfigs[m].{type}Specs.instanceSize` setting must be `M10` or higher and `"backupEnabled" : false` or omitted entirely.' enum: @@ -16842,6 +17668,12 @@ components: format: date-time readOnly: true type: string + databaseEdition: + description: "Available in Public Preview: Optional field that indicates whether your cluster will be Atlas INFINITE or CORE. This field applies only to flex and shared clusters. You can set it only when you create the cluster, or when you upgrade a flex cluster to a dedicated cluster. This value is immutable once the dedicated cluster exists; attempting to change it on an update request returns an error." + enum: + - CORE + - INFINITE + type: string deleteAfterCreationHours: description: |- Number of hours after cluster creation that this cluster will be automatically deleted. @@ -16890,11 +17722,17 @@ components: enum: - FULLY_WARMED - VISIBLE_EARLIER - - ENHANCED_FULLY_WARMED externalDocs: description: Reduce Secondary Disk Warming Impact url: https://docs.atlas.mongodb.com/reference/replica-set-tags/#reduce-secondary-disk-warming-impact type: string + effectiveDatabaseEdition: + description: "Available in Public Preview: Field that represents whether your cluster is Atlas INFINITE or CORE. This field applies only to flex and shared clusters. This is read-only and always returned in the response. It reflects the actual cluster state. This value matches `databaseEdition` if it was set, otherwise it reflects the default database edition assigned to the cluster." + enum: + - CORE + - INFINITE + readOnly: true + type: string encryptionAtRestProvider: description: 'Cloud service provider that manages your customer keys to provide an additional layer of encryption at rest for the cluster. To enable customer key management for encryption at rest, the cluster `replicationSpecs[n].regionConfigs[m].{type}Specs.instanceSize` setting must be `M10` or higher and `"backupEnabled" : false` or omitted entirely.' enum: @@ -17155,6 +17993,18 @@ components: description: Human-readable label that identifies the zone in a Global Cluster. Provide this value only if `clusterType` is `GEOSHARDED`. type: string type: object + License: + description: License information of the MongoDB Atlas Administration API. + properties: + name: + description: Name of the license. + example: CC BY-NC-SA 3.0 US + type: string + url: + description: URL of the license. + example: https://creativecommons.org/licenses/by-nc-sa/3.0/us/ + type: string + type: object Link: properties: href: @@ -18089,9 +18939,10 @@ components: - CUMULATIVE type: string authType: - description: Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used. + description: Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used. `OAUTH2` acquires a bearer token from an OAuth 2.0 token endpoint using the `oauth` field. enum: - HEADER + - OAUTH2 type: string endpoint: description: OpenTelemetry collector endpoint URL. Must use HTTPS. @@ -18123,10 +18974,13 @@ components: minItems: 1 type: array uniqueItems: true + oauth: + $ref: "#/components/schemas/OAuthConfigRequest" providerType: description: The provider type for the metric integration. Identifies the third-party service provider. enum: - CUSTOM + - DATADOG - DYNATRACE - NEW_RELIC type: string @@ -18152,6 +19006,7 @@ components: description: Authentication method the integration uses when exporting metrics to the endpoint. enum: - HEADER + - OAUTH2 type: string endpoint: description: OpenTelemetry collector endpoint URL. @@ -18191,10 +19046,13 @@ components: minItems: 1 type: array uniqueItems: true + oauth: + $ref: "#/components/schemas/OAuthConfigResponse" providerType: description: The provider type for the metric integration. Identifies the third-party service provider. enum: - CUSTOM + - DATADOG - DYNATRACE - NEW_RELIC type: string @@ -18209,7 +19067,7 @@ components: title: Metric Integration Response type: object MetricIntegrationUpdateRequest: - description: Request schema for updating a metric integration. + description: Request schema for updating a metric integration. Omitted OAuth fields keep their stored values. An explicit null, an empty `scopes` array, or an empty `tokenRequestParams` object clears that field. Omitting `clientSecret` keeps the stored secret. properties: aggregationTemporality: description: The temporality to send to the metric integration. @@ -18218,9 +19076,10 @@ components: - CUMULATIVE type: string authType: - description: Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used. + description: Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used. `OAUTH2` acquires a bearer token from an OAuth 2.0 token endpoint using the `oauth` field. enum: - HEADER + - OAUTH2 type: string endpoint: description: OpenTelemetry collector endpoint URL. Must use HTTPS. @@ -18252,10 +19111,13 @@ components: minItems: 1 type: array uniqueItems: true + oauth: + $ref: "#/components/schemas/OAuthConfigRequest" providerType: description: The provider type for the metric integration. Identifies the third-party service provider. enum: - CUSTOM + - DATADOG - DYNATRACE - NEW_RELIC type: string @@ -18373,6 +19235,48 @@ components: readOnly: true type: array type: object + MongosRegionConfig: + description: Dedicated mongos placement in one region. + properties: + nodeCount: + description: Number of dedicated mongos to run in this region. + format: int32 + type: integer + providerName: + description: Cloud provider on which the dedicated mongos run. + enum: + - AWS + - AZURE + - GCP + type: string + regionName: + description: Region in which the dedicated mongos run. + type: string + type: object + MongosTier: + description: Hardware spec for the dedicated mongos tier. + properties: + instanceSize: + description: Instance size of the dedicated mongos hosts (for example, `M30`). + type: string + regionConfigs: + description: Per-region placement of the dedicated mongos hosts. + items: + $ref: "#/components/schemas/MongosRegionConfig" + type: array + type: object + MongosTopology: + description: "Configuration of the mongos routers for a sharded cluster: colocated on the shard nodes or running on a dedicated tier." + properties: + state: + description: Desired mongos topology. `COLOCATED` runs mongos on the shard nodes; `DEDICATED` runs mongos on a dedicated tier described by `tier`. + enum: + - COLOCATED + - DEDICATED + type: string + tier: + $ref: "#/components/schemas/MongosTier" + type: object NamespaceObj: description: Human-readable label that identifies the namespace on the specified host. The resource expresses this parameter value as `.`. properties: @@ -18492,6 +19396,121 @@ components: readOnly: true title: Number Metric Value type: object + OAuthConfigRequest: + description: OAuth 2.0 client credentials configuration. Required when `authType` is `OAUTH2`. Secrets are never returned. + properties: + clientAuthMethod: + description: How the client authenticates to the token endpoint. `CLIENT_SECRET` sends a shared secret. `PRIVATE_KEY_JWT` signs a client assertion with an Atlas-generated, Atlas-managed key. Register the returned JWKS URL with your identity provider. + enum: + - CLIENT_SECRET + - PRIVATE_KEY_JWT + type: string + clientId: + description: OAuth 2.0 client identifier registered with the token endpoint. + example: atlas-otel + maxLength: 2048 + type: string + clientSecret: + description: Shared client secret. Required when `clientAuthMethod` is `CLIENT_SECRET`, and rejected for `PRIVATE_KEY_JWT`. Encrypted at rest and never returned. + format: password + type: string + writeOnly: true + scopes: + description: Optional OAuth 2.0 scopes requested on the token, sent as a space delimited `scope` parameter. Applies to both client authentication methods. + items: + maxLength: 256 + type: string + maxItems: 20 + type: array + uniqueItems: true + tokenEndpoint: + description: OAuth 2.0 token endpoint URL. Must use HTTPS. + example: https://idp.example.com/oauth2/token + maxLength: 2048 + type: string + tokenRequestParams: + additionalProperties: + description: Optional provider-specific parameters added to the token request, for example a resource indicator. Applies to both client authentication methods. + example: '{"resource":"https://otel.example.com/metrics"}' + maxProperties: 10 + type: string + description: Optional provider-specific parameters added to the token request, for example a resource indicator. Applies to both client authentication methods. + example: + resource: https://otel.example.com/metrics + maxProperties: 10 + type: object + required: + - clientAuthMethod + - clientId + - tokenEndpoint + title: OAuth Config Request + type: object + OAuthConfigResponse: + description: OAuth 2.0 configuration returned for a metric integration. Secrets are never returned. + properties: + clientAuthMethod: + description: How the client authenticates to the token endpoint. + enum: + - CLIENT_SECRET + - PRIVATE_KEY_JWT + type: string + clientId: + description: OAuth 2.0 client identifier registered with the token endpoint. + maxLength: 2048 + type: string + scopes: + description: OAuth 2.0 scopes requested on the token. + items: + maxLength: 256 + type: string + maxItems: 20 + type: array + uniqueItems: true + signingKeyInfo: + $ref: "#/components/schemas/OAuthSigningKeyInfo" + tokenEndpoint: + description: OAuth 2.0 token endpoint URL. + maxLength: 2048 + type: string + tokenRequestParams: + additionalProperties: + description: Provider-specific parameters added to the token request. + maxProperties: 10 + type: string + description: Provider-specific parameters added to the token request. + maxProperties: 10 + type: object + required: + - clientAuthMethod + - clientId + - tokenEndpoint + title: OAuth Config Response + type: object + OAuthSigningKeyInfo: + description: Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the `jwksUri` with your identity provider. Atlas rotates the underlying key without changing this URL. + properties: + algorithm: + description: Signing algorithm of the Atlas-managed key. + example: RS256 + readOnly: true + type: string + createdAt: + description: When the currently active signing key was created. This parameter expresses its value in the ISO 8601 timestamp format in UTC. + format: date-time + readOnly: true + type: string + jwksUri: + description: Public JWKS URL serving this integration's signing keys. Fixed for the lifetime of the integration. + example: https://cloud.mongodb.com/api/keys/clientJwks/9f6c2a1e-8b3d-4e7a-a2c5-1f0e9d41d000 + readOnly: true + type: string + kid: + description: Key ID stamped on client assertions, the `SHA-1` thumbprint of the key certificate in uppercase hexadecimal. Changes when Atlas rotates the key. + readOnly: true + type: string + readOnly: true + title: OAuth Signing Key Info + type: object ObjectStoragePrivateEndpointRequest: properties: cloudProvider: @@ -18733,6 +19752,11 @@ components: - endMinute - startHour - startMinute + OpenApiInfo: + properties: + info: + $ref: "#/components/schemas/Info" + type: object OrgAssociatedInvoiceResponse: description: Response containing associated invoices for an organization. properties: @@ -19063,6 +20087,7 @@ components: $ref: "#/components/schemas/ServiceAccountIPAccessListEntry" maxItems: 200 type: array + x-xgen-array-semantic: set mcpConfigId: description: Unique identifier that identifies this MCP configuration. example: b9254bc4-d6cc-4325-abf4-fb9d2a9de00a @@ -19088,6 +20113,7 @@ components: type: string maxItems: 100 type: array + x-xgen-array-semantic: set type: object OrgMcpConfigUpdateRequest: properties: @@ -19097,6 +20123,7 @@ components: $ref: "#/components/schemas/ServiceAccountIPAccessListEntry" maxItems: 200 type: array + x-xgen-array-semantic: set mcpConfigName: description: Updated human-readable name for this MCP configuration. maxLength: 64 @@ -19121,6 +20148,7 @@ components: maxItems: 100 minItems: 1 type: array + x-xgen-array-semantic: set type: object OrgPaginatedEventView: properties: @@ -19187,7 +20215,13 @@ components: $ref: "#/components/schemas/ServiceAccountSecret" type: array uniqueItems: true + systemManaged: + description: Indicates whether the Service Account is system managed. + readOnly: true + type: boolean readOnly: true + required: + - systemManaged type: object OrgServiceAccountRequest: description: Organization Service Account that Atlas creates for this organization. If omitted, Atlas doesn't create an organization Service Account for this organization. If specified, this object requires all body parameters. Note that API Keys cannot be specified in the same request. @@ -19220,17 +20254,22 @@ components: minItems: 1 type: array secretExpiresAfterHours: - description: The expiration time of the new Service Account secret, provided in hours. The minimum and maximum allowed expiration times are subject to change and are controlled by the organization's settings. + description: The expiration time of the new Service Account secret, provided in hours. The minimum and maximum allowed expiration times are subject to change and are controlled by the organization's settings. Required unless `withoutInitialSecret` is true. example: 8 exclusiveMinimum: true format: int32 minimum: 0 + nullable: true type: integer + withoutInitialSecret: + default: false + description: "If true, creates the Service Account without generating an initial secret. `secretExpiresAfterHours` must not be set when this is true. Defaults to false, which preserves existing behavior: a secret is generated and returned in the response. Use the `CreateOrgServiceAccountSecret` endpoint to add a secret later." + nullable: true + type: boolean required: - description - name - roles - - secretExpiresAfterHours type: object OrgServiceAccountUpdateRequest: properties: @@ -20505,6 +21544,58 @@ components: required: - results type: object + PaginatedApiStreamsTransitGatewayAttachmentResponse: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: "#/components/schemas/Link" + readOnly: true + type: array + results: + description: List of returned documents that MongoDB Cloud provides when completing this request. + items: + $ref: "#/components/schemas/StreamsTransitGatewayAttachmentResponse" + readOnly: true + type: array + totalCount: + description: Total number of documents available. MongoDB Cloud omits this value if `includeCount` is set to `false`. The total number is an estimate and may not be exact. + format: int32 + minimum: 0 + readOnly: true + type: integer + required: + - results + type: object + PaginatedApiStreamsTransitGatewayRouteResponse: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: "#/components/schemas/Link" + readOnly: true + type: array + results: + description: List of returned documents that MongoDB Cloud provides when completing this request. + items: + $ref: "#/components/schemas/StreamsTransitGatewayRouteResponse" + readOnly: true + type: array + totalCount: + description: Total number of documents available. MongoDB Cloud omits this value if `includeCount` is set to `false`. The total number is an estimate and may not be exact. + format: int32 + minimum: 0 + readOnly: true + type: integer + required: + - results + type: object PaginatedApiStreamsVPCPeeringConnectionView: properties: links: @@ -20557,6 +21648,32 @@ components: required: - results type: object + PaginatedApiVersions: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: "#/components/schemas/Link" + readOnly: true + type: array + results: + description: List of returned documents that MongoDB Cloud provides when completing this request. + items: + $ref: "#/components/schemas/ApiVersion" + readOnly: true + type: array + totalCount: + description: Total number of documents available. MongoDB Cloud omits this value if `includeCount` is set to `false`. The total number is an estimate and may not be exact. + format: int32 + minimum: 0 + readOnly: true + type: integer + required: + - results + type: object PaginatedAppUserView: properties: links: @@ -21870,6 +22987,58 @@ components: required: - results type: object + PaginatedStreamsTransitGatewayInvitationsResponse: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: "#/components/schemas/Link" + readOnly: true + type: array + results: + description: List of returned documents that MongoDB Cloud provides when completing this request. + items: + $ref: "#/components/schemas/StreamsTransitGatewayInvitationsResponse" + readOnly: true + type: array + totalCount: + description: Total number of documents available. MongoDB Cloud omits this value if `includeCount` is set to `false`. The total number is an estimate and may not be exact. + format: int32 + minimum: 0 + readOnly: true + type: integer + required: + - results + type: object + PaginatedStreamsWorkspacePrivateEndpointResponse: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: "#/components/schemas/Link" + readOnly: true + type: array + results: + description: List of returned documents that MongoDB Cloud provides when completing this request. + items: + $ref: "#/components/schemas/StreamsWorkspacePrivateEndpointResponse" + readOnly: true + type: array + totalCount: + description: Total number of documents available. MongoDB Cloud omits this value if `includeCount` is set to `false`. The total number is an estimate and may not be exact. + format: int32 + minimum: 0 + readOnly: true + type: integer + required: + - results + type: object PaginatedTeamRoleView: properties: links: @@ -22010,6 +23179,11 @@ components: format: double readOnly: true type: number + collation: + additionalProperties: true + description: Collation the queries behind this suggestion run with. An index only serves a query when the two share a collation, so an index created from this suggestion must be created with it. Absent when those queries use the default (simple) collation. + readOnly: true + type: object id: description: Unique 24-hexadecimal digit string that identifies this index. example: 32b6e34b3d91647abb20e7b8 @@ -22078,13 +23252,19 @@ components: PerformanceAdvisorOperationView: properties: predicates: - description: List that contains the search criteria that the query uses. To use the values in key-value pairs in these predicates requires **Project Data Access Read Only** permissions or greater. Otherwise, MongoDB Cloud redacts these values. + description: List that contains the search criteria that the query uses. To use the values in key-value pairs in these predicates requires **Project Observability Viewer** or **Project Data Access Read Only** permissions or greater. Otherwise, MongoDB Cloud redacts these values. items: - description: List that contains the search criteria that the query uses. To use the values in key-value pairs in these predicates requires **Project Data Access Read Only** permissions or greater. Otherwise, MongoDB Cloud redacts these values. + description: List that contains the search criteria that the query uses. To use the values in key-value pairs in these predicates requires **Project Observability Viewer** or **Project Data Access Read Only** permissions or greater. Otherwise, MongoDB Cloud redacts these values. readOnly: true type: object readOnly: true type: array + raw: + description: Opaque serialized raw slow query log line or query shape for the query shape to be improved with index suggestions. The format isn't stable, so don't parse this value. Accessing this value requires **Project Observability Viewer** or **Project Data Access Read Only** permissions or greater. Otherwise, MongoDB Cloud returns `null`. + example: '{"t":{"$date":"2026-08-17T22:04:15.133+00:00"},"s":"I","c":"COMMAND","id":51803,"ctx":"conn0","msg":"Slow query","attr":{"type":"command","ns":".","command":{"find":"","filter":{"":""},"$db":""},"planSummary":"COLLSCAN","keysExamined":0,"docsExamined":10000,"nreturned":1,"remote":"","durationMillis":108}}' + nullable: true + readOnly: true + type: string stats: $ref: "#/components/schemas/PerformanceAdvisorOpStats" type: object @@ -22331,6 +23511,15 @@ components: - GCP readOnly: true type: string + connectionStringIds: + description: Identifiers of private endpoint connection strings that reference this private endpoint. + items: + pattern: ^([a-f0-9]{24})$ + type: string + maxItems: 100 + readOnly: true + type: array + uniqueItems: true deleteRequested: description: Flag that indicates whether MongoDB Cloud received a request to remove the specified private endpoint from the private endpoint service. readOnly: true @@ -22607,11 +23796,15 @@ components: description: Response containing the details and status of a query shape. The query shape field may be null if the user lacks PII view access. properties: command: - description: The MongoDB command type issued for a query shape. + description: The MongoDB command type issued for a query shape. The INSERT, UPDATE, and DELETE commands appear only for clusters running MongoDB 9.0 or later. enum: - FIND - DISTINCT - AGGREGATE + - COUNT + - INSERT + - UPDATE + - DELETE readOnly: true type: string namespace: @@ -22665,6 +23858,45 @@ components: required: - status type: object + QueryStatsCollectionResponse: + description: How `queryStats` entries were collected on this cluster's processes. Reflects the collection mode of the cluster's processes regardless of any host or process type filters in the request. Omitted when the collection mode cannot be determined. Sample-based collection requires MongoDB 9.0 or later but may not be enabled on every such cluster; this reflects the mode in effect on the cluster. + properties: + mode: + description: Method used to collect `queryStats` entries on the cluster's processes. + enum: + - RATE_LIMITED + - SAMPLED + readOnly: true + type: string + sampleRate: + description: Fraction of operations recorded. Dividing reported counts by this rate yields an unbiased estimate of the true totals. + example: 0.01 + format: double + readOnly: true + type: number + rateLimitPerSecond: + description: Maximum read queries recorded per second. + example: 100 + format: int32 + readOnly: true + type: integer + readOnly: true + required: + - mode + type: object + x-xgen-discriminator: + propertyName: mode + mapping: + RATE_LIMITED: + properties: + - rateLimitPerSecond + required: + - rateLimitPerSecond + SAMPLED: + properties: + - sampleRate + required: + - sampleRate QueryStatsDetailsResponse: description: Metadata and summary statistics for a given query shape. properties: @@ -22674,6 +23906,8 @@ components: $ref: "#/components/schemas/QueryShapeSeenMetadata" queryStats: $ref: "#/components/schemas/QueryStatsSummary" + queryStatsCollection: + $ref: "#/components/schemas/QueryStatsCollectionResponse" type: object QueryStatsSummary: description: A summary of execution statistics for a given query shape. @@ -22687,11 +23921,15 @@ components: format: double type: number command: - description: The MongoDB command issued for this query shape. + description: The MongoDB command issued for this query shape. The insert, update, and delete commands appear only for clusters running MongoDB 9.0 or later. enum: - find - distinct - aggregate + - count + - insert + - update + - delete type: string cpuTime: description: Total CPU time in nanoseconds consumed by queries with the given query shape. Available for MDB 8.2 and higher. @@ -22714,6 +23952,11 @@ components: description: Total number of times that queries with the given query shape have been executed. format: double type: number + keysDeleted: + description: Total number of index keys deleted by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number keysExamined: description: Total number of in-bounds and out-of-bounds index keys examined by queries with the given query shape. format: double @@ -22722,10 +23965,40 @@ components: description: Ratio of in-bounds and out-of-bounds index keys examined to indexes containing documents returned by queries with the given query shape. format: double type: number + keysInserted: + description: Total number of index keys inserted by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number lastExecMicros: description: Execution runtime in microseconds for the most recent query with the given query shape. format: double type: number + nDeleted: + description: Total number of documents deleted by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number + nInserted: + description: Total number of documents inserted by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number + nMatched: + description: Total number of documents matched by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number + nModified: + description: Total number of documents modified by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number + nUpserted: + description: Total number of documents upserted by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number namespace: description: Human-readable label that identifies the namespace on the specified host. The resource expresses this parameter value as `.`. type: string @@ -22764,6 +24037,8 @@ components: type: object QueryStatsSummaryListResponse: properties: + queryStatsCollection: + $ref: "#/components/schemas/QueryStatsCollectionResponse" summaries: description: List of query shape statistic summaries from Query Shape Insights. items: @@ -24168,6 +25443,16 @@ components: type: string readOnly: true type: object + StorageConfig: + nullable: true + properties: + shardSizeLimitGB: + description: "Available in Public Preview: Maximum data size that MongoDB Cloud allows each shard of this cluster to reach, expressed in gigabytes. MongoDB Cloud rejects writes to a shard that reaches the limit that it enforces. In `replicationSpecs`, this field reports the limit that you configured, and MongoDB Cloud omits it when you never configured one. In `effectiveReplicationSpecs`, this field reports the limit that MongoDB Cloud enforces: usually the limit that you configured, otherwise the default limit that MongoDB Cloud assigns when it creates or updates the cluster. This value may differ from the limit that you configured due to system-managed changes. This limit applies to every shard of the cluster; set the same value on each region configuration's `autoScaling`, as MongoDB Cloud rejects requests that specify differing values. You can set this only on Atlas INFINITE clusters: MongoDB Cloud rejects any request that names this field, including as `null`, for a cluster or node type that doesn't support it. In a request that includes `replicationSpecs`, omitting `shardSizeLimitGB` or sending it as `null` clears the limit. Omitting `replicationSpecs` preserves it." + format: int32 + minimum: 1 + nullable: true + type: integer + type: object StreamConfig: description: Configuration options for an Atlas Stream Processing Workspace. nullable: true @@ -24264,7 +25549,7 @@ components: description: Amazon Resource Name (ARN) that identifies the Amazon Web Services (AWS) Identity and Access Management (IAM) role that MongoDB Cloud assumes when it accesses resources in your AWS account. type: string testBucket: - description: The name of an S3 bucket used to check authorization of the passed-in IAM role ARN. + description: The name of an S3 bucket used to check authorization of the passed-in IAM role ARN. This field applies only to S3 connections and is ignored for all other connection types and configurations. type: string type: object StreamsAutoscaling: @@ -25365,6 +26650,168 @@ components: streamConfig: $ref: "#/components/schemas/StreamConfig" type: object + StreamsTransitGatewayAttachmentRequest: + properties: + cloudProvider: + description: Provider for the transit gateway resources. + type: string + writeOnly: true + regionName: + description: AWS region name. + type: string + writeOnly: true + tgwId: + description: AWS transit gateway ID. + pattern: ^(tgw-)[0-9a-zA-Z]+$ + type: string + vpcId: + description: AWS VPC ID. + pattern: ^(vpc-)[0-9a-zA-Z]+$ + type: string + writeOnly: true + type: object + StreamsTransitGatewayAttachmentResponse: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: "#/components/schemas/Link" + readOnly: true + type: array + tgwAttachmentId: + description: The AWS Transit Gateway Attachment ID. + pattern: ^(tgw-attach-)[0-9a-zA-Z]+$ + readOnly: true + type: string + tgwId: + description: AWS transit gateway ID. + pattern: ^(tgw-)[0-9a-zA-Z]+$ + type: string + type: object + StreamsTransitGatewayInvitationsResponse: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: "#/components/schemas/Link" + readOnly: true + type: array + tgwId: + description: AWS transit gateway ID. + pattern: ^(tgw-)[0-9a-zA-Z]+$ + type: string + tgwResourceShareArn: + description: AWS Transit Gateway resource share ARN. + type: string + tgwResourceShareInvitationArn: + description: AWS Transit Gateway resource share invitation ARN. + type: string + type: object + StreamsTransitGatewayResourceShare: + properties: + cloudProvider: + description: Provider for the transit gateway resources. + type: string + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: "#/components/schemas/Link" + readOnly: true + type: array + regionName: + description: AWS Region name. + type: string + tgwId: + description: AWS transit gateway ID. + pattern: ^(tgw-)[0-9a-zA-Z]+$ + type: string + tgwResourceShareArn: + description: AWS Transit Gateway resource share ARN. + type: string + tgwResourceShareInvitationArn: + description: AWS Transit Gateway resource share invitation ARN. + readOnly: true + type: string + type: object + StreamsTransitGatewayRouteRequest: + description: Container for metadata needed to create a Transit Gateway route. + properties: + destinationCidr: + description: The route's destination CIDR. + type: string + region: + description: The region of the Atlas VPCs where this route should take effect. + type: string + tgwId: + description: The AWS ID of the Transit Gateway through which traffic will be routed. + type: string + type: object + StreamsTransitGatewayRouteResponse: + description: Container for metadata associated with a Transit Gateway route. + properties: + destinationCidr: + description: The route's destination CIDR. + type: string + region: + description: The region of the Atlas VPCs where this route should take effect. + type: string + tgwId: + description: The AWS ID of the Transit Gateway through which traffic will be routed. + type: string + tgwRouteId: + description: The ID of the Transit Gateway route. + example: 32b6e34b3d91647abb20e7b8 + pattern: ^([a-f0-9]{24})$ + readOnly: true + type: string + type: object + StreamsWorkspacePrivateEndpointResponse: + description: Customer VPC endpoint registered for inbound private connectivity to Atlas Stream Processing. + properties: + customerDnsName: + description: DNS name of the customer's VPC endpoint. + example: vpce-0abc123def4567890-abc123.us-east-1.vpce.amazonaws.com + readOnly: true + type: string + endpointServiceName: + description: Name of the Atlas endpoint service the customer's VPC endpoint connects to. Absent when no endpoint service is configured for the endpoint's region. + example: com.amazonaws.vpce.us-east-1.vpce-svc-0123456789abcdef0 + readOnly: true + type: string + id: + description: Unique identifier of the customer's VPC endpoint. + example: vpce-0abc123def4567890 + readOnly: true + type: string + provider: + description: Cloud provider hosting the customer's VPC endpoint. + example: AWS + readOnly: true + type: string + region: + description: Human-readable label identifying the region of the customer's VPC endpoint. + example: US_EAST_1 + readOnly: true + type: string + status: + description: Status of the endpoint registration. + enum: + - PENDING + - OK + - FAILED + - DELETING + readOnly: true + type: string + type: object SynonymMappingStatusDetail: description: Contains the status of the index's synonym mappings on each search host. This field (and its subfields) only appear if the index has synonyms defined. properties: @@ -25795,6 +27242,97 @@ components: - url required: - url + UnauthClusterCostEstimateAssumedDefaults: + description: Standard defaults the server applied to produce a complete cluster configuration that could be priced. The reported cost reflects exactly this configuration. Omitted for free (M0) and Flex tiers, where the priced configuration is fully determined by the tier. + properties: + clusterType: + description: Topology the estimate assumes. + example: REPLICASET + readOnly: true + type: string + diskSizeGb: + description: Disk size, in GB, the estimate assumes. + example: 40 + format: double + readOnly: true + type: number + electableNodeCount: + description: Number of electable nodes the estimate assumes. + example: 3 + format: int32 + readOnly: true + type: integer + readOnly: true + required: + - clusterType + - diskSizeGb + - electableNodeCount + title: Unauthenticated Cluster Cost Estimate Assumed Defaults + type: object + UnauthClusterCostEstimateRequest: + description: Minimal cluster description used by the unauthenticated cost-estimate endpoint. The server looks up the Cluster Starter Template matching the requested tier, applies its standard defaults, and prices the resulting configuration. + properties: + cloudProvider: + description: Cloud service provider to estimate cost in. + enum: + - AWS + - GCP + - AZURE + type: string + instanceSize: + description: Cluster tier to estimate. Only a fixed set of representative tiers is supported on the unauthenticated endpoint (M0, FLEX, M10, M30); for other tiers, see https://www.mongodb.com/pricing or use the authenticated cost-estimate endpoints. + enum: + - M0 + - FLEX + - M10 + - M30 + example: M10 + type: string + regionName: + description: Cloud-provider region to estimate cost in. Region naming follows the chosen provider's convention (for example, US_EAST_1 for AWS). + example: US_EAST_1 + type: string + required: + - cloudProvider + - instanceSize + - regionName + title: Unauthenticated Cluster Cost Estimate Request + type: object + UnauthClusterCostEstimateResponse: + description: Estimated hourly and monthly compute cost for a cluster of the requested tier in the requested region. Echoes the request inputs and, for dedicated tiers, the standard defaults the server applied. + properties: + assumedDefaults: + $ref: "#/components/schemas/UnauthClusterCostEstimateAssumedDefaults" + cloudProvider: + description: Cloud service provider to estimate cost in. + enum: + - AWS + - GCP + - AZURE + readOnly: true + type: string + costEstimate: + $ref: "#/components/schemas/ClusterCostEstimate" + instanceSize: + description: Cluster tier to estimate. Only a fixed set of representative tiers is supported on the unauthenticated endpoint; for other tiers, use the authenticated cost-estimate endpoints. + enum: + - M0 + - FLEX + - M10 + - M30 + readOnly: true + type: string + regionName: + description: Cloud-provider region the estimate was produced for. + readOnly: true + type: string + required: + - cloudProvider + - costEstimate + - instanceSize + - regionName + title: Unauthenticated Cluster Cost Estimate Response + type: object UpdateAtlasOrganizationApiKey: properties: desc: @@ -26855,7 +28393,7 @@ info: termsOfService: https://www.mongodb.com/mongodb-management-service-terms-and-conditions title: MongoDB Atlas Administration API version: "2.0" - x-xgen-sha: 402d84cbd16da31e96204c8b2d159beee0e448da + x-xgen-sha: 9b453389bf3017b4639ccf370d74af7ac538e7f1 openapi: 3.0.1 paths: /api/atlas/v2: @@ -30800,6 +32338,132 @@ paths: - Project Owner x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Backups/operation/updateGroupBackupCompliancePolicy x-xgen-operation-id-override: updateCompliancePolicy + /api/atlas/v2/groups/{groupId}/chartsDashboards/{dashboardId}:export: + get: + description: Exports the specified Charts dashboard. + operationId: exportGroupChartsDashboard + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/groupId" + - description: ID of the dashboard to export. + in: path + name: dashboardId + required: true + schema: + type: string + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + description: This resource returns an exported Charts dashboard. You can use this response to import to the Charts Dashboard Import endpoint. + type: string + x-xgen-preview: + name: charts-dashboards + public: "false" + x-xgen-version: preview + description: OK + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Export One Charts Dashboard + tags: + - Charts Dashboards + x-rolesRequirements: + - Project Data Access Admin + - Project Data Access Read Only + - Project Data Access Read Write + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Charts-Dashboards/operation/exportGroupChartsDashboard + x-xgen-operation-id-override: exportChartsDashboard + /api/atlas/v2/groups/{groupId}/chartsDashboards:import: + post: + description: Imports the Charts dashboard that the template specifies. Optionally, you can specify `overwrite=true` to import into an existing dashboard. + operationId: importGroupChartsDashboards + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/groupId" + - description: Setting this to true enables importing into an existing dashboard. + in: query + name: overwrite + schema: + type: boolean + requestBody: + content: + application/vnd.atlas.preview+json: + examples: + Sample import response body: + description: Sample import response body + value: + dashboards: + dashboard-1: + description: Dashboard description + embedding: + anonymousAuthEnabled: true + filters: [] + layout: [] + title: Dashboard title + dataSources: + data-source-1: + alias: "Sample Data: Movies" + collection: movies + database: sample_data + deployment: sample-data-cluster + sourceType: cluster + exportVersion: 9 + items: + item-1: + calculatedFields: [] + query: null + sample: false + queries: {} + schema: + type: object + x-xgen-preview: + name: charts-dashboards + public: "false" + x-xgen-version: preview + description: Schema corresponding to the response fetched from an exported dashboard. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ApiChartsDashboardImportResponseView" + x-xgen-preview: + name: charts-dashboards + public: "false" + x-xgen-version: preview + description: OK + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Import One Charts Dashboard + tags: + - Charts Dashboards + x-rolesRequirements: + - Project Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Charts-Dashboards/operation/importGroupChartsDashboards + x-xgen-operation-id-override: importChartsDashboards /api/atlas/v2/groups/{groupId}/cloudProviderAccess: get: description: Returns all cloud provider access roles with access to the specified project. @@ -31145,6 +32809,59 @@ paths: customMethod: "True" verb: authorizeRole x-xgen-operation-id-override: authorizeProviderAccessRole + /api/atlas/v2/groups/{groupId}/clusterConfigurations:validate: + post: + description: Checks if the given cluster configuration is valid and ready to be used to create or edit a cluster. + operationId: validateGroupClusterConfigurations + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/pretty" + - $ref: "#/components/parameters/groupId" + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ClusterConfigurationValidation" + x-xgen-preview: + name: cluster-configuration-validation + public: "false" + x-xgen-version: preview + description: Cluster configuration to validate. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ClusterConfigurationValidationResult" + x-xgen-preview: + name: cluster-configuration-validation + public: "false" + x-xgen-version: preview + description: Ok + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Validate One Cluster Configuration + tags: + - Clusters + x-rolesRequirements: + - Project Cluster Manager + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/validateGroupClusterConfigurations /api/atlas/v2/groups/{groupId}/clusters: get: description: |- @@ -31405,6 +33122,12 @@ paths: schema: $ref: "#/components/schemas/ClusterDescription20240805" x-xgen-version: 2024-10-23 + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ApiAtlasClusterDescriptionPreview" + x-xgen-preview: + public: "true" + x-xgen-version: preview description: Cluster to create in this project. required: true responses: @@ -31429,6 +33152,12 @@ paths: schema: $ref: "#/components/schemas/ClusterDescription20240805" x-xgen-version: 2024-10-23 + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ApiAtlasClusterDescriptionPreview" + x-xgen-preview: + public: "true" + x-xgen-version: preview description: Created headers: RateLimit-Limit: @@ -31571,6 +33300,12 @@ paths: schema: $ref: "#/components/schemas/ClusterDescription20240805" x-xgen-version: 2024-08-05 + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ApiAtlasClusterDescriptionPreview" + x-xgen-preview: + public: "true" + x-xgen-version: preview description: OK headers: RateLimit-Limit: @@ -31638,6 +33373,12 @@ paths: schema: $ref: "#/components/schemas/ClusterDescription20240805" x-xgen-version: 2024-10-23 + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ApiAtlasClusterDescriptionPreview" + x-xgen-preview: + public: "true" + x-xgen-version: preview description: Cluster to update in the specified project. required: true responses: @@ -31662,6 +33403,12 @@ paths: schema: $ref: "#/components/schemas/ClusterDescription20240805" x-xgen-version: 2024-10-23 + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ApiAtlasClusterDescriptionPreview" + x-xgen-preview: + public: "true" + x-xgen-version: preview description: OK headers: RateLimit-Limit: @@ -31867,13 +33614,10 @@ paths: responses: "200": content: - application/vnd.atlas.preview+json: + application/vnd.atlas.2025-03-12+json: schema: $ref: "#/components/schemas/AdaptiveSettingsResponse" - x-xgen-preview: - name: adaptive-settings - public: "false" - x-xgen-version: preview + x-xgen-version: 2025-03-12 description: OK. headers: RateLimit-Limit: @@ -31912,25 +33656,18 @@ paths: type: string requestBody: content: - application/vnd.atlas.preview+json: + application/vnd.atlas.2025-03-12+json: schema: $ref: "#/components/schemas/AdaptiveSettingsUpdateRequest" - x-xgen-preview: - name: adaptive-settings - public: "false" - x-xgen-version: preview - description: Adaptive Settings overrides to apply to the specified cluster. Omitting `adaptiveSettingsOverrides` is a no-op. + description: "Adaptive Settings overrides to apply to the specified cluster. The supplied `adaptiveSettingsOverrides` map fully replaces the existing overrides: any override omitted from the map returns to its Atlas-managed default. Omitting the `adaptiveSettingsOverrides` field entirely preserves the existing overrides, an empty map clears all overrides, and `null` resets the field and omits it from responses until it is set again." required: true responses: "200": content: - application/vnd.atlas.preview+json: + application/vnd.atlas.2025-03-12+json: schema: $ref: "#/components/schemas/AdaptiveSettingsResponse" - x-xgen-preview: - name: adaptive-settings - public: "false" - x-xgen-version: preview + x-xgen-version: 2025-03-12 description: OK. headers: RateLimit-Limit: @@ -33325,6 +35062,116 @@ paths: - Project Read Only x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Legacy-Backup/operation/getGroupClusterBackupCheckpoint x-xgen-operation-id-override: getClusterBackupCheckpoint + /api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backupSubscription: + get: + description: Returns whether the free (M0) cluster has an active paid-backups subscription. + operationId: getGroupClusterBackupSubscription + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/pretty" + - $ref: "#/components/parameters/groupId" + - description: Human-readable label that identifies the cluster. + in: path + name: clusterName + required: true + schema: + pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ + type: string + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ClusterBackupSubscriptionResponse" + x-xgen-preview: + name: m0-paid-backup + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return One Cluster Backup Subscription + tags: + - Cloud Backups + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Backups/operation/getGroupClusterBackupSubscription + x-xgen-operation-id-override: getClusterBackupSubscription + patch: + description: Enables or disables the paid-backup subscription for a free (M0) cluster. Set enabled to update the backup state on the cluster. Omit enabled to leave the subscription unchanged. + operationId: updateGroupClusterBackupSubscription + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/pretty" + - $ref: "#/components/parameters/groupId" + - description: Human-readable label that identifies the cluster. + in: path + name: clusterName + required: true + schema: + pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ + type: string + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ClusterBackupSubscriptionUpdateRequest" + x-xgen-preview: + name: m0-paid-backup + x-xgen-version: preview + description: Paid-backup subscription state to apply to the free (M0) cluster. An empty body is a no-op. + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ClusterBackupSubscriptionResponse" + x-xgen-preview: + name: m0-paid-backup + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "402": + $ref: "#/components/responses/paymentRequired" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Update One Cluster Backup Subscription + tags: + - Cloud Backups + x-rolesRequirements: + - Project Cluster Manager + - Project Cluster Resilience Tester + - Project Replica Set Manager + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Backups/operation/updateGroupClusterBackupSubscription + x-xgen-operation-id-override: updateClusterBackupSubscription /api/atlas/v2/groups/{groupId}/clusters/{clusterName}/collStats/pinned: get: description: Returns a list of given cluster's pinned namespaces, a set of namespaces manually selected by users to collect query latency metrics on. @@ -35327,6 +37174,8 @@ paths: $ref: "#/components/responses/forbidden" "404": $ref: "#/components/responses/notFound" + "409": + $ref: "#/components/responses/conflict" "429": $ref: "#/components/responses/tooManyRequests" "500": @@ -36006,7 +37855,7 @@ paths: maxItems: 10 type: array style: form - - description: Retrieve query shape statistics matching specified MongoDB commands. To include multiple commands, pass the parameter multiple times delimited with an ampersand (`&`) between each command. The currently supported parameters are find, distinct, and aggregate. Omit this parameter to return results for all supported commands. + - description: "Retrieve query shape statistics matching specified MongoDB commands. To include multiple commands, pass the parameter multiple times delimited with an ampersand (`&`) between each command. The currently supported parameters are: find, distinct, aggregate, count, insert, update, and delete. The insert, update, and delete commands return results only for clusters running MongoDB 9.0 or later with write query shape statistics enabled for the project. Omit this parameter to return results for all supported commands." in: query name: commands schema: @@ -36016,8 +37865,12 @@ paths: - find - distinct - aggregate + - count + - insert + - update + - delete type: string - maxItems: 3 + maxItems: 7 type: array uniqueItems: true style: form @@ -36034,7 +37887,7 @@ paths: in: query name: series schema: - description: Query shape statistics data series to retrieve. A series represents a specific metric about query execution. To include multiple series, pass the parameter multiple times delimited with an ampersand (`&`) between each series. Omit this parameter to return results for all available series. The `P50_EXECUTION_TIME`, `P90_EXECUTION_TIME`, and `P99_EXECUTION_TIME` series are deprecated as the values they report may be inaccurate. They will be removed in a future release. + description: Query shape statistics data series to retrieve. A series represents a specific metric about query execution. To include multiple series, pass the parameter multiple times delimited with an ampersand (`&`) between each series. Omit this parameter to return results for all available series. The `P50_EXECUTION_TIME`, `P90_EXECUTION_TIME`, and `P99_EXECUTION_TIME` series are deprecated as the values they report may be inaccurate. They will be removed in a future release. The write command series (`DOCS_MATCHED`, `DOCS_MODIFIED`, `DOCS_UPSERTED`, `DOCS_DELETED`, `DOCS_INSERTED`, `KEYS_INSERTED`, `KEYS_DELETED`) return data only for clusters running MongoDB 9.0 or later with write query shape statistics enabled for the project. items: enum: - TOTAL_EXECUTION_TIME @@ -36052,8 +37905,15 @@ paths: - P50_EXECUTION_TIME - P90_EXECUTION_TIME - P99_EXECUTION_TIME + - DOCS_MATCHED + - DOCS_MODIFIED + - DOCS_UPSERTED + - DOCS_DELETED + - DOCS_INSERTED + - KEYS_INSERTED + - KEYS_DELETED type: string - maxItems: 15 + maxItems: 22 type: array uniqueItems: true style: form @@ -37851,35 +39711,53 @@ paths: - Project Read Only x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/getGroupClusterStatus x-xgen-operation-id-override: getClusterStatus - /api/atlas/v2/groups/{groupId}/clusters/{clusterName}:grantMongoDBEmployeeAccess: + /api/atlas/v2/groups/{groupId}/clusters/{clusterName}:estimateUpdateCost: post: - description: Grants MongoDB employee cluster access for the given duration and at the specified level for one cluster. - operationId: grantGroupClusterMongoDbEmployeeAccess + description: This endpoint validates a supplied cluster configuration and returns an estimated hourly and monthly compute cost without creating or modifying the cluster. It applies the same validation as the Update One Cluster endpoint, so invalid configurations are rejected with the same errors. The estimate excludes backup storage, disk storage, data transfer, and premium feature surcharges, which are billed based on actual usage. Subscription, payment, and resource policy checks are not performed, so a configuration that can be priced here may still be rejected during the actual operation. + operationId: estimateGroupClusterUpdateCost parameters: - $ref: "#/components/parameters/envelope" - $ref: "#/components/parameters/pretty" - $ref: "#/components/parameters/groupId" - - description: Human-readable label that identifies this cluster. + - description: Human-readable label that identifies the cluster. in: path name: clusterName required: true schema: pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ type: string + - description: When true, hardware specification fields for autoscaling-enabled clusters are resolved to their effective (current operational) values before pricing. When false (default), the client-specified values are priced. Set this to match the header sent on the corresponding cluster update. + in: header + name: Use-Effective-Instance-Fields + schema: + default: false + type: boolean + - description: Controls how `replicationSpecs` are interpreted for auto-sharded clusters before pricing. When false (default), `replicationSpecs` is treated as the actual cluster state. + in: header + name: Use-Effective-Fields-Replication-Specs + schema: + default: false + type: boolean requestBody: content: - application/vnd.atlas.2024-08-05+json: + application/vnd.atlas.preview+json: schema: - $ref: "#/components/schemas/EmployeeAccessGrantView" - x-xgen-version: 2024-08-05 - description: Grant access level and expiration. + $ref: "#/components/schemas/ClusterDescription20240805" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Cluster update to estimate pricing for. required: true responses: - "204": + "200": content: - application/vnd.atlas.2024-08-05+json: - x-xgen-version: 2024-08-05 - description: No Content + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ClusterCostEstimate" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the supplied configuration. headers: RateLimit-Limit: $ref: "#/components/headers/HeaderRateLimitLimit" @@ -37899,17 +39777,17 @@ paths: $ref: "#/components/responses/tooManyRequests" "500": $ref: "#/components/responses/internalServerError" - summary: Grant MongoDB Employee Cluster Access for One Cluster + summary: Estimate the Cost of Updating One Cluster tags: - Clusters x-rolesRequirements: - - Project Support Access Manager - x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/grantGroupClusterMongoDbEmployeeAccess - x-xgen-operation-id-override: grantMongoEmployeeAccess - /api/atlas/v2/groups/{groupId}/clusters/{clusterName}:pinFeatureCompatibilityVersion: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/estimateGroupClusterUpdateCost + x-xgen-operation-id-override: estimateUpdateClusterCost + /api/atlas/v2/groups/{groupId}/clusters/{clusterName}:grantMongoDBEmployeeAccess: post: - description: Pins the Feature Compatibility Version (FCV) to the current MongoDB version and sets the pin expiration date. If an FCV pin already exists for the cluster, calling this method will only update the expiration date of the existing pin and will not re-pin the FCV. - operationId: pinGroupClusterFeatureCompatibilityVersion + description: Grants MongoDB employee cluster access for the given duration and at the specified level for one cluster. + operationId: grantGroupClusterMongoDbEmployeeAccess parameters: - $ref: "#/components/parameters/envelope" - $ref: "#/components/parameters/pretty" @@ -37923,58 +39801,113 @@ paths: type: string requestBody: content: - application/vnd.atlas.2024-05-30+json: + application/vnd.atlas.2024-08-05+json: schema: - $ref: "#/components/schemas/PinFCVView" - x-xgen-version: 2024-05-30 - description: Optional request parameters for tuning FCV pinning configuration. - responses: - "204": - content: - application/vnd.atlas.2024-05-30+json: - x-xgen-version: 2024-05-30 - description: No Content - headers: - RateLimit-Limit: - $ref: "#/components/headers/HeaderRateLimitLimit" - RateLimit-Remaining: - $ref: "#/components/headers/HeaderRateLimitRemaining" - "400": - $ref: "#/components/responses/badRequest" - "401": - $ref: "#/components/responses/unauthorized" - "403": - $ref: "#/components/responses/forbidden" - "404": - $ref: "#/components/responses/notFound" - "409": - $ref: "#/components/responses/conflict" - "429": - $ref: "#/components/responses/tooManyRequests" - "500": - $ref: "#/components/responses/internalServerError" - summary: Pin Feature Compatibility Version for One Cluster in One Project - tags: - - Clusters - x-rolesRequirements: - - Project Owner - x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/pinGroupClusterFeatureCompatibilityVersion - x-xgen-operation-id-override: pinFeatureCompatibilityVersion - /api/atlas/v2/groups/{groupId}/clusters/{clusterName}:revokeMongoDBEmployeeAccess: - post: - description: Revokes a previously granted MongoDB employee cluster access. - operationId: revokeGroupClusterMongoDbEmployeeAccess - parameters: - - $ref: "#/components/parameters/envelope" - - $ref: "#/components/parameters/pretty" - - $ref: "#/components/parameters/groupId" - - description: Human-readable label that identifies this cluster. - in: path - name: clusterName - required: true - schema: - pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ - type: string + $ref: "#/components/schemas/EmployeeAccessGrantView" + x-xgen-version: 2024-08-05 + description: Grant access level and expiration. + required: true + responses: + "204": + content: + application/vnd.atlas.2024-08-05+json: + x-xgen-version: 2024-08-05 + description: No Content + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "409": + $ref: "#/components/responses/conflict" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Grant MongoDB Employee Cluster Access for One Cluster + tags: + - Clusters + x-rolesRequirements: + - Project Support Access Manager + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/grantGroupClusterMongoDbEmployeeAccess + x-xgen-operation-id-override: grantMongoEmployeeAccess + /api/atlas/v2/groups/{groupId}/clusters/{clusterName}:pinFeatureCompatibilityVersion: + post: + description: Pins the Feature Compatibility Version (FCV) to the current MongoDB version and sets the pin expiration date. If an FCV pin already exists for the cluster, calling this method will only update the expiration date of the existing pin and will not re-pin the FCV. + operationId: pinGroupClusterFeatureCompatibilityVersion + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/pretty" + - $ref: "#/components/parameters/groupId" + - description: Human-readable label that identifies this cluster. + in: path + name: clusterName + required: true + schema: + pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ + type: string + requestBody: + content: + application/vnd.atlas.2024-05-30+json: + schema: + $ref: "#/components/schemas/PinFCVView" + x-xgen-version: 2024-05-30 + description: Optional request parameters for tuning FCV pinning configuration. + responses: + "204": + content: + application/vnd.atlas.2024-05-30+json: + x-xgen-version: 2024-05-30 + description: No Content + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "409": + $ref: "#/components/responses/conflict" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Pin Feature Compatibility Version for One Cluster in One Project + tags: + - Clusters + x-rolesRequirements: + - Project Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/pinGroupClusterFeatureCompatibilityVersion + x-xgen-operation-id-override: pinFeatureCompatibilityVersion + /api/atlas/v2/groups/{groupId}/clusters/{clusterName}:revokeMongoDBEmployeeAccess: + post: + description: Revokes a previously granted MongoDB employee cluster access. + operationId: revokeGroupClusterMongoDbEmployeeAccess + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/pretty" + - $ref: "#/components/parameters/groupId" + - description: Human-readable label that identifies this cluster. + in: path + name: clusterName + required: true + schema: + pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ + type: string responses: "204": content: @@ -38323,21 +40256,34 @@ paths: customMethod: true verb: upgrade x-xgen-operation-id-override: upgradeClusterToServerless - /api/atlas/v2/groups/{groupId}/collStats/metrics: - get: - description: Returns all available Coll Stats Latency metric names and their respective units for the specified project at the time of request. - operationId: listGroupCollStatMetrics + /api/atlas/v2/groups/{groupId}/clusters:estimateCreateCost: + post: + description: This endpoint validates a supplied cluster configuration and returns an estimated hourly and monthly compute cost without creating or modifying the cluster. It applies the same validation as the Create One Cluster endpoint, so invalid configurations are rejected with the same errors. The estimate excludes backup storage, disk storage, data transfer, and premium feature surcharges, which are billed based on actual usage. Subscription, payment, and resource policy checks are not performed, so a configuration that can be priced here may still be rejected during the actual operation. + operationId: estimateGroupClusterCreateCost parameters: - - $ref: "#/components/parameters/groupId" - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/pretty" + - $ref: "#/components/parameters/groupId" + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ClusterDescription20240805" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Cluster configuration to estimate. + required: true responses: "200": content: - application/vnd.atlas.2023-11-15+json: + application/vnd.atlas.preview+json: schema: - $ref: "#/components/schemas/CollStatsLatencyNamespaceMetrics" - x-xgen-version: 2023-11-15 - description: OK + $ref: "#/components/schemas/ClusterCostEstimate" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the supplied configuration. headers: RateLimit-Limit: $ref: "#/components/headers/HeaderRateLimitLimit" @@ -38351,90 +40297,47 @@ paths: $ref: "#/components/responses/forbidden" "404": $ref: "#/components/responses/notFound" + "409": + $ref: "#/components/responses/conflict" "429": $ref: "#/components/responses/tooManyRequests" "500": $ref: "#/components/responses/internalServerError" - summary: Return All Metric Names - tags: - - Collection Level Metrics - x-rolesRequirements: - - Project Read Only - x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Collection-Level-Metrics/operation/listGroupCollStatMetrics - x-xgen-operation-id-override: listCollStatMetrics - /api/atlas/v2/groups/{groupId}/containers: - get: - description: Returns details about all network peering containers in the specified project for the specified cloud provider. If you do not specify the cloud provider, MongoDB Cloud returns details about all network peering containers in the project for Amazon Web Services (AWS). - operationId: listGroupContainers - parameters: - - $ref: "#/components/parameters/envelope" - - $ref: "#/components/parameters/groupId" - - $ref: "#/components/parameters/includeCount" - - $ref: "#/components/parameters/itemsPerPage" - - $ref: "#/components/parameters/pageNum" - - $ref: "#/components/parameters/pretty" - - description: Cloud service provider that serves the desired network peering containers. - in: query - name: providerName - required: true - schema: - default: AWS - enum: - - AWS - - AZURE - - GCP - type: string - responses: - "200": - content: - application/vnd.atlas.2023-01-01+json: - schema: - $ref: "#/components/schemas/PaginatedCloudProviderContainerView" - x-xgen-version: 2023-01-01 - description: OK - headers: - RateLimit-Limit: - $ref: "#/components/headers/HeaderRateLimitLimit" - RateLimit-Remaining: - $ref: "#/components/headers/HeaderRateLimitRemaining" - "401": - $ref: "#/components/responses/unauthorized" - "403": - $ref: "#/components/responses/forbidden" - "404": - $ref: "#/components/responses/notFound" - "429": - $ref: "#/components/responses/tooManyRequests" - "500": - $ref: "#/components/responses/internalServerError" - summary: Return All Network Peering Containers in One Project for One Cloud Provider + summary: Estimate the Cost of Creating One Cluster tags: - - Network Peering + - Clusters x-rolesRequirements: - Project Read Only - x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Network-Peering/operation/listGroupContainers + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/estimateGroupClusterCreateCost + x-xgen-operation-id-override: estimateCreateClusterCost + /api/atlas/v2/groups/{groupId}/clusters:estimateTenantUpgradeCost: post: - description: Creates one new network peering container in the specified project. MongoDB Cloud can deploy Network Peering connections in a network peering container. GCP can have one container per project. AWS and Azure can have one container per cloud provider region. - operationId: createGroupContainer + description: This endpoint validates a supplied cluster configuration and returns an estimated hourly and monthly compute cost without creating or modifying the cluster. It applies the same validation as the Upgrade One Shared-Tier Cluster endpoint, so invalid configurations are rejected with the same errors. The estimate excludes backup storage, disk storage, data transfer, and premium feature surcharges, which are billed based on actual usage. Subscription, payment, and resource policy checks are not performed, so a configuration that can be priced here may still be rejected during the actual operation. + operationId: estimateGroupClusterTenantUpgradeCost parameters: - $ref: "#/components/parameters/envelope" - - $ref: "#/components/parameters/groupId" - $ref: "#/components/parameters/pretty" + - $ref: "#/components/parameters/groupId" requestBody: content: - application/vnd.atlas.2023-01-01+json: + application/vnd.atlas.preview+json: schema: - $ref: "#/components/schemas/CloudProviderContainer" - description: Creates one new network peering container in the specified project. + $ref: "#/components/schemas/LegacyAtlasTenantClusterUpgradeRequest" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Shared-tier cluster upgrade to estimate. required: true responses: "200": content: - application/vnd.atlas.2023-01-01+json: + application/vnd.atlas.preview+json: schema: - $ref: "#/components/schemas/CloudProviderContainer" - x-xgen-version: 2023-01-01 - description: OK + $ref: "#/components/schemas/ClusterCostEstimate" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the supplied configuration. headers: RateLimit-Limit: $ref: "#/components/headers/HeaderRateLimitLimit" @@ -38454,34 +40357,28 @@ paths: $ref: "#/components/responses/tooManyRequests" "500": $ref: "#/components/responses/internalServerError" - summary: Create One Network Peering Container + summary: Estimate the Cost of Upgrading One Shared-Tier Cluster tags: - - Network Peering + - Clusters x-rolesRequirements: - - Project Owner - x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Network-Peering/operation/createGroupContainer - /api/atlas/v2/groups/{groupId}/containers/{containerId}: - delete: - description: Removes one network peering container in the specified project. - operationId: deleteGroupContainer + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/estimateGroupClusterTenantUpgradeCost + x-xgen-operation-id-override: estimateTenantUpgradeCost + /api/atlas/v2/groups/{groupId}/collStats/metrics: + get: + description: Returns all available Coll Stats Latency metric names and their respective units for the specified project at the time of request. + operationId: listGroupCollStatMetrics parameters: - - $ref: "#/components/parameters/envelope" - $ref: "#/components/parameters/groupId" - - $ref: "#/components/parameters/pretty" - - description: Unique 24-hexadecimal digit string that identifies the MongoDB Cloud network container that you want to remove. - in: path - name: containerId - required: true - schema: - example: 32b6e34b3d91647abb20e7b8 - pattern: ^([a-f0-9]{24})$ - type: string + - $ref: "#/components/parameters/envelope" responses: - "204": + "200": content: - application/vnd.atlas.2023-01-01+json: - x-xgen-version: 2023-01-01 - description: No Content + application/vnd.atlas.2023-11-15+json: + schema: + $ref: "#/components/schemas/CollStatsLatencyNamespaceMetrics" + x-xgen-version: 2023-11-15 + description: OK headers: RateLimit-Limit: $ref: "#/components/headers/HeaderRateLimitLimit" @@ -38495,39 +40392,45 @@ paths: $ref: "#/components/responses/forbidden" "404": $ref: "#/components/responses/notFound" - "409": - $ref: "#/components/responses/conflict" "429": $ref: "#/components/responses/tooManyRequests" "500": $ref: "#/components/responses/internalServerError" - summary: Remove One Network Peering Container + summary: Return All Metric Names tags: - - Network Peering + - Collection Level Metrics x-rolesRequirements: - - Project Owner - x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Network-Peering/operation/deleteGroupContainer + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Collection-Level-Metrics/operation/listGroupCollStatMetrics + x-xgen-operation-id-override: listCollStatMetrics + /api/atlas/v2/groups/{groupId}/containers: get: - description: Returns details about one network peering container in one specified project. Network peering containers contain network peering connections. - operationId: getGroupContainer + description: Returns details about all network peering containers in the specified project for the specified cloud provider. If you do not specify the cloud provider, MongoDB Cloud returns details about all network peering containers in the project for Amazon Web Services (AWS). + operationId: listGroupContainers parameters: - $ref: "#/components/parameters/envelope" - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/includeCount" + - $ref: "#/components/parameters/itemsPerPage" + - $ref: "#/components/parameters/pageNum" - $ref: "#/components/parameters/pretty" - - description: Unique 24-hexadecimal digit string that identifies the MongoDB Cloud network container. - in: path - name: containerId + - description: Cloud service provider that serves the desired network peering containers. + in: query + name: providerName required: true schema: - example: 32b6e34b3d91647abb20e7b8 - pattern: ^([a-f0-9]{24})$ + default: AWS + enum: + - AWS + - AZURE + - GCP type: string responses: "200": content: application/vnd.atlas.2023-01-01+json: schema: - $ref: "#/components/schemas/CloudProviderContainer" + $ref: "#/components/schemas/PaginatedCloudProviderContainerView" x-xgen-version: 2023-01-01 description: OK headers: @@ -38545,33 +40448,171 @@ paths: $ref: "#/components/responses/tooManyRequests" "500": $ref: "#/components/responses/internalServerError" - summary: Return One Network Peering Container + summary: Return All Network Peering Containers in One Project for One Cloud Provider tags: - Network Peering x-rolesRequirements: - Project Read Only - x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Network-Peering/operation/getGroupContainer - patch: - description: Updates the network details and labels of one specified network peering container in the specified project. - operationId: updateGroupContainer + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Network-Peering/operation/listGroupContainers + post: + description: Creates one new network peering container in the specified project. MongoDB Cloud can deploy Network Peering connections in a network peering container. GCP can have one container per project. AWS and Azure can have one container per cloud provider region. + operationId: createGroupContainer parameters: - $ref: "#/components/parameters/envelope" - $ref: "#/components/parameters/groupId" - $ref: "#/components/parameters/pretty" - - description: Unique 24-hexadecimal digit string that identifies the MongoDB Cloud network container that you want to remove. - in: path - name: containerId - required: true - schema: - example: 32b6e34b3d91647abb20e7b8 - pattern: ^([a-f0-9]{24})$ - type: string requestBody: content: application/vnd.atlas.2023-01-01+json: schema: $ref: "#/components/schemas/CloudProviderContainer" - description: Updates the network details and labels of one specified network peering container in the specified project. + description: Creates one new network peering container in the specified project. + required: true + responses: + "200": + content: + application/vnd.atlas.2023-01-01+json: + schema: + $ref: "#/components/schemas/CloudProviderContainer" + x-xgen-version: 2023-01-01 + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "409": + $ref: "#/components/responses/conflict" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Create One Network Peering Container + tags: + - Network Peering + x-rolesRequirements: + - Project Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Network-Peering/operation/createGroupContainer + /api/atlas/v2/groups/{groupId}/containers/{containerId}: + delete: + description: Removes one network peering container in the specified project. + operationId: deleteGroupContainer + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/pretty" + - description: Unique 24-hexadecimal digit string that identifies the MongoDB Cloud network container that you want to remove. + in: path + name: containerId + required: true + schema: + example: 32b6e34b3d91647abb20e7b8 + pattern: ^([a-f0-9]{24})$ + type: string + responses: + "204": + content: + application/vnd.atlas.2023-01-01+json: + x-xgen-version: 2023-01-01 + description: No Content + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "409": + $ref: "#/components/responses/conflict" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Remove One Network Peering Container + tags: + - Network Peering + x-rolesRequirements: + - Project Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Network-Peering/operation/deleteGroupContainer + get: + description: Returns details about one network peering container in one specified project. Network peering containers contain network peering connections. + operationId: getGroupContainer + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/pretty" + - description: Unique 24-hexadecimal digit string that identifies the MongoDB Cloud network container. + in: path + name: containerId + required: true + schema: + example: 32b6e34b3d91647abb20e7b8 + pattern: ^([a-f0-9]{24})$ + type: string + responses: + "200": + content: + application/vnd.atlas.2023-01-01+json: + schema: + $ref: "#/components/schemas/CloudProviderContainer" + x-xgen-version: 2023-01-01 + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return One Network Peering Container + tags: + - Network Peering + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Network-Peering/operation/getGroupContainer + patch: + description: Updates the network details and labels of one specified network peering container in the specified project. + operationId: updateGroupContainer + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/pretty" + - description: Unique 24-hexadecimal digit string that identifies the MongoDB Cloud network container that you want to remove. + in: path + name: containerId + required: true + schema: + example: 32b6e34b3d91647abb20e7b8 + pattern: ^([a-f0-9]{24})$ + type: string + requestBody: + content: + application/vnd.atlas.2023-01-01+json: + schema: + $ref: "#/components/schemas/CloudProviderContainer" + description: Updates the network details and labels of one specified network peering container in the specified project. required: true responses: "200": @@ -39483,7 +41524,7 @@ paths: x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Database-Users/operation/listGroupDatabaseUsers x-xgen-operation-id-override: listDatabaseUsers post: - description: Creates one database user in the specified project. This MongoDB Cloud supports a maximum of 100 database users per project. If you require more than 100 database users on a project, contact Support. + description: Creates one database user in the specified project. This MongoDB Cloud supports a default limit of 100 and a maximum of 900 database users per project. If you require more than 900 database users on a project, contact Support. externalDocs: description: Contact MongoDB Support url: https://cloud.mongodb.com/support @@ -40667,6 +42708,67 @@ paths: 2026-05-07: Updated NO_PAYMENT_INFORMATION_FOUND error message to include a link for users to add a payment method when no payment info is found. x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Flex-Clusters/operation/createGroupFlexCluster x-xgen-operation-id-override: createFlexCluster + /api/atlas/v2/groups/{groupId}/flexClusters/{clusterName}:estimateUpdateCost: + post: + description: This endpoint validates a supplied cluster configuration and returns an estimated hourly and monthly compute cost without creating or modifying the cluster. It applies the same validation as the Update One Flex Cluster endpoint, so invalid configurations are rejected with the same errors. The estimate excludes backup storage, disk storage, data transfer, and premium feature surcharges, which are billed based on actual usage. Subscription, payment, and resource policy checks are not performed, so a configuration that can be priced here may still be rejected during the actual operation. + operationId: estimateGroupFlexClusterUpdateCost + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/pretty" + - $ref: "#/components/parameters/groupId" + - description: Human-readable label that identifies the flex cluster. + in: path + name: clusterName + required: true + schema: + pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ + type: string + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/FlexClusterDescriptionUpdate20241113" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Flex cluster update to estimate pricing for. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ClusterCostEstimate" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the supplied configuration. + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "409": + $ref: "#/components/responses/conflict" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Estimate the Cost of Updating One Flex Cluster + tags: + - Flex Clusters + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Flex-Clusters/operation/estimateGroupFlexClusterUpdateCost + x-xgen-operation-id-override: estimateUpdateFlexCost /api/atlas/v2/groups/{groupId}/flexClusters/{name}: delete: description: Removes one flex cluster from the specified project. The flex cluster must have termination protection disabled in order to be deleted. @@ -41138,6 +43240,114 @@ paths: - Project Read Only x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Flex-Snapshots/operation/getGroupFlexClusterBackupSnapshot x-xgen-operation-id-override: getFlexBackupSnapshot + /api/atlas/v2/groups/{groupId}/flexClusters:estimateCreateCost: + post: + description: This endpoint validates a supplied cluster configuration and returns an estimated hourly and monthly compute cost without creating or modifying the cluster. It applies the same validation as the Create One Flex Cluster endpoint, so invalid configurations are rejected with the same errors. The estimate excludes backup storage, disk storage, data transfer, and premium feature surcharges, which are billed based on actual usage. Subscription, payment, and resource policy checks are not performed, so a configuration that can be priced here may still be rejected during the actual operation. + operationId: estimateGroupFlexClusterCreateCost + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/pretty" + - $ref: "#/components/parameters/groupId" + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/FlexClusterDescriptionCreate20241113" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Flex cluster configuration to estimate. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ClusterCostEstimate" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the supplied configuration. + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "409": + $ref: "#/components/responses/conflict" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Estimate the Cost of Creating One Flex Cluster + tags: + - Flex Clusters + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Flex-Clusters/operation/estimateGroupFlexClusterCreateCost + x-xgen-operation-id-override: estimateCreateFlexCost + /api/atlas/v2/groups/{groupId}/flexClusters:estimateTenantUpgradeCost: + post: + description: This endpoint validates a supplied cluster configuration and returns an estimated hourly and monthly compute cost without creating or modifying the cluster. It applies the same validation as the Upgrade One Flex Cluster endpoint, so invalid configurations are rejected with the same errors. The estimate excludes backup storage, disk storage, data transfer, and premium feature surcharges, which are billed based on actual usage. Subscription, payment, and resource policy checks are not performed, so a configuration that can be priced here may still be rejected during the actual operation. + operationId: estimateGroupFlexClusterTenantUpgradeCost + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/pretty" + - $ref: "#/components/parameters/groupId" + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/AtlasTenantClusterUpgradeRequest20240805" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Flex cluster upgrade to estimate. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/ClusterCostEstimate" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the supplied configuration. + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "409": + $ref: "#/components/responses/conflict" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Estimate the Cost of Upgrading One Flex Cluster + tags: + - Flex Clusters + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Flex-Clusters/operation/estimateGroupFlexClusterTenantUpgradeCost + x-xgen-operation-id-override: estimateUpgradeFlexCost /api/atlas/v2/groups/{groupId}/flexClusters:tenantUpgrade: post: description: Upgrades a flex cluster to a dedicated cluster (M10+) in the specified project. @@ -42113,7 +44323,7 @@ paths: | `atlas.project.deployment.clusters` | Limit on the number of clusters in this project | 25 | 100 | | `atlas.project.deployment.nodesPerPrivateLinkRegion` | Limit on AWS PrivateLink addressable target nodes per region in this project. For sharded clusters using optimized (load-balanced) connection strings, `currentUsage` doesn't grow with the number of `mongos` — the load balancer is counted as a single addressable target regardless of how many `mongos` sit behind it. | 50 | 90 | | `atlas.project.security.databaseAccess.customRoles` | Limit on the number of custom roles in this project | 100 | 1400 | - | `atlas.project.security.databaseAccess.users` | Limit on the number of database users in this project | 100 | 100 | + | `atlas.project.security.databaseAccess.users` | Limit on the number of database users in this project | 100 | 900 | | `atlas.project.security.networkAccess.crossRegionEntries` | Limit on the number of cross-region network access entries in this project | 40 | 220 | | `atlas.project.security.networkAccess.entries` | Limit on the number of network access entries in this project | 200 | 20 | | `dataFederation.bytesProcessed.query` | Limit on the number of bytes processed during a single Data Federation query | N/A | N/A | @@ -42187,7 +44397,7 @@ paths: | `atlas.project.deployment.clusters` | Limit on the number of clusters in this project | 25 | 100 | | `atlas.project.deployment.nodesPerPrivateLinkRegion` | Limit on AWS PrivateLink addressable target nodes per region in this project. For sharded clusters using optimized (load-balanced) connection strings, `currentUsage` doesn't grow with the number of `mongos` — the load balancer is counted as a single addressable target regardless of how many `mongos` sit behind it. | 50 | 90 | | `atlas.project.security.databaseAccess.customRoles` | Limit on the number of custom roles in this project | 100 | 1400 | - | `atlas.project.security.databaseAccess.users` | Limit on the number of database users in this project | 100 | 100 | + | `atlas.project.security.databaseAccess.users` | Limit on the number of database users in this project | 100 | 900 | | `atlas.project.security.networkAccess.crossRegionEntries` | Limit on the number of cross-region network access entries in this project | 40 | 220 | | `atlas.project.security.networkAccess.entries` | Limit on the number of network access entries in this project | 200 | 20 | | `dataFederation.bytesProcessed.query` | Limit on the number of bytes processed during a single Data Federation query | N/A | N/A | @@ -42266,7 +44476,7 @@ paths: | `atlas.project.deployment.clusters` | Limit on the number of clusters in this project | 25 | 100 | | `atlas.project.deployment.nodesPerPrivateLinkRegion` | Limit on AWS PrivateLink addressable target nodes per region in this project. For sharded clusters using optimized (load-balanced) connection strings, `currentUsage` doesn't grow with the number of `mongos` — the load balancer is counted as a single addressable target regardless of how many `mongos` sit behind it. | 50 | 90 | | `atlas.project.security.databaseAccess.customRoles` | Limit on the number of custom roles in this project | 100 | 1400 | - | `atlas.project.security.databaseAccess.users` | Limit on the number of database users in this project | 100 | 100 | + | `atlas.project.security.databaseAccess.users` | Limit on the number of database users in this project | 100 | 900 | | `atlas.project.security.networkAccess.crossRegionEntries` | Limit on the number of cross-region network access entries in this project | 40 | 220 | | `atlas.project.security.networkAccess.entries` | Limit on the number of network access entries in this project | 200 | 20 | | `dataFederation.bytesProcessed.query` | Limit on the number of bytes processed during a single Data Federation query | N/A | N/A | @@ -46097,11 +48307,20 @@ paths: - TRANSACTIONS_CURRENT_ACTIVE - TRANSACTIONS_CURRENT_INACTIVE - TRANSACTIONS_CURRENT_OPEN - - TRANSACTIONS_TOTAL_ABORTED - - TRANSACTIONS_TOTAL_COMMITTED - - TRANSACTIONS_TOTAL_STARTED + - TRANSACTIONS_ABORTED + - TRANSACTIONS_COMMITTED + - TRANSACTIONS_STARTED - CACHE_PRESSURE_PERCENTAGE - INGRESS_QUEUE_WAIT_TIME + - CONNECTION_RATE_LIMITING_SUCCESSFUL_ADMISSIONS + - CONNECTION_RATE_LIMITING_REJECTED_ADMISSIONS + - CONNECTION_RATE_LIMITING_AVERAGE_TIME_QUEUED + - OPERATION_RATE_LIMITING_OFFERED_ADMISSIONS + - OPERATION_RATE_LIMITING_SUCCESSFUL_ADMISSIONS + - OPERATION_RATE_LIMITING_REJECTED_ADMISSIONS + - OPERATION_RATE_LIMITING_ADDED_TO_QUEUE + - OPERATION_RATE_LIMITING_CURRENT_QUEUE_DEPTH + - OPERATION_RATE_LIMITING_AVERAGE_TIME_QUEUED type: string maxItems: 10 minItems: 1 @@ -46587,6 +48806,47 @@ paths: - Project Owner x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Push-Based-Log-Export/operation/createGroupPushBasedLogExport x-xgen-operation-id-override: createLogExport + /api/atlas/v2/groups/{groupId}/ratelimits: + get: + description: Retrieve rate limiting bucket state for the specified group. + operationId: getGroupRatelimits + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/AtlasRateLimitInspectionResponse" + x-xgen-preview: + name: rate-limit + public: "false" + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return Rate Limit State for One Group + tags: + - Rate Limiting + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Rate-Limiting/operation/getGroupRatelimits /api/atlas/v2/groups/{groupId}/sampleDatasetLoad/{name}: post: description: Requests loading the MongoDB sample dataset into the specified cluster. @@ -47284,7 +49544,7 @@ paths: x-xgen-operation-id-override: createAccessList /api/atlas/v2/groups/{groupId}/serviceAccounts/{clientId}/accessList/{ipAddress}: delete: - description: Removes the specified access list entry from the specified Service Account for the project. You can't remove the requesting IP address from the access list. + description: Removes the specified access list entry from the specified Service Account for the project. A Service Account cannot remove its own IP address from its access list. operationId: deleteGroupServiceAccountAccessListEntry parameters: - $ref: "#/components/parameters/envelope" @@ -47512,6 +49772,12 @@ paths: schema: $ref: "#/components/schemas/GroupSettings" x-xgen-version: 2023-01-01 + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/GroupSettingsPreview" + x-xgen-preview: + name: query-insights-gen-ai-features + x-xgen-version: preview description: OK headers: RateLimit-Limit: @@ -47546,6 +49812,12 @@ paths: application/vnd.atlas.2023-01-01+json: schema: $ref: "#/components/schemas/GroupSettings" + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/GroupSettingsPreview" + x-xgen-preview: + name: query-insights-gen-ai-features + x-xgen-version: preview description: Settings to update. required: true responses: @@ -47555,6 +49827,12 @@ paths: schema: $ref: "#/components/schemas/GroupSettings" x-xgen-version: 2023-01-01 + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/GroupSettingsPreview" + x-xgen-preview: + name: query-insights-gen-ai-features + x-xgen-version: preview description: OK headers: RateLimit-Limit: @@ -47618,7 +49896,7 @@ paths: - Project Read Only x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Standby-Links/operation/listGroupStandbyLinks post: - description: Creates a disaster recovery standby link between an active cluster and a standby cluster. Both clusters must not already be part of a standby link system, must be single-region clusters, and must be in different regions. + description: Creates a disaster recovery standby link between an active cluster and a standby cluster. Both clusters must not already be part of a standby link system and must be single-region clusters. operationId: createGroupStandbyLink parameters: - description: Unique 24-hexadecimal digit string that identifies the project containing the clusters. @@ -48542,7 +50820,11 @@ paths: tags: - Streams x-rolesRequirements: - - Project Read Only + - Organization Stream Processing Admin + - Project Data Access Admin + - Project Data Access Read Only + - Project Data Access Read Write + - Project Stream Processing Manager x-xgen-changelog: 2023-09-11: The MongoDB Atlas Streams Processing API is now exposed as part of private preview, but is subject to change until GA. x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/getGroupStreamConnection @@ -49958,6 +52240,701 @@ paths: - Project Stream Processing Manager x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/withGroupStreamSampleConnections x-xgen-operation-id-override: withStreamSampleConnections + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayAttachments: + get: + description: Returns the Transit Gateway Attachments for this group in the shared Atlas AWS Account. + operationId: listGroupStreamsTransitGatewayAttachments + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/itemsPerPage" + - $ref: "#/components/parameters/pageNum" + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/PaginatedApiStreamsTransitGatewayAttachmentResponse" + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return All Transit Gateway Attachments for One Group + tags: + - Streams + x-rolesRequirements: + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/listGroupStreamsTransitGatewayAttachments + x-xgen-operation-id-override: listTransitGatewayAttachments + post: + description: Creates Transit Gateway Attachment with the provided VPC for a Transit Gateway that has been shared with an Atlas AWS Account. This Transit Gateway will be used in Atlas Streams private networking connections. + operationId: createGroupStreamsTransitGatewayAttachment + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/StreamsTransitGatewayAttachmentRequest" + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: Metadata needed for creating a transit gateway attachment. + required: true + responses: + "201": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/StreamsTransitGatewayAttachmentResponse" + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: Created + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Create One Transit Gateway Attachment + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/createGroupStreamsTransitGatewayAttachment + x-xgen-operation-id-override: createTransitGatewayAttachment + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayAttachments/{attachmentId}: + delete: + description: Deletes a transit gateway attachment. + operationId: deleteGroupStreamsTransitGatewayAttachment + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + - description: Unique identifier that identifies the Transit Gateway Attachment. + in: path + name: attachmentId + required: true + schema: + example: tgw-attach-01f8100bc7EXAMPLE + pattern: ^tgw-attach-[0-9a-zA-Z]+$ + type: string + responses: + "204": + content: + application/vnd.atlas.preview+json: + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: No Content + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Delete One Transit Gateway Attachment + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/deleteGroupStreamsTransitGatewayAttachment + x-xgen-operation-id-override: deleteTransitGatewayAttachment + get: + description: Returns one Transit Gateway Attachment for this group from the shared Atlas AWS Account. + operationId: getGroupStreamsTransitGatewayAttachment + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + - description: Unique identifier that identifies the Transit Gateway Attachment. + in: path + name: attachmentId + required: true + schema: + example: tgw-attach-01f8100bc7EXAMPLE + pattern: ^tgw-attach-[0-9a-zA-Z]+$ + type: string + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/StreamsTransitGatewayAttachmentResponse" + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return One Transit Gateway Attachment for One Group + tags: + - Streams + x-rolesRequirements: + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/getGroupStreamsTransitGatewayAttachment + x-xgen-operation-id-override: getTransitGatewayAttachment + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayInvitations: + get: + description: Returns the AWS RAM Resource Shares and Transit Gateway IDs for a Transit Gateway that has been shared with an Atlas AWS Account. This only returns the resource shares cached for Atlas Streams Processing. + operationId: listGroupStreamsTransitGatewayInvitations + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/itemsPerPage" + - $ref: "#/components/parameters/pageNum" + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/PaginatedStreamsTransitGatewayInvitationsResponse" + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return All Streams Transit Gateway Invitations + tags: + - Streams + x-rolesRequirements: + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/listGroupStreamsTransitGatewayInvitations + x-xgen-operation-id-override: listTransitGatewayInvitations + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayInvitations/{resourceShareArn}: + delete: + description: Deletes an AWS Resource Share Invitation for a Transit Gateway that has been shared with an Atlas AWS account. This does not delete the resource share invitation from the sender's AWS account. This only deletes the resource share invitation that's cached for Atlas Streams Processing. + operationId: deleteGroupStreamsTransitGatewayInvitation + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + - description: AWS Transit Gateway resource share ARN. + in: path + name: resourceShareArn + required: true + schema: + type: string + responses: + "204": + content: + application/vnd.atlas.preview+json: + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: No Content + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Delete One Transit Gateway Invitation + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/deleteGroupStreamsTransitGatewayInvitation + x-xgen-operation-id-override: deleteTransitGatewayInvitation + get: + description: Returns the details of one AWS Resource Share Invitation for a Transit Gateway that has been shared with an Atlas AWS Account. This only returns the resource share invitation cached for Atlas Streams Processing. + operationId: getGroupStreamsTransitGatewayInvitation + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + - description: AWS Transit Gateway resource share ARN. + in: path + name: resourceShareArn + required: true + schema: + type: string + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/StreamsTransitGatewayInvitationsResponse" + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return One Transit Gateway Invitation + tags: + - Streams + x-rolesRequirements: + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/getGroupStreamsTransitGatewayInvitation + x-xgen-operation-id-override: getTransitGatewayInvitation + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayInvitations:accept: + post: + description: Accept AWS RAM Resource Share for a Transit Gateway that has been shared with an Atlas AWS account. This Transit Gateway will be used in Atlas Streams private networking connections. + operationId: acceptGroupStreamsTransitGatewayInvitations + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/StreamsTransitGatewayResourceShare" + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: Detailed information on accepting a transit gateway resource share invitation. + required: true + responses: + "204": + content: + application/vnd.atlas.preview+json: + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: No Content + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "500": + $ref: "#/components/responses/internalServerError" + summary: Accept Transit Gateway Resource Share Invitations + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/acceptGroupStreamsTransitGatewayInvitations + x-xgen-operation-id-override: acceptTransitGatewayInvitations + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayInvitations:reject: + post: + description: Rejects AWS RAM Resource Share for a Transit Gateway that has been shared with an Atlas AWS account. + operationId: rejectGroupStreamsTransitGatewayInvitations + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/StreamsTransitGatewayResourceShare" + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: Detailed information on rejecting a transit gateway resource share invitation. + required: true + responses: + "204": + content: + application/vnd.atlas.preview+json: + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: No Content + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "500": + $ref: "#/components/responses/internalServerError" + summary: Reject Transit Gateway Resource Share Invitations + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/rejectGroupStreamsTransitGatewayInvitations + x-xgen-operation-id-override: rejectTransitGatewayInvitations + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayRoutes: + get: + description: List Transit Gateway routes in the default route table associated with Atlas VPC. + operationId: listGroupStreamsTransitGatewayRoutes + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/itemsPerPage" + - $ref: "#/components/parameters/pageNum" + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/PaginatedApiStreamsTransitGatewayRouteResponse" + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return All Transit Gateway Routes in the Default Route Table for One Atlas VPC + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/listGroupStreamsTransitGatewayRoutes + x-xgen-operation-id-override: listTransitGatewayRoutes + post: + description: Creates a route in the default route table associated with Atlas VPC to route all traffic destined for provided CIDR to the provided Transit Gateway. + operationId: createGroupStreamsTransitGatewayRoute + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/StreamsTransitGatewayRouteRequest" + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: Metadata needed for creating a transit gateway route. + required: true + responses: + "201": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/StreamsTransitGatewayRouteResponse" + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: Created + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Create One Transit Gateway Route in the Default Route Table for One Atlas VPC + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/createGroupStreamsTransitGatewayRoute + x-xgen-operation-id-override: createTransitGatewayRoute + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayRoutes/{routeId}: + delete: + description: Deletes a transit gateway route in the default route table associated with Atlas VPC. + operationId: deleteGroupStreamsTransitGatewayRoute + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + - description: The Object ID that uniquely identifies a transit gateway route. + in: path + name: routeId + required: true + schema: + example: 32b6e34b3d91647abb20e7b8 + pattern: ^([a-f0-9]{24})$ + type: string + responses: + "204": + content: + application/vnd.atlas.preview+json: + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: No Content + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Delete One Transit Gateway Route in the Default Route Table for One Atlas VPC + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/deleteGroupStreamsTransitGatewayRoute + x-xgen-operation-id-override: deleteTransitGatewayRoute + get: + description: Retrieves a transit gateway route in the default route table associated with Atlas VPC. + operationId: getGroupStreamsTransitGatewayRoute + parameters: + - $ref: "#/components/parameters/groupId" + - description: The Object ID that uniquely identifies a transit gateway route. + in: path + name: routeId + required: true + schema: + example: 32b6e34b3d91647abb20e7b8 + pattern: ^([a-f0-9]{24})$ + type: string + - $ref: "#/components/parameters/envelope" + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/StreamsTransitGatewayRouteResponse" + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return One Transit Gateway Route in the Default Route Table for One Atlas VPC + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/getGroupStreamsTransitGatewayRoute + x-xgen-operation-id-override: getTransitGatewayRoute + /api/atlas/v2/groups/{groupId}/streamsWorkspacePrivateEndpoints: + get: + description: Returns all private endpoints registered for Atlas Stream Processing in the specified project. + operationId: listGroupStreamsWorkspacePrivateEndpoints + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/includeCount" + - $ref: "#/components/parameters/itemsPerPage" + - $ref: "#/components/parameters/pageNum" + - $ref: "#/components/parameters/pretty" + responses: + "200": + content: + application/vnd.atlas.2025-03-12+json: + schema: + $ref: "#/components/schemas/PaginatedStreamsWorkspacePrivateEndpointResponse" + x-xgen-version: 2025-03-12 + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return All Workspace Private Endpoints for Atlas Stream Processing + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/listGroupStreamsWorkspacePrivateEndpoints + x-xgen-operation-id-override: listWorkspacePrivateEndpoints + /api/atlas/v2/groups/{groupId}/streamsWorkspacePrivateEndpoints/{endpointId}: + get: + description: Returns one private endpoint registered for Atlas Stream Processing in the specified project. + operationId: getGroupStreamsWorkspacePrivateEndpoint + parameters: + - $ref: "#/components/parameters/groupId" + - $ref: "#/components/parameters/envelope" + - description: Unique identifier of the customer's VPC endpoint. + in: path + name: endpointId + required: true + schema: + example: vpce-0abc123def4567890 + pattern: ^vpce-[a-z0-9]{17}$ + type: string + responses: + "200": + content: + application/vnd.atlas.2025-03-12+json: + schema: + $ref: "#/components/schemas/StreamsWorkspacePrivateEndpointResponse" + x-xgen-version: 2025-03-12 + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return One Workspace Private Endpoint for Atlas Stream Processing + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/getGroupStreamsWorkspacePrivateEndpoint + x-xgen-operation-id-override: getWorkspacePrivateEndpoint /api/atlas/v2/groups/{groupId}/teams: get: description: Returns all teams to which the authenticated user has access in the project specified using its unique 24-hexadecimal digit identifier. All members of the team share the same project access. @@ -51000,6 +53977,48 @@ paths: tags: - Projects x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Projects/operation/getGroupByName + /api/atlas/v2/openapi/info: + get: + description: This resource returns general information about the MongoDB Atlas Administration API OpenAPI Specification. + operationId: getOpenapiInfo + parameters: + - $ref: "#/components/parameters/pretty" + responses: + "200": + content: + application/vnd.atlas.2024-05-30+json: + schema: + $ref: "#/components/schemas/OpenApiInfo" + x-sunset: 9999-12-30 + x-xgen-version: 2024-05-30 + application/vnd.atlas.2024-08-05+json: + schema: + $ref: "#/components/schemas/OpenApiInfo" + x-xgen-version: 2024-08-05 + application/vnd.atlas.2025-09-22.upcoming+json: + schema: + $ref: "#/components/schemas/OpenApiInfo" + x-xgen-version: 2025-09-22.upcoming + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/OpenApiInfo" + x-sunset: 9999-12-30 + x-xgen-preview: + public: "true" + x-xgen-version: preview + description: OK + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return General Information on MongoDB Atlas Administration API OpenAPI Specification + tags: + - OpenAPI + x-xgen-method-verb-override: + customMethod: "False" + verb: get /api/atlas/v2/orgs: get: description: Returns all organizations to which the requesting Service Account or API Key has access. @@ -53648,9 +56667,14 @@ paths: responses: "200": content: + application/vnd.atlas.2025-03-12+json: + schema: + $ref: "#/components/schemas/OrganizationMaintenanceSettingsResponse" + x-xgen-version: 2025-03-12 application/vnd.atlas.preview+json: schema: $ref: "#/components/schemas/OrganizationMaintenanceSettingsResponse" + x-sunset: 2026-10-12 x-xgen-preview: name: organization-maintenance x-xgen-version: preview @@ -53687,9 +56711,14 @@ paths: - $ref: "#/components/parameters/pretty" requestBody: content: + application/vnd.atlas.2025-03-12+json: + schema: + $ref: "#/components/schemas/OrganizationMaintenanceSettingsUpdateRequest" + x-xgen-version: 2025-03-12 application/vnd.atlas.preview+json: schema: $ref: "#/components/schemas/OrganizationMaintenanceSettingsUpdateRequest" + x-sunset: 2026-10-12 x-xgen-preview: name: organization-maintenance x-xgen-version: preview @@ -53698,9 +56727,14 @@ paths: responses: "200": content: + application/vnd.atlas.2025-03-12+json: + schema: + $ref: "#/components/schemas/OrganizationMaintenanceSettingsResponse" + x-xgen-version: 2025-03-12 application/vnd.atlas.preview+json: schema: $ref: "#/components/schemas/OrganizationMaintenanceSettingsResponse" + x-sunset: 2026-10-12 x-xgen-preview: name: organization-maintenance x-xgen-version: preview @@ -53739,9 +56773,14 @@ paths: responses: "200": content: + application/vnd.atlas.2025-03-12+json: + schema: + $ref: "#/components/schemas/OrganizationMaintenanceSettingsResponse" + x-xgen-version: 2025-03-12 application/vnd.atlas.preview+json: schema: $ref: "#/components/schemas/OrganizationMaintenanceSettingsResponse" + x-sunset: 2026-10-12 x-xgen-preview: name: organization-maintenance x-xgen-version: preview @@ -54257,6 +57296,47 @@ paths: - Organization Member x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Resource-Policies/operation/getOrgNonCompliantResources x-xgen-operation-id-override: getNonCompliantResources + /api/atlas/v2/orgs/{orgId}/ratelimits: + get: + description: Retrieve rate limiting bucket state for the specified organization. + operationId: getOrgRatelimits + parameters: + - $ref: "#/components/parameters/orgId" + - $ref: "#/components/parameters/envelope" + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/AtlasRateLimitInspectionResponse" + x-xgen-preview: + name: rate-limit + public: "false" + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return Rate Limit State for One Organization + tags: + - Rate Limiting + x-rolesRequirements: + - Organization Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Rate-Limiting/operation/getOrgRatelimits /api/atlas/v2/orgs/{orgId}/resourcePolicies: get: description: Return all Atlas Resource Policies for the organization. @@ -55108,7 +58188,7 @@ paths: x-xgen-operation-id-override: createOrgAccessList /api/atlas/v2/orgs/{orgId}/serviceAccounts/{clientId}/accessList/{ipAddress}: delete: - description: Removes the specified access list entry from the specified Service Account for the organization. You can't remove the requesting IP address from the access list. + description: Removes the specified access list entry from the specified Service Account for the organization. A Service Account cannot remove its own IP address from its access list. operationId: deleteOrgServiceAccountAccessListEntry parameters: - $ref: "#/components/parameters/envelope" @@ -56592,14 +59672,6 @@ paths: schema: $ref: "#/components/schemas/PaginatedRateLimitEndpointSets" x-xgen-version: 2025-03-12 - application/vnd.atlas.preview+json: - schema: - $ref: "#/components/schemas/PaginatedRateLimitEndpointSets" - x-sunset: 2026-04-21 - x-xgen-preview: - name: rate-limit - public: "false" - x-xgen-version: preview description: OK headers: RateLimit-Limit: @@ -56668,14 +59740,6 @@ paths: schema: $ref: "#/components/schemas/RateLimitEndpointSetResponse" x-xgen-version: 2025-03-12 - application/vnd.atlas.preview+json: - schema: - $ref: "#/components/schemas/RateLimitEndpointSetResponse" - x-sunset: 2026-04-21 - x-xgen-preview: - name: rate-limit - public: "false" - x-xgen-version: preview description: OK headers: RateLimit-Limit: @@ -56780,6 +59844,46 @@ paths: - Organization Member - Project Read Only x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Invoices/operation/getSku + /api/atlas/v2/unauth/clusters:estimateCost: + post: + description: Estimates the hourly and monthly compute cost of a cluster of the requested tier in the requested cloud provider and region, applying standard defaults. This unauthenticated endpoint prices a fixed set of representative tiers and does not create a cluster. To estimate arbitrary configurations, use the authenticated cost-estimate endpoints. + operationId: estimateClusterCost + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/pretty" + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/UnauthClusterCostEstimateRequest" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Tier, cloud provider, and region to estimate. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/UnauthClusterCostEstimateResponse" + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the requested tier, with the standard defaults the server applied for dedicated tiers. + "400": + $ref: "#/components/responses/badRequest" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + security: [] + summary: Estimate the Cost of One Cluster + tags: + - Clusters + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/estimateClusterCost /api/atlas/v2/unauth/controlPlaneIPAddresses: get: description: Returns all control plane IP addresses. @@ -56809,6 +59913,217 @@ paths: - Root x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Root/operation/listControlPlaneIpAddresses x-xgen-operation-id-override: listControlPlaneAddresses + /api/atlas/v2/unauth/ephemeralClusters/{clusterId}: + get: + description: |- + Returns the details for one Atlas Ephemeral cluster. + + To learn more about Ephemeral clusters, see [Create an Atlas Ephemeral Cluster](https://dochub.mongodb.org/core/create-ephemeral-cluster) in the MongoDB Atlas documentation. + operationId: getEphemeralCluster + parameters: + - description: Unique ID of the ephemeral cluster to look up. + in: path + name: clusterId + required: true + schema: + type: string + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/EphemeralClusterStatusResponse" + x-xgen-preview: + public: "true" + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + security: [] + summary: Return One Ephemeral Atlas Cluster + tags: + - Ephemeral Clusters + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Ephemeral-Clusters/operation/getEphemeralCluster + /api/atlas/v2/unauth/ephemeralClusters:create: + post: + description: |- + Creates an Atlas Ephemeral cluster and returns its connection and claim details. + + An Ephemeral cluster is a temporary Free cluster that you can create and connect to without an Atlas account. Atlas pauses the cluster 2 days after creation and deletes it 7 days after creation unless you claim it to an Atlas account. + + Claiming an Ephemeral cluster converts it into a standard Free cluster with no expiration date and moves it into a new or existing Atlas organization. Until you claim the cluster, you can read and write its data but can't perform administrative operations, such as scaling the cluster, adding database users, or changing network access. + + Atlas deploys all Ephemeral clusters to AWS `us-east-1` and allows connections from any IP address (`0.0.0.0/0`). To learn more about Ephemeral clusters, see [Create an Atlas Ephemeral Cluster](https://dochub.mongodb.org/core/create-ephemeral-cluster) in the MongoDB Atlas documentation. + operationId: createEphemeralCluster + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/CreateEphemeralClusterRequest" + x-xgen-preview: + public: "true" + x-xgen-version: preview + description: Ephemeral cluster to create. + required: true + responses: + "201": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/EphemeralClusterCreated" + x-xgen-preview: + public: "true" + x-xgen-version: preview + description: Created + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + security: [] + summary: Create One Ephemeral Atlas Cluster + tags: + - Ephemeral Clusters + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Ephemeral-Clusters/operation/createEphemeralCluster + /api/atlas/v2/unauth/openapi/versions: + get: + description: API that provides a list of available versions for a given environment. + operationId: listOpenapiVersions + parameters: + - $ref: "#/components/parameters/envelope" + - $ref: "#/components/parameters/itemsPerPage" + - $ref: "#/components/parameters/pageNum" + - $ref: "#/components/parameters/pretty" + - description: The environment to get the versions from. If not provided, it returns the versions for the given MongoDB URL. (E.g. prod for cloud.mongodb.com). + in: query + name: env + schema: + enum: + - dev + - qa + - prod + - stage + type: string + responses: + "200": + content: + application/vnd.atlas.2024-08-05+json: + schema: + $ref: "#/components/schemas/PaginatedApiVersions" + x-xgen-version: 2024-08-05 + application/vnd.atlas.2024-08-05+yaml: + schema: + $ref: "#/components/schemas/PaginatedApiVersions" + x-xgen-version: 2024-08-05 + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/PaginatedApiVersions" + x-xgen-preview: + name: version-resource + x-xgen-version: preview + application/vnd.atlas.preview+yaml: + schema: + $ref: "#/components/schemas/PaginatedApiVersions" + x-xgen-preview: + name: version-resource + x-xgen-version: preview + description: OK + "500": + $ref: "#/components/responses/internalServerError" + summary: Return All Versions for One Environment + tags: + - OpenAPI + /api/atlas/v2/unauth/ratelimits: + get: + description: Retrieve rate limiting bucket state for unauthenticated requests. + operationId: listRatelimits + parameters: + - $ref: "#/components/parameters/envelope" + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/AtlasRateLimitInspectionResponse" + x-xgen-preview: + name: rate-limit + public: "false" + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "404": + $ref: "#/components/responses/notFound" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return Rate Limit State for Unauthenticated Requests + tags: + - Rate Limiting + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Rate-Limiting/operation/listRatelimits + /api/atlas/v2/userRateLimits: + get: + description: Retrieve rate limiting bucket state for the current user. + operationId: listUserRatelimits + parameters: + - $ref: "#/components/parameters/envelope" + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: "#/components/schemas/AtlasRateLimitInspectionResponse" + x-xgen-preview: + name: rate-limit + public: "false" + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: "#/components/headers/HeaderRateLimitLimit" + RateLimit-Remaining: + $ref: "#/components/headers/HeaderRateLimitRemaining" + "400": + $ref: "#/components/responses/badRequest" + "401": + $ref: "#/components/responses/unauthorized" + "403": + $ref: "#/components/responses/forbidden" + "429": + $ref: "#/components/responses/tooManyRequests" + "500": + $ref: "#/components/responses/internalServerError" + summary: Return Rate Limit State for One User + tags: + - Rate Limiting + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Rate-Limiting/operation/listUserRatelimits /api/atlas/v2/users: post: deprecated: true @@ -56971,6 +60286,8 @@ tags: name: Auditing - description: Returns and edits custom DNS configurations for MongoDB Cloud database deployments on AWS. The resource requires your Project ID. If you use the VPC peering on AWS and you use your own DNS servers instead of Amazon Route 53, enable custom DNS. Before 31 March 2020, applications deployed within AWS using custom DNS services and VPC-peered with MongoDB Cloud couldn't connect over private IP addresses. Custom DNS resolved to public IP addresses. AWS internal DNS resolved to private IP addresses. Applications deployed with custom DNS services in AWS should use Private IP for Peering connection strings. name: AWS Clusters DNS + - description: Returns, adds, and edits Charts Dashboard instances. This resource applies only to projects with a Charts tenant, and requires your Project ID. + name: Charts Dashboards - description: Manages Cloud Backup snapshots, snapshot export buckets, restore jobs, and schedules. This resource applies only to clusters that use Cloud Backups. name: Cloud Backups - description: Manages the Cloud Migration Service. Source organizations, projects, and MongoDB clusters reside on Cloud Manager or Ops Manager. Destination organizations, projects, and MongoDB clusters reside on MongoDB Cloud. Source databases can't use any authentication except SCRAM-SHA. @@ -56991,6 +60308,13 @@ tags: name: Database Users - description: Returns and edits the Encryption at Rest using Customer Key Management configuration. MongoDB Cloud encrypts all storage whether or not you use your own key management. name: Encryption at Rest using Customer Key Management + - description: |- + Create and return Atlas Ephemeral clusters. An Ephemeral cluster is a temporary Atlas Free cluster that you can claim within 7 days to convert into a standard Free cluster. + + Use of this API, including any resources created through it, is governed by MongoDB’s [Cloud Terms of Service](https://www.mongodb.com/legal/terms-and-conditions/cloud) and [Privacy Policy](https://www.mongodb.com/legal/privacy/privacy-policy). By using this API to create an Ephemeral cluster, you agree to these terms. + + To learn more about Ephemeral clusters, see [Create an Atlas Ephemeral Cluster](https://dochub.mongodb.org/core/create-ephemeral-cluster) in the MongoDB Atlas documentation. + name: Ephemeral Clusters - description: Returns events. This collection remains under revision and may change. name: Events - description: Returns, adds, edits, and removes federation-related features such as role mappings and connected organization configurations. @@ -57027,6 +60351,8 @@ tags: name: Network Peering - description: Returns, adds, edits, or removes an online archive. name: Online Archive + - description: Returns information about the MongoDB Atlas Specification. + name: OpenAPI - description: Returns, adds, and edits organizational units in MongoDB Cloud. name: Organizations - description: Returns and starts overload protection simulations for a cluster. diff --git a/tools/codegen/atlasapispec/raw-multi-version-api-spec.yml b/tools/codegen/atlasapispec/raw-multi-version-api-spec.yml index 2451e27b41..0019ad2107 100644 --- a/tools/codegen/atlasapispec/raw-multi-version-api-spec.yml +++ b/tools/codegen/atlasapispec/raw-multi-version-api-spec.yml @@ -455,6 +455,7 @@ components: - M140_GEN_2 - M200_GEN_2 - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -566,6 +567,7 @@ components: - M140_GEN_2 - M200_GEN_2 - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -618,6 +620,7 @@ components: - M140_GEN_2 - M200_GEN_2 - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -762,6 +765,7 @@ components: - M140_GEN_2 - M200_GEN_2 - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -865,6 +869,7 @@ components: - M140_GEN_2 - M200_GEN_2 - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -909,6 +914,15 @@ components: - DELETING readOnly: true type: string + connectionStringIds: + description: Identifiers of private endpoint connection strings that reference this private endpoint. + items: + pattern: ^([a-f0-9]{24})$ + type: string + maxItems: 100 + readOnly: true + type: array + uniqueItems: true deleteRequested: description: Flag that indicates whether MongoDB Cloud received a request to remove the specified private endpoint from the private endpoint service. readOnly: true @@ -1223,11 +1237,11 @@ components: - $ref: '#/components/schemas/CloudRegionConfig' - properties: analyticsAutoScaling: - $ref: '#/components/schemas/AdvancedAutoScalingSettings' + $ref: '#/components/schemas/AutoScalingSettings' analyticsSpecs: $ref: '#/components/schemas/DedicatedHardwareSpec' autoScaling: - $ref: '#/components/schemas/AdvancedAutoScalingSettings' + $ref: '#/components/schemas/AutoScalingSettings' readOnlySpecs: $ref: '#/components/schemas/DedicatedHardwareSpec' type: object @@ -1433,6 +1447,11 @@ components: $ref: '#/components/schemas/AdvancedComputeAutoScaling' diskGB: $ref: '#/components/schemas/DiskGBAutoScaling' + storageConfig: + allOf: + - $ref: '#/components/schemas/StorageConfig' + description: 'Available in Public Preview: Settings that determine the per-shard data-size limit for this cluster. Applies only to Atlas INFINITE clusters. MongoDB Cloud accepts these settings only on `autoScaling` and rejects them on `analyticsAutoScaling`, including when you send them as `null`. In a request that includes `replicationSpecs`, omitting `storageConfig` or sending it as `null` or `{}` clears the limit. Omitting `replicationSpecs` preserves it.' + nullable: true title: Automatic Scaling Settings type: object AdvancedClusterDescription: @@ -1499,7 +1518,6 @@ components: enum: - FULLY_WARMED - VISIBLE_EARLIER - - ENHANCED_FULLY_WARMED externalDocs: description: Reduce Secondary Disk Warming Impact url: https://docs.atlas.mongodb.com/reference/replica-set-tags/#reduce-secondary-disk-warming-impact @@ -2173,6 +2191,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -2396,6 +2423,285 @@ components: - DEFAULT type: string type: object + ApiAtlasClusterDescriptionPreview: + properties: + acceptDataRisksAndForceReplicaSetReconfig: + description: If reconfiguration is necessary to regain a primary due to a regional outage, submit this field alongside your topology reconfiguration to request a new regional outage resistant topology. Forced reconfigurations during an outage of the majority of electable nodes carry a risk of data loss if replicated writes (even majority committed writes) have not been replicated to the new primary node. MongoDB Atlas docs contain more information. To proceed with an operation which carries that risk, set `acceptDataRisksAndForceReplicaSetReconfig` to the current date. This parameter expresses its value in the ISO 8601 timestamp format in UTC. + externalDocs: + description: Reconfiguring a Replica Set during a regional outage + url: https://dochub.mongodb.org/core/regional-outage-reconfigure-replica-set + format: date-time + type: string + adaptiveCapacity: + description: Governs adaptive capacity behavior of Azure nodes in single-cloud Azure clusters or multi-cloud clusters that include Azure nodes. Adaptive capacity enables fallback hardware selection when the primary instance family is unavailable. ``ENABLED`` means the cluster explicitly opts in to adaptive capacity. ``DISABLED`` means the cluster explicitly opts out; the cluster receives capacity errors instead of being placed on fallback hardware. ``null`` means the field is unset; Azure clusters use adaptive capacity by default when the feature is enabled at the group level. Setting this field for single-cloud AWS or GCP clusters is a no-op. + enum: + - ENABLED + - DISABLED + nullable: true + type: string + advancedConfiguration: + $ref: '#/components/schemas/ApiAtlasClusterAdvancedConfigurationView' + backupEnabled: + default: false + description: Flag that indicates whether the cluster can perform backups. If set to `true`, the cluster can perform backups. You must set this value to `true` for NVMe clusters. Backup uses Cloud Backups for dedicated clusters and [Shared Cluster Backups](https://docs.atlas.mongodb.com/backup/shared-tier/overview/) for tenant clusters. If set to `false`, the cluster doesn't use backups. + externalDocs: + description: Cloud Backups + url: https://docs.atlas.mongodb.com/backup/cloud-backup/overview/ + type: boolean + biConnector: + $ref: '#/components/schemas/BiConnector' + clusterType: + description: Configuration of nodes that comprise the cluster. + enum: + - REPLICASET + - SHARDED + - GEOSHARDED + type: string + configServerManagementMode: + default: ATLAS_MANAGED + description: Config Server Management Mode for creating or updating a sharded cluster. When configured as `ATLAS_MANAGED`, Atlas may automatically switch the cluster's config server type for optimal performance and savings. When configured as `FIXED_TO_DEDICATED`, the cluster will always use a dedicated config server. + enum: + - ATLAS_MANAGED + - FIXED_TO_DEDICATED + externalDocs: + description: MongoDB Sharded Cluster Config Servers + url: https://dochub.mongodb.org/docs/manual/core/sharded-cluster-config-servers + type: string + configServerType: + description: Describes a sharded cluster's config server type. + enum: + - DEDICATED + - EMBEDDED + externalDocs: + description: MongoDB Sharded Cluster Config Servers + url: https://dochub.mongodb.org/docs/manual/core/sharded-cluster-config-servers + readOnly: true + type: string + connectionStrings: + $ref: '#/components/schemas/ClusterConnectionStrings' + createDate: + description: Date and time when MongoDB Cloud created this cluster. This parameter expresses its value in ISO 8601 format in UTC. + format: date-time + readOnly: true + type: string + databaseEdition: + description: 'Available in Public Preview: Optional field that indicates whether your cluster will be Atlas INFINITE or CORE. You can set it only when you create the cluster, or when you upgrade a Free or Flex cluster to a dedicated cluster. This value is immutable once the dedicated cluster exists; attempting to change it on an update request returns an error.' + enum: + - CORE + - INFINITE + type: string + diskWarmingMode: + default: FULLY_WARMED + description: Disk warming mode selection. + enum: + - FULLY_WARMED + - VISIBLE_EARLIER + externalDocs: + description: Reduce Secondary Disk Warming Impact + url: https://docs.atlas.mongodb.com/reference/replica-set-tags/#reduce-secondary-disk-warming-impact + type: string + effectiveDatabaseEdition: + description: 'Available in Public Preview: Field that represents whether your cluster is Atlas INFINITE or CORE. This is read-only and always returned in the response. It reflects the actual cluster state. This value matches `databaseEdition` if it was set, otherwise it reflects the default database edition assigned to the cluster.' + enum: + - CORE + - INFINITE + readOnly: true + type: string + effectiveReplicationSpecs: + description: List of settings that represent the actual cluster state. This is read-only and always returned in the response. It reflects the current cluster configuration, which may differ from `replicationSpecs` due to system-managed changes. + items: + $ref: '#/components/schemas/ReplicationSpec20240805' + readOnly: true + type: array + encryptionAtRestProvider: + description: 'Cloud service provider that manages your customer keys to provide an additional layer of encryption at rest for the cluster. To enable customer key management for encryption at rest, the cluster `replicationSpecs[n].regionConfigs[m].{type}Specs.instanceSize` setting must be `M10` or higher and `"backupEnabled" : false` or omitted entirely.' + enum: + - NONE + - AWS + - AZURE + - GCP + externalDocs: + description: Encryption at Rest using Customer Key Management + url: https://www.mongodb.com/docs/atlas/security-kms-encryption/ + type: string + featureCompatibilityVersion: + description: Feature compatibility version of the cluster. This will always appear regardless of whether FCV is pinned. + readOnly: true + type: string + featureCompatibilityVersionExpirationDate: + description: Feature compatibility version expiration date. Will only appear if FCV is pinned. This parameter expresses its value in the ISO 8601 timestamp format in UTC. + format: date-time + readOnly: true + type: string + globalClusterSelfManagedSharding: + description: |- + Set this field to configure the Sharding Management Mode when creating a new Global Cluster. + + When set to false, the management mode is set to Atlas-Managed Sharding. This mode fully manages the sharding of your Global Cluster and is built to provide a seamless deployment experience. + + When set to true, the management mode is set to Self-Managed Sharding. This mode leaves the management of shards in your hands and is built to provide an advanced and flexible deployment experience. + + This setting cannot be changed once the cluster is deployed. + externalDocs: + description: Creating a Global Cluster + url: https://dochub.mongodb.org/core/global-cluster-management + type: boolean + groupId: + description: Unique 24-hexadecimal character string that identifies the project. + example: 32b6e34b3d91647abb20e7b8 + pattern: ^([a-f0-9]{24})$ + readOnly: true + type: string + id: + description: Unique 24-hexadecimal digit string that identifies the cluster. + example: 32b6e34b3d91647abb20e7b8 + pattern: ^([a-f0-9]{24})$ + readOnly: true + type: string + internalClusterRole: + description: 'Internal classification of the cluster''s role. Possible values: `NONE` (regular user cluster), `SYSTEM_CLUSTER` (system cluster for backup), `INTERNAL_SHADOW_CLUSTER` (internal use shadow cluster for testing).' + enum: + - NONE + - SYSTEM_CLUSTER + - INTERNAL_SHADOW_CLUSTER + readOnly: true + type: string + labels: + deprecated: true + description: |- + Collection of key-value pairs between 1 to 255 characters in length that tag and categorize the cluster. The MongoDB Cloud console doesn't display your labels. + + Cluster labels are deprecated and will be removed in a future release. We strongly recommend that you use Resource Tags instead. + externalDocs: + description: Resource Tags + url: https://dochub.mongodb.org/core/add-cluster-tag-atlas + items: + $ref: '#/components/schemas/ComponentLabel' + type: array + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: '#/components/schemas/Link' + readOnly: true + type: array + mongoDBEmployeeAccessGrant: + $ref: '#/components/schemas/EmployeeAccessGrantView' + mongoDBMajorVersion: + description: "MongoDB major version of the cluster. Set to the binary major version. \n\nOn creation: Choose from the available versions of MongoDB, or leave unspecified for the current recommended default in the MongoDB Cloud platform. The recommended version is a recent Long Term Support version. The default is not guaranteed to be the most recently released version throughout the entire release cycle. For versions available in a specific project, see the linked documentation or use the API endpoint for [project LTS versions endpoint](#tag/Projects/operation/getProjectLtsVersions).\n\n On update: Increase version only by 1 major version at a time. If the cluster is pinned to a MongoDB feature compatibility version exactly one major version below the current MongoDB version, the MongoDB version can be downgraded to the previous major version." + externalDocs: + description: Available MongoDB Versions in Atlas + url: https://www.mongodb.com/docs/atlas/reference/faq/database/#which-versions-of-mongodb-do-service-clusters-use- + type: string + mongoDBVersion: + description: Version of MongoDB that the cluster runs. + pattern: ([\d]+\.[\d]+\.[\d]+) + readOnly: true + type: string + mongosTopology: + $ref: '#/components/schemas/MongosTopology' + name: + description: Human-readable label that identifies the cluster. + pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ + type: string + paused: + description: Flag that indicates whether the cluster is paused. + type: boolean + pitEnabled: + description: Flag that indicates whether the cluster uses continuous cloud backups. + externalDocs: + description: Continuous Cloud Backups + url: https://docs.atlas.mongodb.com/backup/cloud-backup/overview/ + type: boolean + redactClientLogData: + description: |- + Enable or disable log redaction. + + This setting configures the ``mongod`` or ``mongos`` to redact any document field contents from a message accompanying a given log event before logging. This prevents the program from writing potentially sensitive data stored on the database to the diagnostic log. Metadata such as error or operation codes, line numbers, and source file names are still visible in the logs. + + Use ``redactClientLogData`` in conjunction with Encryption at Rest and TLS/SSL (Transport Encryption) to assist compliance with regulatory requirements. + + *Note*: changing this setting on a cluster will trigger a rolling restart as soon as the cluster is updated. + externalDocs: + description: Log Redaction + url: https://www.mongodb.com/docs/manual/administration/monitoring/#log-redaction + type: boolean + replicaSetScalingStrategy: + default: WORKLOAD_TYPE + description: |- + Set this field to configure the replica set scaling mode for your cluster. + + By default, Atlas scales under `WORKLOAD_TYPE`. This mode allows Atlas to scale your analytics nodes in parallel to your operational nodes. + + When configured as `SEQUENTIAL`, Atlas scales all nodes sequentially. This mode is intended for steady-state workloads and applications performing latency-sensitive secondary reads. + + When configured as `NODE_TYPE`, Atlas scales your electable nodes in parallel with your read-only and analytics nodes. This mode is intended for large, dynamic workloads requiring frequent and timely cluster tier scaling. This is the fastest scaling strategy, but it might impact latency of workloads when performing extensive secondary reads. + enum: + - SEQUENTIAL + - WORKLOAD_TYPE + - NODE_TYPE + externalDocs: + description: Modify the Replica Set Scaling Mode + url: https://dochub.mongodb.org/core/scale-nodes + type: string + replicationSpecs: + description: List of settings that configure your cluster regions. This array has one object per shard representing node configurations in each shard. For replica sets there is only one object representing node configurations. + items: + $ref: '#/components/schemas/ReplicationSpec20240805' + type: array + retainBackups: + default: false + description: Flag that indicates whether the cluster retains backups. + type: boolean + rootCertType: + default: ISRGROOTX1 + description: Root Certificate Authority that MongoDB Atlas cluster uses. MongoDB Cloud supports Internet Security Research Group. + enum: + - ISRGROOTX1 + type: string + stateName: + description: |- + Human-readable label that indicates any current activity being taken on this cluster by the Atlas control plane. With the exception of CREATING and DELETING states, clusters should always be available and have a Primary node even when in states indicating ongoing activity. + + - `IDLE`: Atlas is making no changes to this cluster and all changes requested via the UI or API can be assumed to have been applied. + - `CREATING`: A cluster being provisioned for the very first time returns state CREATING until it is ready for connections. Ensure IP Access List and DB Users are configured before attempting to connect. + - `UPDATING`: A change requested via the UI, API, AutoScaling, or other scheduled activity is taking place. + - `DELETING`: The cluster is in the process of deletion and will soon be deleted. + - `REPAIRING`: One or more nodes in the cluster are being returned to service by the Atlas control plane. Other nodes should continue to provide service as normal. + enum: + - IDLE + - CREATING + - UPDATING + - DELETING + - REPAIRING + readOnly: true + type: string + tags: + description: List that contains key-value pairs between 1 to 255 characters in length for tagging and categorizing the cluster. + externalDocs: + description: Resource Tags + url: https://dochub.mongodb.org/core/add-cluster-tag-atlas + items: + $ref: '#/components/schemas/ResourceTag' + type: array + terminationProtectionEnabled: + default: false + description: Flag that indicates whether termination protection is enabled on the cluster. If set to `true`, MongoDB Cloud won't delete the cluster. If set to `false`, MongoDB Cloud will delete the cluster. + type: boolean + useAwsTimeBasedSnapshotCopyForFastInitialSync: + default: false + description: Flag that indicates whether AWS time-based snapshot copies will be used instead of slower standard snapshot copies during fast Atlas cross-region initial syncs. This flag is only relevant for clusters containing AWS nodes. + type: boolean + versionReleaseSystem: + default: LTS + description: Method by which the cluster maintains the MongoDB versions. If value is `CONTINUOUS`, you must not specify `mongoDBMajorVersion`. + enum: + - LTS + - CONTINUOUS + type: string + type: object ApiAtlasCollectionRestoreCollectionStateResponse: description: Collection-level state within a collection restore job. properties: @@ -2492,7 +2798,7 @@ components: collections: description: List of collections to restore (up to 100 items). items: - $ref: '#/components/schemas/ApiAtlasRestoreNamespaceView' + $ref: '#/components/schemas/ApiAtlasRestoreCollectionNamespaceView' maxItems: 100 type: array databaseSuffix: @@ -2502,7 +2808,7 @@ components: databases: description: List of databases to restore (up to 100 items). items: - $ref: '#/components/schemas/ApiAtlasRestoreNamespaceView' + $ref: '#/components/schemas/ApiAtlasRestoreDatabaseNamespaceView' maxItems: 100 type: array indexStrategy: @@ -2561,7 +2867,7 @@ components: collections: description: List of collections in the restore scope (up to 100 items). items: - $ref: '#/components/schemas/ApiAtlasRestoreNamespaceView' + $ref: '#/components/schemas/ApiAtlasRestoreCollectionNamespaceView' maxItems: 100 type: array createdAt: @@ -2575,7 +2881,7 @@ components: databases: description: List of databases in the restore scope (up to 100 items). items: - $ref: '#/components/schemas/ApiAtlasRestoreNamespaceView' + $ref: '#/components/schemas/ApiAtlasRestoreDatabaseNamespaceView' maxItems: 100 type: array errorMessage: @@ -2626,7 +2932,7 @@ components: pattern: ^([a-f0-9]{24})$ type: string state: - description: Current state of the collection restore job. + description: Current state of the collection restore job. A `SUCCESSFUL` job can include individual `UNSUPPORTED` collection restores. Use the restore job collections endpoint to get per-collection detailed states. enum: - INITIALIZING - IN_PROGRESS @@ -3021,14 +3327,26 @@ components: readOnly: true type: string type: object - ApiAtlasRestoreNamespaceView: - description: Source and optional target namespace for a restore. + ApiAtlasRestoreCollectionNamespaceView: + description: Source and optional target collection for a restore. properties: sourceNamespace: - description: Namespace requested to restore (e.g. database name or `database.collection`). + description: Collection requested to restore, as `database.collection`. type: string targetNamespace: - description: Requested target namespace for the restored data; if empty, source namespace is used. + description: Requested target collection as `database.collection`; if empty, source namespace is used. + type: string + required: + - sourceNamespace + type: object + ApiAtlasRestoreDatabaseNamespaceView: + description: Source and optional target database for a restore. + properties: + sourceNamespace: + description: Database name requested to restore. + type: string + targetNamespace: + description: Requested target database name; if empty, source database name is used. type: string required: - sourceNamespace @@ -3188,6 +3506,19 @@ components: readOnly: true title: BSON Timestamp type: object + ApiChartsDashboardImportResponseView: + description: Imported dashboard and associated imported items. + properties: + dashboard: + $ref: '#/components/schemas/ImportedDashboard' + items: + description: Imported items. + items: + $ref: '#/components/schemas/ImportedItem' + type: array + required: + - items + type: object ApiCheckpointPartView: description: Metadata contained in one document that describes the complete snapshot taken for this node. properties: @@ -3493,6 +3824,62 @@ components: - DESCENDING type: string type: object + ApiSearchAutoScalingView: + description: Settings that let Atlas change the Search Node tier on its own. Bounds apply to the whole deployment, and Atlas scales each region and shard independently within them. Omit to keep autoscaling off. + properties: + compute: + $ref: '#/components/schemas/ApiSearchComputeAutoScalingView' + type: object + ApiSearchComputeAutoScalingView: + description: Settings that control Search Node tier scaling based on load. + properties: + enabled: + default: false + description: Flag that indicates whether Atlas raises the Search Node tier when the nodes are under sustained load. If set to `true`, you must also set `maxInstanceTier`. + type: boolean + maxInstanceTier: + description: Highest Search Node tier that Atlas can scale up to. Required when `enabled` is `true`. + enum: + - S10 + - S20 + - S30 + - S40 + - S50 + - S60 + - S70 + - S80 + - S90 + - S100 + - S110 + - S120 + - S130 + - S135 + - S140 + type: string + minInstanceTier: + description: Lowest Search Node tier that Atlas can scale down to. Required when `scaleDownEnabled` is `true`. Scaling down is not supported yet, so setting this returns an error. + enum: + - S10 + - S20 + - S30 + - S40 + - S50 + - S60 + - S70 + - S80 + - S90 + - S100 + - S110 + - S120 + - S130 + - S135 + - S140 + type: string + scaleDownEnabled: + default: false + description: Flag that indicates whether Atlas lowers the Search Node tier when load drops. Takes effect only when `enabled` is `true`. If set to `true`, you must also set `minInstanceTier`. Scaling down is not supported yet, so setting this to `true` returns an error. + type: boolean + type: object ApiSearchDeploymentEffectiveSpecView: properties: cloudProvider: @@ -3535,7 +3922,7 @@ components: readOnly: true type: string nodeCount: - description: Number of Search Nodes in this region. + description: Number of Search Nodes for this configuration. example: 2 format: int32 maximum: 32 @@ -3547,6 +3934,10 @@ components: example: US_EAST_1 readOnly: true type: string + shardId: + description: Shard that owns this Search Node configuration. + readOnly: true + type: string type: object ApiSearchDeploymentRequestSpecView: properties: @@ -3606,6 +3997,10 @@ components: type: object ApiSearchDeploymentRequestView: properties: + autoScaling: + allOf: + - $ref: '#/components/schemas/ApiSearchAutoScalingView' + description: Settings that let Atlas change the Search Node tier on its own. Bounds apply to the whole deployment, and Atlas scales each region and shard independently within them. Omit to keep autoscaling off. defaultNodeCount: description: Default number of Search Nodes per region. Applied to a region without an explicit override. example: 2 @@ -3625,8 +4020,19 @@ components: type: object ApiSearchDeploymentResponseView: properties: + autoScaling: + allOf: + - $ref: '#/components/schemas/ApiSearchAutoScalingView' + description: Autoscaling settings configured for this Search deployment. + readOnly: true + baselineSpecs: + description: List of starting settings for the Search Nodes in each cluster region. + items: + $ref: '#/components/schemas/ApiSearchDeploymentEffectiveSpecView' + readOnly: true + type: array effectiveSpecs: - description: List of settings that configure the Search Nodes for your cluster, with per-region detail including the region name and cloud provider. + description: List of settings that configure the Search Nodes for your cluster. Each entry describes one region or, when `shardId` is present, one shard in one region. items: $ref: '#/components/schemas/ApiSearchDeploymentEffectiveSpecView' readOnly: true @@ -4139,6 +4545,12 @@ components: - id title: API User Events type: object + ApiVersion: + properties: + version: + description: Object representing a version of the Atlas Admin API. + type: string + type: object AppServiceAlertConfigViewForNdsGroup: description: App Services metric alert configuration allows to select which app service conditions and events trigger alerts and how users are notified. properties: @@ -4288,6 +4700,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -4809,6 +5230,48 @@ components: required: - name type: object + AtlasRateLimitBucketState: + description: Configuration and current state of a single rate limit token bucket. + properties: + capacity: + description: The capacity of the bucket. + format: int64 + readOnly: true + type: integer + name: + description: The name of the bucket. + readOnly: true + type: string + remaining: + description: The remaining tokens of the bucket. + format: int64 + readOnly: true + type: integer + type: object + AtlasRateLimitInspectionResponse: + description: Rate limit inspection response containing bucket states for debugging and monitoring. + properties: + limits: + description: List of bucket states. + items: + $ref: '#/components/schemas/AtlasRateLimitBucketState' + readOnly: true + type: array + scope: + description: The scope type of the rate limit. + enum: + - GROUP + - ORGANIZATION + - USER + - IP + readOnly: true + type: string + scopeId: + description: The scope id associated to the bucket. + nullable: true + readOnly: true + type: string + type: object AtlasResourcePolicyAuditForNdsGroup: description: Atlas resource policy audits indicate organization level changes to resource policies. properties: @@ -5112,17 +5575,29 @@ components: format: date-time readOnly: true type: string + databaseEdition: + description: 'Available in Public Preview: Optional field that indicates whether your cluster will be Atlas INFINITE or CORE. You can set it only when you create the cluster, or when you upgrade a Free or Flex cluster to a dedicated cluster. This value is immutable once the dedicated cluster exists; attempting to change it on an update request returns an error.' + enum: + - CORE + - INFINITE + type: string diskWarmingMode: default: FULLY_WARMED description: Disk warming mode selection. enum: - FULLY_WARMED - VISIBLE_EARLIER - - ENHANCED_FULLY_WARMED externalDocs: description: Reduce Secondary Disk Warming Impact url: https://docs.atlas.mongodb.com/reference/replica-set-tags/#reduce-secondary-disk-warming-impact type: string + effectiveDatabaseEdition: + description: 'Available in Public Preview: Field that represents whether your cluster is Atlas INFINITE or CORE. This is read-only and always returned in the response. It reflects the actual cluster state. This value matches `databaseEdition` if it was set, otherwise it reflects the default database edition assigned to the cluster.' + enum: + - CORE + - INFINITE + readOnly: true + type: string effectiveReplicationSpecs: description: List of settings that represent the actual cluster state. This is read-only and always returned in the response. It reflects the current cluster configuration, which may differ from `replicationSpecs` due to system-managed changes. items: @@ -5399,6 +5874,15 @@ components: type: string title: export type: object + AutoScalingSettings: + description: Options that determine how this cluster handles resource scaling. + properties: + compute: + $ref: '#/components/schemas/AdvancedComputeAutoScaling' + diskGB: + $ref: '#/components/schemas/DiskGBAutoScaling' + title: Automatic Scaling Settings + type: object AutomationConfigEventTypeView: description: Unique identifier of event type. enum: @@ -6521,6 +7005,15 @@ components: - GCP readOnly: true type: string + connectionStringIds: + description: Identifiers of private endpoint connection strings that reference this private endpoint. + items: + pattern: ^([a-f0-9]{24})$ + type: string + maxItems: 100 + readOnly: true + type: array + uniqueItems: true deleteRequested: description: Flag that indicates whether MongoDB Cloud received a request to remove the specified private endpoint from the private endpoint service. readOnly: true @@ -6623,11 +7116,11 @@ components: - $ref: '#/components/schemas/CloudRegionConfig' - properties: analyticsAutoScaling: - $ref: '#/components/schemas/AdvancedAutoScalingSettings' + $ref: '#/components/schemas/AutoScalingSettings' analyticsSpecs: $ref: '#/components/schemas/DedicatedHardwareSpec' autoScaling: - $ref: '#/components/schemas/AdvancedAutoScalingSettings' + $ref: '#/components/schemas/AutoScalingSettings' readOnlySpecs: $ref: '#/components/schemas/DedicatedHardwareSpec' type: object @@ -7436,6 +7929,7 @@ components: - M140_GEN_2 - M200_GEN_2 - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -7505,6 +7999,8 @@ components: - M80_GEN_2 - M140_GEN_2 - M200_GEN_2 + - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -7630,6 +8126,7 @@ components: - CREDIT_PULLED_FWD - CREDIT_END_DATE_MODIFIED - PROMO_CODE_APPLIED + - PAYMENT_METHOD_DEACTIVATED - PAYMENT_FORGIVEN - REFUND_ISSUED - ACCOUNT_DOWNGRADED @@ -8802,6 +9299,8 @@ components: - M80_GEN_2 - M140_GEN_2 - M200_GEN_2 + - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -10138,6 +10637,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -10179,6 +10687,24 @@ components: type: boolean title: Automatic Cluster Scaling Settings type: object + ClusterBackupSubscriptionResponse: + description: Paid-backup subscription state for a free (M0) cluster. + properties: + enabled: + description: Flag that indicates whether paid backups are enabled for the free (M0) cluster. + type: boolean + required: + - enabled + title: Cluster Backup Subscription Response + type: object + ClusterBackupSubscriptionUpdateRequest: + description: Paid-backup subscription state to apply to a free (M0) cluster. Omit enabled to leave the subscription unchanged. + properties: + enabled: + description: Flag that indicates whether paid backups are enabled for the free (M0) cluster. Omit this field to leave the subscription unchanged. + type: boolean + title: Cluster Backup Subscription Update Request + type: object ClusterCloudProviderInstanceSize: properties: availableRegions: @@ -10208,6 +10734,52 @@ components: description: Flag that indicates whether the cluster tier can scale down via reactive auto-scaling. This is required if `autoScaling.compute.enabled` is `true`. If you enable this option, specify a value for `providerSettings.autoScaling.compute.minInstanceSize`. type: boolean type: object + ClusterConfigurationValidation: + properties: + advancedConfiguration: + $ref: '#/components/schemas/ClusterDescriptionProcessArgs20240805' + clusterDescription: + $ref: '#/components/schemas/ClusterDescription20240805' + clusterName: + description: Name of the existing cluster to validate against when editing is true. + type: string + editing: + description: When true, validates the configuration as an update to an existing cluster. When false, validates as a new cluster create. + type: boolean + searchDeploymentSpec: + $ref: '#/components/schemas/ApiSearchDeploymentSpecView' + tags: + description: Optional list of resource tags. + items: + $ref: '#/components/schemas/ResourceTag' + maxItems: 50 + type: array + required: + - clusterDescription + - editing + type: object + ClusterConfigurationValidationError: + properties: + errorCode: + description: Machine-readable error code identifying the type of validation failure. + example: CLUSTER_NOT_FOUND + type: string + validationIssue: + description: Description of the validation failure. + type: string + type: object + ClusterConfigurationValidationResult: + properties: + errors: + description: List of validation errors, present only when valid is false. + items: + $ref: '#/components/schemas/ClusterConfigurationValidationError' + maxItems: 100 + type: array + valid: + description: Whether the cluster configuration is valid. + type: boolean + type: object ClusterConnectionStrings: description: Collection of Uniform Resource Locators that point to the MongoDB database. externalDocs: @@ -10279,6 +10851,26 @@ components: readOnly: true title: Cluster Connection Strings type: object + ClusterCostEstimate: + description: Estimated compute cost of running a cluster. + properties: + disclaimer: + description: Human-readable notes about what the estimate does and does not cover. Suitable for rendering to the user. Omitted for free-tier (M0) estimates. + readOnly: true + type: string + hourlyEstimateCredits: + description: Estimated compute cost per hour, in Atlas credits. One Atlas credit converts 1:1 to one US dollar. + readOnly: true + type: number + monthlyEstimateCredits: + description: Estimated compute cost per month, in Atlas credits. One Atlas credit converts 1:1 to one US dollar. + readOnly: true + type: number + required: + - hourlyEstimateCredits + - monthlyEstimateCredits + title: Cluster Cost Estimate + type: object ClusterDescription20240805: description: Configuration of a MongoDB Atlas cluster, including its replication topology, instance sizing, storage, and operational settings. properties: @@ -10341,17 +10933,29 @@ components: format: date-time readOnly: true type: string + databaseEdition: + description: 'Available in Public Preview: Optional field that indicates whether your cluster will be Atlas INFINITE or CORE. You can set it only when you create the cluster, or when you upgrade a Free or Flex cluster to a dedicated cluster. This value is immutable once the dedicated cluster exists; attempting to change it on an update request returns an error.' + enum: + - CORE + - INFINITE + type: string diskWarmingMode: default: FULLY_WARMED description: Disk warming mode selection. enum: - FULLY_WARMED - VISIBLE_EARLIER - - ENHANCED_FULLY_WARMED externalDocs: description: Reduce Secondary Disk Warming Impact url: https://docs.atlas.mongodb.com/reference/replica-set-tags/#reduce-secondary-disk-warming-impact type: string + effectiveDatabaseEdition: + description: 'Available in Public Preview: Field that represents whether your cluster is Atlas INFINITE or CORE. This is read-only and always returned in the response. It reflects the actual cluster state. This value matches `databaseEdition` if it was set, otherwise it reflects the default database edition assigned to the cluster.' + enum: + - CORE + - INFINITE + readOnly: true + type: string effectiveReplicationSpecs: description: List of settings that represent the actual cluster state. This is read-only and always returned in the response. It reflects the current cluster configuration, which may differ from `replicationSpecs` due to system-managed changes. items: @@ -12112,6 +12716,15 @@ components: - GCP type: string type: object + CreateEphemeralClusterRequest: + description: Create an Atlas Ephemeral cluster. + properties: + clusterName: + description: Human-readable label that identifies the Ephemeral cluster. Defaults to `Cluster0`. + nullable: true + pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ + type: string + type: object CreateGCPEndpointGroupRequest: allOf: - $ref: '#/components/schemas/CreateEndpointRequest' @@ -12168,6 +12781,7 @@ components: $ref: '#/components/schemas/ServiceAccountIPAccessListEntry' maxItems: 200 type: array + x-xgen-array-semantic: set mcpConfigName: description: Human-readable name that identifies this MCP configuration. maxLength: 64 @@ -12183,6 +12797,7 @@ components: maxItems: 100 minItems: 1 type: array + x-xgen-array-semantic: set required: - mcpConfigName - roles @@ -12195,6 +12810,7 @@ components: $ref: '#/components/schemas/ServiceAccountIPAccessListEntry' maxItems: 200 type: array + x-xgen-array-semantic: set mcpConfigName: description: Human-readable name that identifies this MCP configuration. maxLength: 64 @@ -12216,6 +12832,7 @@ components: maxItems: 100 minItems: 1 type: array + x-xgen-array-semantic: set required: - mcpConfigName - roles @@ -13704,6 +14321,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -14305,6 +14931,7 @@ components: - US3 - US5 - AP1 + - AP2 - US1_FED externalDocs: description: Datadog regions @@ -14433,6 +15060,7 @@ components: - US3 - US5 - AP1 + - AP2 - US1_FED externalDocs: description: Datadog regions @@ -14770,14 +15398,17 @@ components: - COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_ANALYTICS - COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - COMPUTE_AUTO_SCALE_OPLOG_FAIL_ANALYTICS + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_ANALYTICS - DISK_AUTO_SCALE_INITIATED - DISK_AUTO_SCALE_MAX_DISK_SIZE_FAIL - DISK_AUTO_SCALE_OPLOG_FAIL + - CLUSTER_AUTO_SHARDING_INITIATED + - CLUSTER_RESHARDING_COMPLETED - PREDICTIVE_COMPUTE_AUTO_SCALE_INITIATED_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - - CLUSTER_AUTO_SHARDING_INITIATED - - CLUSTER_RESHARDING_COMPLETED + - PREDICTIVE_COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE title: Auto Scaling Audit Types type: string - enum: @@ -15039,16 +15670,19 @@ components: - COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_ANALYTICS - COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - COMPUTE_AUTO_SCALE_OPLOG_FAIL_ANALYTICS + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_ANALYTICS - DISK_AUTO_SCALE_INITIATED - DISK_AUTO_SCALE_MAX_DISK_SIZE_FAIL - DISK_AUTO_SCALE_OPLOG_FAIL + - COMPUTE_AUTO_SCALE_DOWNSCALE_SKIPPED_FALLBACK_BASE + - COMPUTE_AUTO_SCALE_DOWNSCALE_SKIPPED_FALLBACK_ANALYTICS + - CLUSTER_AUTO_SHARDING_INITIATED + - CLUSTER_RESHARDING_COMPLETED - PREDICTIVE_COMPUTE_AUTO_SCALE_INITIATED_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - - CLUSTER_AUTO_SHARDING_INITIATED - - CLUSTER_RESHARDING_COMPLETED - - COMPUTE_AUTO_SCALE_DOWNSCALE_SKIPPED_FALLBACK_BASE - - COMPUTE_AUTO_SCALE_DOWNSCALE_SKIPPED_FALLBACK_ANALYTICS + - PREDICTIVE_COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE title: Auto Scaling Audit Types type: string - enum: @@ -15134,6 +15768,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -15652,6 +16295,11 @@ components: - ROLE_MAPPING_CREATED - ROLE_MAPPING_UPDATED - ROLE_MAPPING_DELETED + - SCIM_CLIENT_CREATED + - SCIM_CLIENT_UPDATED + - SCIM_CLIENT_DELETED + - SCIM_CLIENT_SECRET_CREATED + - SCIM_CLIENT_SECRET_DELETED title: Federation Settings Event Types type: string - enum: @@ -17843,6 +18491,10 @@ components: description: Usage count (since last restart) of index. format: int64 type: integer + collation: + additionalProperties: true + description: Collation this index was built with. An index only serves a query that runs with the same collation. Absent when the index uses the default (simple) collation. + type: object index: description: List that contains documents that specify a key in the index and its sort order. items: @@ -18342,6 +18994,62 @@ components: - content - status type: object + EphemeralClusterCreated: + description: Details for the Atlas Ephemeral cluster that was created. + properties: + claimUrl: + description: Unique URL for claiming this Ephemeral cluster. Redirects to the Atlas sign-in or registration page, where a user signs in or creates an account to claim the cluster. Valid for 7 days after the cluster is created. + format: uri + type: string + clusterId: + description: Unique identifier of the Ephemeral cluster. Use this ID to retrieve the cluster's status and details in a GET request. + type: string + connectionString: + description: Connection string that uses the `mongodb+srv://` protocol to connect to the Ephemeral cluster. This string includes the unredacted SCRAM credentials (username and password) for an automatically generated database user that Atlas grants the built-in `readWriteAnyDatabase` role. + type: string + expiresAt: + description: Date and time when the cluster will be paused and no longer accessible until it is claimed. This parameter expresses its value in the ISO 8601 timestamp format in UTC. + format: date-time + type: string + status: + description: Status of the Ephemeral cluster. + enum: + - ACTIVE + - PAUSED + type: string + termsOfService: + description: Notice that by using this API, you agree to MongoDB's Cloud Terms of Service at and Privacy Policy at . Includes a link to the full terms. + type: string + type: object + EphemeralClusterStatusResponse: + description: Current status and details of an ephemeral Atlas cluster. + properties: + claimUrl: + description: Unique URL for claiming this Ephemeral cluster. Redirects to the Atlas sign-in or registration page, where a user signs in or creates an account to claim the cluster. Valid for 7 days after the cluster is created. + format: uri + type: string + clusterId: + description: Unique identifier of the Ephemeral cluster. Use this ID to retrieve the cluster's status and details in a GET request. + type: string + connectionString: + description: Connection string that uses the `mongodb+srv://` protocol to connect to the Ephemeral cluster. This string includes the SCRAM username of an automatically generated database user, but replaces the password with a placeholder. Atlas returns the password only in the create response. + nullable: true + type: string + expiresAt: + description: Date and time when the cluster will be paused and no longer accessible until it is claimed. This parameter expresses its value in the ISO 8601 timestamp format in UTC. + format: date-time + type: string + status: + description: Status of the Ephemeral cluster. + enum: + - PROVISIONING + - ACTIVE + - PAUSED + type: string + termsOfService: + description: Notice that by using this API, you agree to MongoDB's Cloud Terms of Service at and Privacy Policy at . Includes a link to the full terms. + type: string + type: object EventSeverity: description: Severity of the event. enum: @@ -18770,6 +19478,8 @@ components: - PLAN_ABANDONED - PLAN_DECLINED - PLAN_FAILURE_COUNT_RESET + - CAPACITY_RETRY_OVERRIDE_SET + - CAPACITY_RETRY_OVERRIDE_REMOVED - PLAN_ASAP_REQUESTED - INDEPENDENT_SHARD_AUTO_SCALING_AVAILABLE - INDEPENDENT_SHARD_SCALING_CLUSTER_MIGRATED @@ -18889,6 +19599,7 @@ components: - CLUSTER_FORCE_RECONFIG_REQUESTED - AGENT_FORCE_RESTART_REQUESTED - CLUSTER_RESET_FORCE_RECONFIG_REQUESTED + - CLUSTER_FORCE_PAUSE_REQUESTED - PROJECT_BYPASSED_MAINTENANCE - FEATURE_FLAG_MAINTENANCE - DATA_FEDERATION_QUERY_LIMIT_CONFIGURED @@ -19001,6 +19712,11 @@ components: - VOLUME_IMPAIRED_RESOLVED - SQL_INTERFACE_ENABLED - SQL_INTERFACE_DISABLED + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_REQUESTED + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_STARTED + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_FAILED_TO_START + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_END_REQUESTED + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_ENDED title: Atlas Audit Types type: string - enum: @@ -19033,13 +19749,16 @@ components: - COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_ANALYTICS - COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - COMPUTE_AUTO_SCALE_OPLOG_FAIL_ANALYTICS + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_ANALYTICS - DISK_AUTO_SCALE_MAX_DISK_SIZE_FAIL - DISK_AUTO_SCALE_OPLOG_FAIL + - CLUSTER_AUTO_SHARDING_INITIATED + - CLUSTER_RESHARDING_COMPLETED - PREDICTIVE_COMPUTE_AUTO_SCALE_INITIATED_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - - CLUSTER_AUTO_SHARDING_INITIATED - - CLUSTER_RESHARDING_COMPLETED + - PREDICTIVE_COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE title: Auto Scaling Audit Types type: string - enum: @@ -19333,6 +20052,7 @@ components: - CREDIT_PULLED_FWD - CREDIT_END_DATE_MODIFIED - PROMO_CODE_APPLIED + - PAYMENT_METHOD_DEACTIVATED - PAYMENT_FORGIVEN - REFUND_ISSUED - ACCOUNT_DOWNGRADED @@ -19426,6 +20146,11 @@ components: - ROLE_MAPPING_CREATED - ROLE_MAPPING_UPDATED - ROLE_MAPPING_DELETED + - SCIM_CLIENT_CREATED + - SCIM_CLIENT_UPDATED + - SCIM_CLIENT_DELETED + - SCIM_CLIENT_SECRET_CREATED + - SCIM_CLIENT_SECRET_DELETED title: Federation Settings Event Types type: string - enum: @@ -20929,6 +21654,12 @@ components: format: date-time readOnly: true type: string + databaseEdition: + description: 'Available in Public Preview: Optional field that indicates whether your tenant cluster will be upgraded to Atlas INFINITE or CORE.' + enum: + - CORE + - INFINITE + type: string groupId: description: Unique 24-hexadecimal character string that identifies the project. example: 32b6e34b3d91647abb20e7b8 @@ -21005,6 +21736,12 @@ components: FlexClusterDescriptionCreate20241113: description: Settings that you can specify when you create a flex cluster. properties: + databaseEdition: + description: 'Available in Public Preview: Optional field that indicates whether your tenant cluster will be upgraded to Atlas INFINITE or CORE.' + enum: + - CORE + - INFINITE + type: string links: description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. externalDocs: @@ -21041,6 +21778,12 @@ components: FlexClusterDescriptionUpdate20241113: description: Settings that you can specify when you update a flex cluster. properties: + databaseEdition: + description: 'Available in Public Preview: Optional field that indicates whether your tenant cluster will be upgraded to Atlas INFINITE or CORE.' + enum: + - CORE + - INFINITE + type: string links: description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. externalDocs: @@ -21308,6 +22051,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -22132,6 +22884,8 @@ components: - M80_GEN_2 - M140_GEN_2 - M200_GEN_2 + - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -22171,6 +22925,8 @@ components: - M80_GEN_2 - M140_GEN_2 - M200_GEN_2 + - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -22294,6 +23050,25 @@ components: type: object GCPHardwareSpec: properties: + diskIOPS: + description: |- + Target IOPS (Input/Output Operations Per Second) desired for storage attached to this hardware. Only configurable for Gen 2 instance sizes. + + Change this parameter if you: + + - set `replicationSpecs[n].regionConfigs[m].providerName` to `GCP`. + - set `replicationSpecs[n].regionConfigs[m].electableSpecs.instanceSize` to a Gen 2 instance size (`M30_GEN_2` or greater). + + The maximum input/output operations per second (IOPS) depend on the selected `.instanceSize` and `.diskSizeGB`. + This parameter defaults to the standard IOPS value for the selected `.diskSizeGB`. + Changing this value impacts cluster cost. + format: int32 + type: integer + diskThroughput: + description: Throughput (in MiB/s) provisioned for storage attached to this hardware. Only returned for Gen 2 instance sizes. + format: int32 + readOnly: true + type: integer instanceSize: description: Hardware specification for the instance sizes in this region. Each instance size has a default storage and memory capacity. The instance size you select applies to all the data-bearing hosts of the node type. enum: @@ -22324,6 +23099,8 @@ components: - M80_GEN_2 - M140_GEN_2 - M200_GEN_2 + - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -22340,6 +23117,20 @@ components: type: object GCPHardwareSpec20240805: properties: + diskIOPS: + description: |- + Target IOPS (Input/Output Operations Per Second) desired for storage attached to this hardware. Only configurable for Gen 2 instance sizes. + + Change this parameter if you: + + - set `"replicationSpecs[n].regionConfigs[m].providerName" : "GCP"`. + - set `"replicationSpecs[n].regionConfigs[m].electableSpecs.instanceSize"` to a Gen 2 instance size (`"M30_GEN_2"` or greater). + + The maximum input/output operations per second (IOPS) depend on the selected `.instanceSize` and `.diskSizeGB`. + This parameter defaults to the standard IOPS value for the selected `.diskSizeGB`. + Changing this value impacts cluster cost. + format: int32 + type: integer diskSizeGB: description: "Storage capacity of instance data volumes expressed in gigabytes. Increase this number to add capacity.\n\n This value must be equal for all shards and node types.\n\n This value is not configurable on M0/M2/M5 clusters.\n\n MongoDB Cloud requires this parameter if you set `replicationSpecs`.\n\n If you specify a disk size below the minimum (10 GB), this parameter defaults to the minimum disk size value. \n\n Storage charge calculations depend on whether you choose the default value or a custom value.\n\n The maximum value for disk storage cannot exceed 50 times the maximum RAM for the selected cluster. If you require more storage space, consider upgrading your cluster to a higher tier." externalDocs: @@ -22347,6 +23138,11 @@ components: url: https://dochub.mongodb.org/core/customize-storage format: double type: number + diskThroughput: + description: Throughput (in MiB/s) provisioned for storage attached to this hardware. Only returned for Gen 2 instance sizes. + format: int32 + readOnly: true + type: integer instanceSize: description: Hardware specification for the instance sizes in this region in this shard. Each instance size has a default storage and memory capacity. Electable nodes and read-only nodes (known as "base nodes") within a single shard must use the same instance size. Analytics nodes can scale independently from base nodes within a shard. Both base nodes and analytics nodes can scale independently from their equivalents in other shards. enum: @@ -22377,6 +23173,8 @@ components: - M80_GEN_2 - M140_GEN_2 - M200_GEN_2 + - M300_GEN_2 + - M700_GEN_2 - R40_GEN_2 - R50_GEN_2 - R60_GEN_2 @@ -22446,11 +23244,11 @@ components: - $ref: '#/components/schemas/CloudRegionConfig' - properties: analyticsAutoScaling: - $ref: '#/components/schemas/AdvancedAutoScalingSettings' + $ref: '#/components/schemas/AutoScalingSettings' analyticsSpecs: $ref: '#/components/schemas/DedicatedHardwareSpec' autoScaling: - $ref: '#/components/schemas/AdvancedAutoScalingSettings' + $ref: '#/components/schemas/AutoScalingSettings' readOnlySpecs: $ref: '#/components/schemas/DedicatedHardwareSpec' type: object @@ -23191,6 +23989,13 @@ components: maximum: 7 minimum: 1 type: integer + effectiveWaveAssignment: + description: 'Maintenance wave that Atlas uses when scheduling maintenance for this project. This read-only value can differ from `waveAssignment` in two scenarios: (1) when the organization''s `effectiveWaveAssignmentMode` is `ENV_TAG_MAPPING`, the effective wave is derived from environment tags regardless of any explicit assignment; (2) when cross-organization maintenance sequencing is active and this project''s organization is a linked non-paying organization, the effective wave reflects the paying organization''s mode.' + format: int32 + maximum: 3 + minimum: 1 + readOnly: true + type: integer hourOfDay: description: Zero-based integer that represents the hour of the day, in the project's configured time zone (see `timeZoneId`), that the maintenance window starts according to a 24-hour clock. Use `0` for midnight and `12` for noon. If you haven't changed your project's time zone, this defaults to UTC. format: int32 @@ -23211,8 +24016,13 @@ components: description: Identifier for the current time zone of the maintenance window. This can only be updated via the Project Settings UI. readOnly: true type: string - required: - - dayOfWeek + waveAssignment: + description: Maintenance wave explicitly assigned to this project. Always returned in GET responses when a value has been set, regardless of the organization's `effectiveWaveAssignmentMode`. When the mode is `ENV_TAG_MAPPING`, this stored assignment is preserved but not used for scheduling — the effective wave is derived from environment tags instead. Not editable when the mode is `ENV_TAG_MAPPING`. Switching back to `MANUAL` restores this value as the effective wave. Must be between 1 and 3, inclusive. Pass `null` to clear an explicit assignment. + format: int32 + maximum: 3 + minimum: 1 + nullable: true + type: integer type: object GroupMaintenanceWindowPreviewResponse: properties: @@ -23268,8 +24078,6 @@ components: minimum: 1 nullable: true type: integer - required: - - dayOfWeek type: object GroupMaintenanceWindowPreviewUpdateRequest: properties: @@ -23330,6 +24138,7 @@ components: $ref: '#/components/schemas/ServiceAccountIPAccessListEntry' maxItems: 200 type: array + x-xgen-array-semantic: set mcpConfigId: description: Unique identifier that identifies this MCP configuration. example: b9254bc4-d6cc-4325-abf4-fb9d2a9de00a @@ -23349,6 +24158,7 @@ components: type: string maxItems: 100 type: array + x-xgen-array-semantic: set type: object GroupMcpConfigUpdateRequest: properties: @@ -23358,6 +24168,7 @@ components: $ref: '#/components/schemas/ServiceAccountIPAccessListEntry' maxItems: 200 type: array + x-xgen-array-semantic: set mcpConfigName: description: Updated human-readable name for this MCP configuration. maxLength: 64 @@ -23375,6 +24186,7 @@ components: maxItems: 100 minItems: 1 type: array + x-xgen-array-semantic: set type: object GroupMigrationRequest: properties: @@ -23584,6 +24396,12 @@ components: $ref: '#/components/schemas/ServiceAccountSecret' type: array uniqueItems: true + systemManaged: + description: Indicates whether the Service Account is system managed. + readOnly: true + type: boolean + required: + - systemManaged type: object GroupServiceAccountRequest: properties: @@ -23609,17 +24427,22 @@ components: minItems: 1 type: array secretExpiresAfterHours: - description: The expiration time of the new Service Account secret, provided in hours. The minimum and maximum allowed expiration times are subject to change and are controlled by the organization's settings. + description: The expiration time of the new Service Account secret, provided in hours. The minimum and maximum allowed expiration times are subject to change and are controlled by the organization's settings. Required unless `withoutInitialSecret` is true. example: 8 exclusiveMinimum: true format: int32 minimum: 0 + nullable: true type: integer + withoutInitialSecret: + default: false + description: 'If true, creates the Service Account without generating an initial secret. `secretExpiresAfterHours` must not be set when this is true. Defaults to false, which preserves existing behavior: a secret is generated and returned in the response. Use the `CreateGroupServiceAccountSecret` endpoint to add a secret later.' + nullable: true + type: boolean required: - description - name - roles - - secretExpiresAfterHours type: object GroupServiceAccountRoleAssignment: properties: @@ -23701,6 +24524,57 @@ components: isSchemaAdvisorEnabled: description: Flag that indicates whether to enable the Schema Advisor for the specified project. type: boolean + privateEndpointConnectionStringsEnabled: + default: false + description: Flag that indicates whether the project uses the private endpoint connection strings resource. + type: boolean + type: object + GroupSettingsPreview: + properties: + isAtlasHomePageAiAssistantEnabled: + description: Flag that indicates whether the MongoDB Assistant on the Atlas Home Page is enabled for the specified project. + type: boolean + isClusterAiAssistantEnabled: + description: Flag that indicates whether the AI Cluster Assistant is enabled for the specified project. + type: boolean + isCollectDatabaseSpecificsStatisticsEnabled: + description: Flag that indicates whether to collect database-specific metrics for the specified project. + type: boolean + isDataExplorerEnabled: + description: Flag that indicates whether to enable the Data Explorer for the specified project. + type: boolean + isDataExplorerGenAIFeaturesEnabled: + description: Flag that indicates whether to enable the use of generative AI features which make requests to 3rd party services in Data Explorer for the specified project. + type: boolean + isDataExplorerGenAISampleDocumentPassingEnabled: + default: false + description: Flag that indicates whether to enable the passing of sample field values with the use of generative AI features in the Data Explorer for the specified project. + type: boolean + isDataValidationEnabled: + description: Flag that indicates whether data validation is enabled for all clusters in the specified project. + type: boolean + isExtendedStorageSizesEnabled: + description: Flag that indicates whether to enable extended storage sizes for the specified project. + type: boolean + isNativeRerankingEnabled: + description: Flag that indicates whether to enable Native Reranking with Voyage AI models in the Aggregation Pipeline for the specified project. + type: boolean + isPerformanceAdvisorEnabled: + description: Flag that indicates whether to enable the Performance Advisor and Profiler for the specified project. + type: boolean + isQueryInsightsGenAiFeaturesEnabled: + description: Flag that indicates whether to enable AI features in Query Insights for the specified project. + type: boolean + isRealtimePerformancePanelEnabled: + description: Flag that indicates whether to enable the Real Time Performance Panel for the specified project. + type: boolean + isSchemaAdvisorEnabled: + description: Flag that indicates whether to enable the Schema Advisor for the specified project. + type: boolean + privateEndpointConnectionStringsEnabled: + default: false + description: Flag that indicates whether the project uses the private endpoint connection strings resource. + type: boolean type: object GroupUpdate: description: Request view to update the group. @@ -24044,6 +24918,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -24574,6 +25457,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -25415,6 +26307,38 @@ components: type: string readOnly: true type: object + ImportedDashboard: + description: Imported dashboard. + properties: + embeddingId: + description: Embedding ID of the item. This field only returns if embedding is enabled for the entity. + type: string + id: + description: ID of the dashboard. + type: string + title: + description: Title of the dashboard. + type: string + required: + - id + - title + type: object + ImportedItem: + description: Imported Item. + properties: + embeddingId: + description: Embedding ID of the item. This will only be returned if embedding is enabled for the entity. + type: string + id: + description: ID of the item. + type: string + title: + description: Title of the item. + type: string + required: + - id + - title + type: object InboundControlPlaneCloudProviderIPAddresses: description: List of inbound IP addresses to the Atlas control plane, categorized by cloud provider. If your application allows outbound HTTP requests only to specific IP addresses, you must allow access to the following IP addresses so that your API requests can reach the Atlas control plane. properties: @@ -25680,6 +26604,28 @@ components: type: object type: object writeOnly: true + Info: + description: Information about the MongoDB Atlas Administration API OpenAPI Specification. + properties: + description: + description: Description of the MongoDB Atlas Administration API. + example: The MongoDB Atlas Administration API allows developers to manage all components in MongoDB Atlas. + type: string + license: + $ref: '#/components/schemas/License' + termsOfService: + description: Terms of Service URL. + example: https://www.mongodb.com/mongodb-management-service-terms-and-conditions + type: string + title: + description: Title of the MongoDB Atlas Administration API. + example: MongoDB Atlas Administration API. + type: string + version: + description: Version of the MongoDB Atlas Administration API. + example: "2.0" + type: string + type: object InvoiceLineItem: description: One service included in this invoice. properties: @@ -26188,6 +27134,12 @@ components: format: date-time readOnly: true type: string + databaseEdition: + description: 'Available in Public Preview: Optional field that indicates whether your cluster will be Atlas INFINITE or CORE. This field applies only to flex and shared clusters. You can set it only when you create the cluster, or when you upgrade a flex cluster to a dedicated cluster. This value is immutable once the dedicated cluster exists; attempting to change it on an update request returns an error.' + enum: + - CORE + - INFINITE + type: string deleteAfterCreationHours: description: |- Number of hours after cluster creation that this cluster will be automatically deleted. @@ -26225,11 +27177,17 @@ components: enum: - FULLY_WARMED - VISIBLE_EARLIER - - ENHANCED_FULLY_WARMED externalDocs: description: Reduce Secondary Disk Warming Impact url: https://docs.atlas.mongodb.com/reference/replica-set-tags/#reduce-secondary-disk-warming-impact type: string + effectiveDatabaseEdition: + description: 'Available in Public Preview: Field that represents whether your cluster is Atlas INFINITE or CORE. This field applies only to flex and shared clusters. This is read-only and always returned in the response. It reflects the actual cluster state. This value matches `databaseEdition` if it was set, otherwise it reflects the default database edition assigned to the cluster.' + enum: + - CORE + - INFINITE + readOnly: true + type: string encryptionAtRestProvider: description: 'Cloud service provider that manages your customer keys to provide an additional layer of encryption at rest for the cluster. To enable customer key management for encryption at rest, the cluster `replicationSpecs[n].regionConfigs[m].{type}Specs.instanceSize` setting must be `M10` or higher and `"backupEnabled" : false` or omitted entirely.' enum: @@ -26509,6 +27467,12 @@ components: format: date-time readOnly: true type: string + databaseEdition: + description: 'Available in Public Preview: Optional field that indicates whether your cluster will be Atlas INFINITE or CORE. This field applies only to flex and shared clusters. You can set it only when you create the cluster, or when you upgrade a flex cluster to a dedicated cluster. This value is immutable once the dedicated cluster exists; attempting to change it on an update request returns an error.' + enum: + - CORE + - INFINITE + type: string deleteAfterCreationHours: description: |- Number of hours after cluster creation that this cluster will be automatically deleted. @@ -26546,11 +27510,17 @@ components: enum: - FULLY_WARMED - VISIBLE_EARLIER - - ENHANCED_FULLY_WARMED externalDocs: description: Reduce Secondary Disk Warming Impact url: https://docs.atlas.mongodb.com/reference/replica-set-tags/#reduce-secondary-disk-warming-impact type: string + effectiveDatabaseEdition: + description: 'Available in Public Preview: Field that represents whether your cluster is Atlas INFINITE or CORE. This field applies only to flex and shared clusters. This is read-only and always returned in the response. It reflects the actual cluster state. This value matches `databaseEdition` if it was set, otherwise it reflects the default database edition assigned to the cluster.' + enum: + - CORE + - INFINITE + readOnly: true + type: string encryptionAtRestProvider: description: 'Cloud service provider that manages your customer keys to provide an additional layer of encryption at rest for the cluster. To enable customer key management for encryption at rest, the cluster `replicationSpecs[n].regionConfigs[m].{type}Specs.instanceSize` setting must be `M10` or higher and `"backupEnabled" : false` or omitted entirely.' enum: @@ -26910,6 +27880,18 @@ components: - eventTypeName - notifications type: object + License: + description: License information of the MongoDB Atlas Administration API. + properties: + name: + description: Name of the license. + example: CC BY-NC-SA 3.0 US + type: string + url: + description: URL of the license. + example: https://creativecommons.org/licenses/by-nc-sa/3.0/us/ + type: string + type: object Link: properties: href: @@ -28447,9 +29429,10 @@ components: - CUMULATIVE type: string authType: - description: Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used. + description: Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used. `OAUTH2` acquires a bearer token from an OAuth 2.0 token endpoint using the `oauth` field. enum: - HEADER + - OAUTH2 type: string endpoint: description: OpenTelemetry collector endpoint URL. Must use HTTPS. @@ -28481,10 +29464,13 @@ components: minItems: 1 type: array uniqueItems: true + oauth: + $ref: '#/components/schemas/OAuthConfigRequest' providerType: description: The provider type for the metric integration. Identifies the third-party service provider. enum: - CUSTOM + - DATADOG - DYNATRACE - NEW_RELIC type: string @@ -28510,6 +29496,7 @@ components: description: Authentication method the integration uses when exporting metrics to the endpoint. enum: - HEADER + - OAUTH2 type: string endpoint: description: OpenTelemetry collector endpoint URL. @@ -28549,10 +29536,13 @@ components: minItems: 1 type: array uniqueItems: true + oauth: + $ref: '#/components/schemas/OAuthConfigResponse' providerType: description: The provider type for the metric integration. Identifies the third-party service provider. enum: - CUSTOM + - DATADOG - DYNATRACE - NEW_RELIC type: string @@ -28567,7 +29557,7 @@ components: title: Metric Integration Response type: object MetricIntegrationUpdateRequest: - description: Request schema for updating a metric integration. + description: Request schema for updating a metric integration. Omitted OAuth fields keep their stored values. An explicit null, an empty `scopes` array, or an empty `tokenRequestParams` object clears that field. Omitting `clientSecret` keeps the stored secret. properties: aggregationTemporality: description: The temporality to send to the metric integration. @@ -28576,9 +29566,10 @@ components: - CUMULATIVE type: string authType: - description: Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used. + description: Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used. `OAUTH2` acquires a bearer token from an OAuth 2.0 token endpoint using the `oauth` field. enum: - HEADER + - OAUTH2 type: string endpoint: description: OpenTelemetry collector endpoint URL. Must use HTTPS. @@ -28610,10 +29601,13 @@ components: minItems: 1 type: array uniqueItems: true + oauth: + $ref: '#/components/schemas/OAuthConfigRequest' providerType: description: The provider type for the metric integration. Identifies the third-party service provider. enum: - CUSTOM + - DATADOG - DYNATRACE - NEW_RELIC type: string @@ -28794,6 +29788,48 @@ components: readOnly: true type: array type: object + MongosRegionConfig: + description: Dedicated mongos placement in one region. + properties: + nodeCount: + description: Number of dedicated mongos to run in this region. + format: int32 + type: integer + providerName: + description: Cloud provider on which the dedicated mongos run. + enum: + - AWS + - AZURE + - GCP + type: string + regionName: + description: Region in which the dedicated mongos run. + type: string + type: object + MongosTier: + description: Hardware spec for the dedicated mongos tier. + properties: + instanceSize: + description: Instance size of the dedicated mongos hosts (for example, `M30`). + type: string + regionConfigs: + description: Per-region placement of the dedicated mongos hosts. + items: + $ref: '#/components/schemas/MongosRegionConfig' + type: array + type: object + MongosTopology: + description: 'Configuration of the mongos routers for a sharded cluster: colocated on the shard nodes or running on a dedicated tier.' + properties: + state: + description: Desired mongos topology. `COLOCATED` runs mongos on the shard nodes; `DEDICATED` runs mongos on a dedicated tier described by `tier`. + enum: + - COLOCATED + - DEDICATED + type: string + tier: + $ref: '#/components/schemas/MongosTier' + type: object MongotuneAlertConfigViewForNdsGroup: description: Intelligent Workload Management alert configuration allows to select which Intelligent Workload Management events trigger alerts and how users are notified. properties: @@ -29155,6 +30191,8 @@ components: - PLAN_ABANDONED - PLAN_DECLINED - PLAN_FAILURE_COUNT_RESET + - CAPACITY_RETRY_OVERRIDE_SET + - CAPACITY_RETRY_OVERRIDE_REMOVED - PLAN_ASAP_REQUESTED - INDEPENDENT_SHARD_AUTO_SCALING_AVAILABLE - INDEPENDENT_SHARD_SCALING_CLUSTER_MIGRATED @@ -29274,6 +30312,7 @@ components: - CLUSTER_FORCE_RECONFIG_REQUESTED - AGENT_FORCE_RESTART_REQUESTED - CLUSTER_RESET_FORCE_RECONFIG_REQUESTED + - CLUSTER_FORCE_PAUSE_REQUESTED - PROJECT_BYPASSED_MAINTENANCE - FEATURE_FLAG_MAINTENANCE - DATA_FEDERATION_QUERY_LIMIT_CONFIGURED @@ -29386,6 +30425,11 @@ components: - VOLUME_IMPAIRED_RESOLVED - SQL_INTERFACE_ENABLED - SQL_INTERFACE_DISABLED + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_REQUESTED + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_STARTED + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_FAILED_TO_START + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_END_REQUESTED + - CLUSTER_OVERLOAD_PROTECTION_SIMULATION_ENDED example: CLUSTER_CREATED title: Atlas Audit Types type: string @@ -29604,14 +30648,17 @@ components: - COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_ANALYTICS - COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - COMPUTE_AUTO_SCALE_OPLOG_FAIL_ANALYTICS + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_ANALYTICS - DISK_AUTO_SCALE_INITIATED - DISK_AUTO_SCALE_MAX_DISK_SIZE_FAIL - DISK_AUTO_SCALE_OPLOG_FAIL + - CLUSTER_AUTO_SHARDING_INITIATED + - CLUSTER_RESHARDING_COMPLETED - PREDICTIVE_COMPUTE_AUTO_SCALE_INITIATED_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - - CLUSTER_AUTO_SHARDING_INITIATED - - CLUSTER_RESHARDING_COMPLETED + - PREDICTIVE_COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE example: COMPUTE_AUTO_SCALE_INITIATED_BASE externalDocs: description: Atlas Alert Event Types @@ -29633,13 +30680,16 @@ components: - COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_ANALYTICS - COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - COMPUTE_AUTO_SCALE_OPLOG_FAIL_ANALYTICS + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE + - COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_ANALYTICS - DISK_AUTO_SCALE_MAX_DISK_SIZE_FAIL - DISK_AUTO_SCALE_OPLOG_FAIL + - CLUSTER_AUTO_SHARDING_INITIATED + - CLUSTER_RESHARDING_COMPLETED - PREDICTIVE_COMPUTE_AUTO_SCALE_INITIATED_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_MAX_INSTANCE_SIZE_FAIL_BASE - PREDICTIVE_COMPUTE_AUTO_SCALE_OPLOG_FAIL_BASE - - CLUSTER_AUTO_SHARDING_INITIATED - - CLUSTER_RESHARDING_COMPLETED + - PREDICTIVE_COMPUTE_AUTO_SCALE_CAPACITY_CONSTRAINT_FAIL_BASE example: COMPUTE_AUTO_SCALE_INITIATED title: Auto Scaling Audit Types type: string @@ -30554,6 +31604,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -30742,6 +31801,121 @@ components: readOnly: true title: Number Metric Value type: object + OAuthConfigRequest: + description: OAuth 2.0 client credentials configuration. Required when `authType` is `OAUTH2`. Secrets are never returned. + properties: + clientAuthMethod: + description: How the client authenticates to the token endpoint. `CLIENT_SECRET` sends a shared secret. `PRIVATE_KEY_JWT` signs a client assertion with an Atlas-generated, Atlas-managed key. Register the returned JWKS URL with your identity provider. + enum: + - CLIENT_SECRET + - PRIVATE_KEY_JWT + type: string + clientId: + description: OAuth 2.0 client identifier registered with the token endpoint. + example: atlas-otel + maxLength: 2048 + type: string + clientSecret: + description: Shared client secret. Required when `clientAuthMethod` is `CLIENT_SECRET`, and rejected for `PRIVATE_KEY_JWT`. Encrypted at rest and never returned. + format: password + type: string + writeOnly: true + scopes: + description: Optional OAuth 2.0 scopes requested on the token, sent as a space delimited `scope` parameter. Applies to both client authentication methods. + items: + maxLength: 256 + type: string + maxItems: 20 + type: array + uniqueItems: true + tokenEndpoint: + description: OAuth 2.0 token endpoint URL. Must use HTTPS. + example: https://idp.example.com/oauth2/token + maxLength: 2048 + type: string + tokenRequestParams: + additionalProperties: + description: Optional provider-specific parameters added to the token request, for example a resource indicator. Applies to both client authentication methods. + example: '{"resource":"https://otel.example.com/metrics"}' + maxProperties: 10 + type: string + description: Optional provider-specific parameters added to the token request, for example a resource indicator. Applies to both client authentication methods. + example: + resource: https://otel.example.com/metrics + maxProperties: 10 + type: object + required: + - clientAuthMethod + - clientId + - tokenEndpoint + title: OAuth Config Request + type: object + OAuthConfigResponse: + description: OAuth 2.0 configuration returned for a metric integration. Secrets are never returned. + properties: + clientAuthMethod: + description: How the client authenticates to the token endpoint. + enum: + - CLIENT_SECRET + - PRIVATE_KEY_JWT + type: string + clientId: + description: OAuth 2.0 client identifier registered with the token endpoint. + maxLength: 2048 + type: string + scopes: + description: OAuth 2.0 scopes requested on the token. + items: + maxLength: 256 + type: string + maxItems: 20 + type: array + uniqueItems: true + signingKeyInfo: + $ref: '#/components/schemas/OAuthSigningKeyInfo' + tokenEndpoint: + description: OAuth 2.0 token endpoint URL. + maxLength: 2048 + type: string + tokenRequestParams: + additionalProperties: + description: Provider-specific parameters added to the token request. + maxProperties: 10 + type: string + description: Provider-specific parameters added to the token request. + maxProperties: 10 + type: object + required: + - clientAuthMethod + - clientId + - tokenEndpoint + title: OAuth Config Response + type: object + OAuthSigningKeyInfo: + description: Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the `jwksUri` with your identity provider. Atlas rotates the underlying key without changing this URL. + properties: + algorithm: + description: Signing algorithm of the Atlas-managed key. + example: RS256 + readOnly: true + type: string + createdAt: + description: When the currently active signing key was created. This parameter expresses its value in the ISO 8601 timestamp format in UTC. + format: date-time + readOnly: true + type: string + jwksUri: + description: Public JWKS URL serving this integration's signing keys. Fixed for the lifetime of the integration. + example: https://cloud.mongodb.com/api/keys/clientJwks/9f6c2a1e-8b3d-4e7a-a2c5-1f0e9d41d000 + readOnly: true + type: string + kid: + description: Key ID stamped on client assertions, the `SHA-1` thumbprint of the key certificate in uppercase hexadecimal. Changes when Atlas rotates the key. + readOnly: true + type: string + readOnly: true + title: OAuth Signing Key Info + type: object ObjectStoragePrivateEndpointRequest: properties: cloudProvider: @@ -31233,6 +32407,11 @@ components: required: - metricName type: object + OpenApiInfo: + properties: + info: + $ref: '#/components/schemas/Info' + type: object OperationThrottlingRejectedOperationsRawMetricThresholdView: properties: metricName: @@ -32035,6 +33214,7 @@ components: $ref: '#/components/schemas/ServiceAccountIPAccessListEntry' maxItems: 200 type: array + x-xgen-array-semantic: set mcpConfigId: description: Unique identifier that identifies this MCP configuration. example: b9254bc4-d6cc-4325-abf4-fb9d2a9de00a @@ -32060,6 +33240,7 @@ components: type: string maxItems: 100 type: array + x-xgen-array-semantic: set type: object OrgMcpConfigUpdateRequest: properties: @@ -32069,6 +33250,7 @@ components: $ref: '#/components/schemas/ServiceAccountIPAccessListEntry' maxItems: 200 type: array + x-xgen-array-semantic: set mcpConfigName: description: Updated human-readable name for this MCP configuration. maxLength: 64 @@ -32093,6 +33275,7 @@ components: maxItems: 100 minItems: 1 type: array + x-xgen-array-semantic: set type: object OrgNotification: description: Organization notification configuration for MongoDB Cloud to send information when an event triggers an alert condition. @@ -32337,7 +33520,13 @@ components: $ref: '#/components/schemas/ServiceAccountSecret' type: array uniqueItems: true + systemManaged: + description: Indicates whether the Service Account is system managed. + readOnly: true + type: boolean readOnly: true + required: + - systemManaged type: object OrgServiceAccountRequest: description: Organization Service Account that Atlas creates for this organization. If omitted, Atlas doesn't create an organization Service Account for this organization. If specified, this object requires all body parameters. Note that API Keys cannot be specified in the same request. @@ -32370,17 +33559,22 @@ components: minItems: 1 type: array secretExpiresAfterHours: - description: The expiration time of the new Service Account secret, provided in hours. The minimum and maximum allowed expiration times are subject to change and are controlled by the organization's settings. + description: The expiration time of the new Service Account secret, provided in hours. The minimum and maximum allowed expiration times are subject to change and are controlled by the organization's settings. Required unless `withoutInitialSecret` is true. example: 8 exclusiveMinimum: true format: int32 minimum: 0 + nullable: true type: integer + withoutInitialSecret: + default: false + description: 'If true, creates the Service Account without generating an initial secret. `secretExpiresAfterHours` must not be set when this is true. Defaults to false, which preserves existing behavior: a secret is generated and returned in the response. Use the `CreateOrgServiceAccountSecret` endpoint to add a secret later.' + nullable: true + type: boolean required: - description - name - roles - - secretExpiresAfterHours type: object OrgServiceAccountUpdateRequest: properties: @@ -33722,6 +34916,58 @@ components: required: - results type: object + PaginatedApiStreamsTransitGatewayAttachmentResponse: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: '#/components/schemas/Link' + readOnly: true + type: array + results: + description: List of returned documents that MongoDB Cloud provides when completing this request. + items: + $ref: '#/components/schemas/StreamsTransitGatewayAttachmentResponse' + readOnly: true + type: array + totalCount: + description: Total number of documents available. MongoDB Cloud omits this value if `includeCount` is set to `false`. The total number is an estimate and may not be exact. + format: int32 + minimum: 0 + readOnly: true + type: integer + required: + - results + type: object + PaginatedApiStreamsTransitGatewayRouteResponse: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: '#/components/schemas/Link' + readOnly: true + type: array + results: + description: List of returned documents that MongoDB Cloud provides when completing this request. + items: + $ref: '#/components/schemas/StreamsTransitGatewayRouteResponse' + readOnly: true + type: array + totalCount: + description: Total number of documents available. MongoDB Cloud omits this value if `includeCount` is set to `false`. The total number is an estimate and may not be exact. + format: int32 + minimum: 0 + readOnly: true + type: integer + required: + - results + type: object PaginatedApiStreamsVPCPeeringConnectionView: properties: links: @@ -33774,6 +35020,32 @@ components: required: - results type: object + PaginatedApiVersions: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: '#/components/schemas/Link' + readOnly: true + type: array + results: + description: List of returned documents that MongoDB Cloud provides when completing this request. + items: + $ref: '#/components/schemas/ApiVersion' + readOnly: true + type: array + totalCount: + description: Total number of documents available. MongoDB Cloud omits this value if `includeCount` is set to `false`. The total number is an estimate and may not be exact. + format: int32 + minimum: 0 + readOnly: true + type: integer + required: + - results + type: object PaginatedAppUserView: properties: links: @@ -35087,6 +36359,58 @@ components: required: - results type: object + PaginatedStreamsTransitGatewayInvitationsResponse: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: '#/components/schemas/Link' + readOnly: true + type: array + results: + description: List of returned documents that MongoDB Cloud provides when completing this request. + items: + $ref: '#/components/schemas/StreamsTransitGatewayInvitationsResponse' + readOnly: true + type: array + totalCount: + description: Total number of documents available. MongoDB Cloud omits this value if `includeCount` is set to `false`. The total number is an estimate and may not be exact. + format: int32 + minimum: 0 + readOnly: true + type: integer + required: + - results + type: object + PaginatedStreamsWorkspacePrivateEndpointResponse: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: '#/components/schemas/Link' + readOnly: true + type: array + results: + description: List of returned documents that MongoDB Cloud provides when completing this request. + items: + $ref: '#/components/schemas/StreamsWorkspacePrivateEndpointResponse' + readOnly: true + type: array + totalCount: + description: Total number of documents available. MongoDB Cloud omits this value if `includeCount` is set to `false`. The total number is an estimate and may not be exact. + format: int32 + minimum: 0 + readOnly: true + type: integer + required: + - results + type: object PaginatedTeamRoleView: properties: links: @@ -35227,6 +36551,11 @@ components: format: double readOnly: true type: number + collation: + additionalProperties: true + description: Collation the queries behind this suggestion run with. An index only serves a query when the two share a collation, so an index created from this suggestion must be created with it. Absent when those queries use the default (simple) collation. + readOnly: true + type: object id: description: Unique 24-hexadecimal digit string that identifies this index. example: 32b6e34b3d91647abb20e7b8 @@ -35295,13 +36624,19 @@ components: PerformanceAdvisorOperationView: properties: predicates: - description: List that contains the search criteria that the query uses. To use the values in key-value pairs in these predicates requires **Project Data Access Read Only** permissions or greater. Otherwise, MongoDB Cloud redacts these values. + description: List that contains the search criteria that the query uses. To use the values in key-value pairs in these predicates requires **Project Observability Viewer** or **Project Data Access Read Only** permissions or greater. Otherwise, MongoDB Cloud redacts these values. items: - description: List that contains the search criteria that the query uses. To use the values in key-value pairs in these predicates requires **Project Data Access Read Only** permissions or greater. Otherwise, MongoDB Cloud redacts these values. + description: List that contains the search criteria that the query uses. To use the values in key-value pairs in these predicates requires **Project Observability Viewer** or **Project Data Access Read Only** permissions or greater. Otherwise, MongoDB Cloud redacts these values. readOnly: true type: object readOnly: true type: array + raw: + description: Opaque serialized raw slow query log line or query shape for the query shape to be improved with index suggestions. The format isn't stable, so don't parse this value. Accessing this value requires **Project Observability Viewer** or **Project Data Access Read Only** permissions or greater. Otherwise, MongoDB Cloud returns `null`. + example: '{"t":{"$date":"2026-08-17T22:04:15.133+00:00"},"s":"I","c":"COMMAND","id":51803,"ctx":"conn0","msg":"Slow query","attr":{"type":"command","ns":".","command":{"find":"","filter":{"":""},"$db":""},"planSummary":"COLLSCAN","keysExamined":0,"docsExamined":10000,"nreturned":1,"remote":"","durationMillis":108}}' + nullable: true + readOnly: true + type: string stats: $ref: '#/components/schemas/PerformanceAdvisorOpStats' type: object @@ -35541,6 +36876,15 @@ components: - GCP readOnly: true type: string + connectionStringIds: + description: Identifiers of private endpoint connection strings that reference this private endpoint. + items: + pattern: ^([a-f0-9]{24})$ + type: string + maxItems: 100 + readOnly: true + type: array + uniqueItems: true deleteRequested: description: Flag that indicates whether MongoDB Cloud received a request to remove the specified private endpoint from the private endpoint service. readOnly: true @@ -35618,6 +36962,15 @@ components: - GCP readOnly: true type: string + connectionStringIds: + description: Identifiers of private endpoint connection strings that reference this private endpoint. + items: + pattern: ^([a-f0-9]{24})$ + type: string + maxItems: 100 + readOnly: true + type: array + uniqueItems: true deleteRequested: description: Flag that indicates whether MongoDB Cloud received a request to remove the specified private endpoint from the private endpoint service. readOnly: true @@ -35898,11 +37251,15 @@ components: description: Response containing the details and status of a query shape. The query shape field may be null if the user lacks PII view access. properties: command: - description: The MongoDB command type issued for a query shape. + description: The MongoDB command type issued for a query shape. The INSERT, UPDATE, and DELETE commands appear only for clusters running MongoDB 9.0 or later. enum: - FIND - DISTINCT - AGGREGATE + - COUNT + - INSERT + - UPDATE + - DELETE readOnly: true type: string namespace: @@ -35981,6 +37338,60 @@ components: required: - metricName type: object + QueryStatsCollectionRateLimitedResponse: + allOf: + - $ref: '#/components/schemas/QueryStatsCollectionResponse' + - properties: + rateLimitPerSecond: + description: Maximum read queries recorded per second. + example: 100 + format: int32 + readOnly: true + type: integer + type: object + description: Entries were collected by rate-limiting read queries. + required: + - mode + - rateLimitPerSecond + type: object + QueryStatsCollectionResponse: + description: How `queryStats` entries were collected on this cluster's processes. Reflects the collection mode of the cluster's processes regardless of any host or process type filters in the request. Omitted when the collection mode cannot be determined. Sample-based collection requires MongoDB 9.0 or later but may not be enabled on every such cluster; this reflects the mode in effect on the cluster. + discriminator: + mapping: + RATE_LIMITED: '#/components/schemas/QueryStatsCollectionRateLimitedResponse' + SAMPLED: '#/components/schemas/QueryStatsCollectionSampledResponse' + propertyName: mode + oneOf: + - $ref: '#/components/schemas/QueryStatsCollectionSampledResponse' + - $ref: '#/components/schemas/QueryStatsCollectionRateLimitedResponse' + properties: + mode: + description: Method used to collect `queryStats` entries on the cluster's processes. + enum: + - RATE_LIMITED + - SAMPLED + readOnly: true + type: string + readOnly: true + required: + - mode + type: object + QueryStatsCollectionSampledResponse: + allOf: + - $ref: '#/components/schemas/QueryStatsCollectionResponse' + - properties: + sampleRate: + description: Fraction of operations recorded. Dividing reported counts by this rate yields an unbiased estimate of the true totals. + example: 0.01 + format: double + readOnly: true + type: number + type: object + description: Entries were collected by sampling each operation. + required: + - mode + - sampleRate + type: object QueryStatsDetailsResponse: description: Metadata and summary statistics for a given query shape. properties: @@ -35990,6 +37401,8 @@ components: $ref: '#/components/schemas/QueryShapeSeenMetadata' queryStats: $ref: '#/components/schemas/QueryStatsSummary' + queryStatsCollection: + $ref: '#/components/schemas/QueryStatsCollectionResponse' type: object QueryStatsSummary: description: A summary of execution statistics for a given query shape. @@ -36003,11 +37416,15 @@ components: format: double type: number command: - description: The MongoDB command issued for this query shape. + description: The MongoDB command issued for this query shape. The insert, update, and delete commands appear only for clusters running MongoDB 9.0 or later. enum: - find - distinct - aggregate + - count + - insert + - update + - delete type: string cpuTime: description: Total CPU time in nanoseconds consumed by queries with the given query shape. Available for MDB 8.2 and higher. @@ -36030,6 +37447,11 @@ components: description: Total number of times that queries with the given query shape have been executed. format: double type: number + keysDeleted: + description: Total number of index keys deleted by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number keysExamined: description: Total number of in-bounds and out-of-bounds index keys examined by queries with the given query shape. format: double @@ -36038,10 +37460,40 @@ components: description: Ratio of in-bounds and out-of-bounds index keys examined to indexes containing documents returned by queries with the given query shape. format: double type: number + keysInserted: + description: Total number of index keys inserted by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number lastExecMicros: description: Execution runtime in microseconds for the most recent query with the given query shape. format: double type: number + nDeleted: + description: Total number of documents deleted by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number + nInserted: + description: Total number of documents inserted by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number + nMatched: + description: Total number of documents matched by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number + nModified: + description: Total number of documents modified by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number + nUpserted: + description: Total number of documents upserted by queries with the given query shape. Available for MongoDB 9.0+ write commands. + format: double + nullable: true + type: number namespace: description: Human-readable label that identifies the namespace on the specified host. The resource expresses this parameter value as `.`. type: string @@ -36080,6 +37532,8 @@ components: type: object QueryStatsSummaryListResponse: properties: + queryStatsCollection: + $ref: '#/components/schemas/QueryStatsCollectionResponse' summaries: description: List of query shape statistic summaries from Query Shape Insights. items: @@ -36359,6 +37813,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -36770,6 +38233,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -40015,6 +41487,16 @@ components: type: string readOnly: true type: object + StorageConfig: + nullable: true + properties: + shardSizeLimitGB: + description: 'Available in Public Preview: Maximum data size that MongoDB Cloud allows each shard of this cluster to reach, expressed in gigabytes. MongoDB Cloud rejects writes to a shard that reaches the limit that it enforces. In `replicationSpecs`, this field reports the limit that you configured, and MongoDB Cloud omits it when you never configured one. In `effectiveReplicationSpecs`, this field reports the limit that MongoDB Cloud enforces: usually the limit that you configured, otherwise the default limit that MongoDB Cloud assigns when it creates or updates the cluster. This value may differ from the limit that you configured due to system-managed changes. This limit applies to every shard of the cluster; set the same value on each region configuration''s `autoScaling`, as MongoDB Cloud rejects requests that specify differing values. You can set this only on Atlas INFINITE clusters: MongoDB Cloud rejects any request that names this field, including as `null`, for a cluster or node type that doesn''t support it. In a request that includes `replicationSpecs`, omitting `shardSizeLimitGB` or sending it as `null` clears the limit. Omitting `replicationSpecs` preserves it.' + format: int32 + minimum: 1 + nullable: true + type: integer + type: object StreamConfig: description: Configuration options for an Atlas Stream Processing Workspace. nullable: true @@ -40218,6 +41700,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -40531,7 +42022,7 @@ components: description: Amazon Resource Name (ARN) that identifies the Amazon Web Services (AWS) Identity and Access Management (IAM) role that MongoDB Cloud assumes when it accesses resources in your AWS account. type: string testBucket: - description: The name of an S3 bucket used to check authorization of the passed-in IAM role ARN. + description: The name of an S3 bucket used to check authorization of the passed-in IAM role ARN. This field applies only to S3 connections and is ignored for all other connection types and configurations. type: string type: object StreamsAWSKinesisDataStreamsConnection: @@ -41753,6 +43244,168 @@ components: streamConfig: $ref: '#/components/schemas/StreamConfig' type: object + StreamsTransitGatewayAttachmentRequest: + properties: + cloudProvider: + description: Provider for the transit gateway resources. + type: string + writeOnly: true + regionName: + description: AWS region name. + type: string + writeOnly: true + tgwId: + description: AWS transit gateway ID. + pattern: ^(tgw-)[0-9a-zA-Z]+$ + type: string + vpcId: + description: AWS VPC ID. + pattern: ^(vpc-)[0-9a-zA-Z]+$ + type: string + writeOnly: true + type: object + StreamsTransitGatewayAttachmentResponse: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: '#/components/schemas/Link' + readOnly: true + type: array + tgwAttachmentId: + description: The AWS Transit Gateway Attachment ID. + pattern: ^(tgw-attach-)[0-9a-zA-Z]+$ + readOnly: true + type: string + tgwId: + description: AWS transit gateway ID. + pattern: ^(tgw-)[0-9a-zA-Z]+$ + type: string + type: object + StreamsTransitGatewayInvitationsResponse: + properties: + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: '#/components/schemas/Link' + readOnly: true + type: array + tgwId: + description: AWS transit gateway ID. + pattern: ^(tgw-)[0-9a-zA-Z]+$ + type: string + tgwResourceShareArn: + description: AWS Transit Gateway resource share ARN. + type: string + tgwResourceShareInvitationArn: + description: AWS Transit Gateway resource share invitation ARN. + type: string + type: object + StreamsTransitGatewayResourceShare: + properties: + cloudProvider: + description: Provider for the transit gateway resources. + type: string + links: + description: List of one or more Uniform Resource Locators (URLs) that point to API sub-resources, related API resources, or both. RFC 5988 outlines these relationships. + externalDocs: + description: Web Linking Specification (RFC 5988) + url: https://datatracker.ietf.org/doc/html/rfc5988 + items: + $ref: '#/components/schemas/Link' + readOnly: true + type: array + regionName: + description: AWS Region name. + type: string + tgwId: + description: AWS transit gateway ID. + pattern: ^(tgw-)[0-9a-zA-Z]+$ + type: string + tgwResourceShareArn: + description: AWS Transit Gateway resource share ARN. + type: string + tgwResourceShareInvitationArn: + description: AWS Transit Gateway resource share invitation ARN. + readOnly: true + type: string + type: object + StreamsTransitGatewayRouteRequest: + description: Container for metadata needed to create a Transit Gateway route. + properties: + destinationCidr: + description: The route's destination CIDR. + type: string + region: + description: The region of the Atlas VPCs where this route should take effect. + type: string + tgwId: + description: The AWS ID of the Transit Gateway through which traffic will be routed. + type: string + type: object + StreamsTransitGatewayRouteResponse: + description: Container for metadata associated with a Transit Gateway route. + properties: + destinationCidr: + description: The route's destination CIDR. + type: string + region: + description: The region of the Atlas VPCs where this route should take effect. + type: string + tgwId: + description: The AWS ID of the Transit Gateway through which traffic will be routed. + type: string + tgwRouteId: + description: The ID of the Transit Gateway route. + example: 32b6e34b3d91647abb20e7b8 + pattern: ^([a-f0-9]{24})$ + readOnly: true + type: string + type: object + StreamsWorkspacePrivateEndpointResponse: + description: Customer VPC endpoint registered for inbound private connectivity to Atlas Stream Processing. + properties: + customerDnsName: + description: DNS name of the customer's VPC endpoint. + example: vpce-0abc123def4567890-abc123.us-east-1.vpce.amazonaws.com + readOnly: true + type: string + endpointServiceName: + description: Name of the Atlas endpoint service the customer's VPC endpoint connects to. Absent when no endpoint service is configured for the endpoint's region. + example: com.amazonaws.vpce.us-east-1.vpce-svc-0123456789abcdef0 + readOnly: true + type: string + id: + description: Unique identifier of the customer's VPC endpoint. + example: vpce-0abc123def4567890 + readOnly: true + type: string + provider: + description: Cloud provider hosting the customer's VPC endpoint. + example: AWS + readOnly: true + type: string + region: + description: Human-readable label identifying the region of the customer's VPC endpoint. + example: US_EAST_1 + readOnly: true + type: string + status: + description: Status of the endpoint registration. + enum: + - PENDING + - OK + - FAILED + - DELETING + readOnly: true + type: string + type: object SwapUsageFreeDataMetricThresholdView: properties: metricName: @@ -42960,6 +44613,15 @@ components: format: date-time readOnly: true type: string + severity: + description: Severity of the event. + enum: + - INFO + - WARNING + - ERROR + - CRITICAL + readOnly: true + type: string status: description: State of this alert at the time you requested its details. TRACKING indicates the alert condition exists but has not persisted for the minimum notification delay. OPEN indicates the alert condition currently exists. CLOSED indicates the alert condition has been resolved. enum: @@ -43297,6 +44959,97 @@ components: - type title: kStemming type: object + UnauthClusterCostEstimateAssumedDefaults: + description: Standard defaults the server applied to produce a complete cluster configuration that could be priced. The reported cost reflects exactly this configuration. Omitted for free (M0) and Flex tiers, where the priced configuration is fully determined by the tier. + properties: + clusterType: + description: Topology the estimate assumes. + example: REPLICASET + readOnly: true + type: string + diskSizeGb: + description: Disk size, in GB, the estimate assumes. + example: 40 + format: double + readOnly: true + type: number + electableNodeCount: + description: Number of electable nodes the estimate assumes. + example: 3 + format: int32 + readOnly: true + type: integer + readOnly: true + required: + - clusterType + - diskSizeGb + - electableNodeCount + title: Unauthenticated Cluster Cost Estimate Assumed Defaults + type: object + UnauthClusterCostEstimateRequest: + description: Minimal cluster description used by the unauthenticated cost-estimate endpoint. The server looks up the Cluster Starter Template matching the requested tier, applies its standard defaults, and prices the resulting configuration. + properties: + cloudProvider: + description: Cloud service provider to estimate cost in. + enum: + - AWS + - GCP + - AZURE + type: string + instanceSize: + description: Cluster tier to estimate. Only a fixed set of representative tiers is supported on the unauthenticated endpoint (M0, FLEX, M10, M30); for other tiers, see https://www.mongodb.com/pricing or use the authenticated cost-estimate endpoints. + enum: + - M0 + - FLEX + - M10 + - M30 + example: M10 + type: string + regionName: + description: Cloud-provider region to estimate cost in. Region naming follows the chosen provider's convention (for example, US_EAST_1 for AWS). + example: US_EAST_1 + type: string + required: + - cloudProvider + - instanceSize + - regionName + title: Unauthenticated Cluster Cost Estimate Request + type: object + UnauthClusterCostEstimateResponse: + description: Estimated hourly and monthly compute cost for a cluster of the requested tier in the requested region. Echoes the request inputs and, for dedicated tiers, the standard defaults the server applied. + properties: + assumedDefaults: + $ref: '#/components/schemas/UnauthClusterCostEstimateAssumedDefaults' + cloudProvider: + description: Cloud service provider to estimate cost in. + enum: + - AWS + - GCP + - AZURE + readOnly: true + type: string + costEstimate: + $ref: '#/components/schemas/ClusterCostEstimate' + instanceSize: + description: Cluster tier to estimate. Only a fixed set of representative tiers is supported on the unauthenticated endpoint; for other tiers, use the authenticated cost-estimate endpoints. + enum: + - M0 + - FLEX + - M10 + - M30 + readOnly: true + type: string + regionName: + description: Cloud-provider region the estimate was produced for. + readOnly: true + type: string + required: + - cloudProvider + - costEstimate + - instanceSize + - regionName + title: Unauthenticated Cluster Cost Estimate Response + type: object UpdateAtlasOrganizationApiKey: properties: desc: @@ -45079,7 +46832,7 @@ info: termsOfService: https://www.mongodb.com/mongodb-management-service-terms-and-conditions title: MongoDB Atlas Administration API version: "2.0" - x-xgen-sha: 402d84cbd16da31e96204c8b2d159beee0e448da + x-xgen-sha: 9b453389bf3017b4639ccf370d74af7ac538e7f1 openapi: 3.0.1 paths: /api/atlas/v2: @@ -48998,27 +50751,33 @@ paths: - Project Owner x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Backups/operation/updateGroupBackupCompliancePolicy x-xgen-operation-id-override: updateCompliancePolicy - /api/atlas/v2/groups/{groupId}/cloudProviderAccess: + /api/atlas/v2/groups/{groupId}/chartsDashboards/{dashboardId}:export: get: - description: Returns all cloud provider access roles with access to the specified project. - operationId: listGroupCloudProviderAccess + description: Exports the specified Charts dashboard. + operationId: exportGroupChartsDashboard parameters: - $ref: '#/components/parameters/envelope' - $ref: '#/components/parameters/groupId' - - $ref: '#/components/parameters/pretty' + - description: ID of the dashboard to export. + in: path + name: dashboardId + required: true + schema: + type: string responses: "200": content: - application/vnd.atlas.2023-01-01+json: + application/vnd.atlas.preview+json: schema: - $ref: '#/components/schemas/CloudProviderAccessRoles' - x-xgen-version: "2023-01-01" + description: This resource returns an exported Charts dashboard. You can use this response to import to the Charts Dashboard Import endpoint. + type: string + x-xgen-preview: + name: charts-dashboards + public: "false" + x-xgen-version: preview description: OK - headers: - RateLimit-Limit: - $ref: '#/components/headers/HeaderRateLimitLimit' - RateLimit-Remaining: - $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' "401": $ref: '#/components/responses/unauthorized' "403": @@ -49029,128 +50788,76 @@ paths: $ref: '#/components/responses/tooManyRequests' "500": $ref: '#/components/responses/internalServerError' - summary: Return All Cloud Provider Access Roles + summary: Export One Charts Dashboard tags: - - Cloud Provider Access + - Charts Dashboards x-rolesRequirements: - - Project Read Only - x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Provider-Access/operation/listGroupCloudProviderAccess - x-xgen-operation-id-override: listCloudProviderAccess + - Project Data Access Admin + - Project Data Access Read Only + - Project Data Access Read Write + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Charts-Dashboards/operation/exportGroupChartsDashboard + x-xgen-operation-id-override: exportChartsDashboard + /api/atlas/v2/groups/{groupId}/chartsDashboards:import: post: - description: Creates one access role for the specified cloud provider. Some MongoDB Cloud features use these cloud provider access roles for authentication. For the GCP provider, if the project folder is not yet provisioned, Atlas will now create the role asynchronously. An intermediate role with status `IN_PROGRESS` will be returned, and the final service account will be provisioned. Once the GCP project is set up, subsequent requests will create the service account synchronously. - externalDocs: - description: Set Up Access to Cloud Providers - url: https://www.mongodb.com/docs/atlas/security/cloud-provider-access/ - operationId: createGroupCloudProviderAccess + description: Imports the Charts dashboard that the template specifies. Optionally, you can specify `overwrite=true` to import into an existing dashboard. + operationId: importGroupChartsDashboards parameters: - $ref: '#/components/parameters/envelope' - $ref: '#/components/parameters/groupId' - - $ref: '#/components/parameters/pretty' + - description: Setting this to true enables importing into an existing dashboard. + in: query + name: overwrite + schema: + type: boolean requestBody: content: - application/vnd.atlas.2023-01-01+json: + application/vnd.atlas.preview+json: + examples: + Sample import response body: + description: Sample import response body + value: + dashboards: + dashboard-1: + description: Dashboard description + embedding: + anonymousAuthEnabled: true + filters: [] + layout: [] + title: Dashboard title + dataSources: + data-source-1: + alias: 'Sample Data: Movies' + collection: movies + database: sample_data + deployment: sample-data-cluster + sourceType: cluster + exportVersion: 9 + items: + item-1: + calculatedFields: [] + query: null + sample: false + queries: {} schema: - $ref: '#/components/schemas/CloudProviderAccessRoleRequest' - description: Creates one role for the specified cloud provider. + type: object + x-xgen-preview: + name: charts-dashboards + public: "false" + x-xgen-version: preview + description: Schema corresponding to the response fetched from an exported dashboard. required: true responses: "200": content: - application/vnd.atlas.2023-01-01+json: - examples: - AWS: - description: AWS - value: - atlasAWSAccountArn: arn:aws:iam::772401394250:role/my-test-aws-role - atlasAssumedRoleExternalId: feb2dfc7-f760-4288-a403-01c7c2345005 - authorizedDate: "2024-05-30T14:12:00Z" - createdDate: "2024-05-30T14:11:00Z" - featureUsages: [] - iamAssumedRoleArn: arn:aws:iam::123456789012:root - providerName: AWS - roleId: 32b6e34b3d91647abb20e7b8 - Azure: - description: Azure - value: - _id: 32b6e34b3d91647abb20e7b8 - atlasAzureAppId: da5dd062-f3ca-4cb5-b86a-05f82203ab67 - createdDate: "2024-05-30T14:11:00Z" - featureUsages: [] - lastUpdatedDate: "2024-05-30T14:12:00Z" - providerName: AZURE - servicePrincipalId: ec8e7844-912d-4869-86e9-6d0dfca4b8af - tenantId: 4297fc77-1592-4de8-a6d5-a8c32401df87 - GCP: - description: GCP - value: - createdDate: "2024-05-30T14:11:00Z" - featureUsages: [] - gcpServiceAccountForAtlas: mongodb-atlas-1234567890123456@p-111111111111111111111111.iam.gserviceaccount.com - providerName: GCP - roleId: 32b6e34b3d91647abb20e7b8 - status: COMPLETE + application/vnd.atlas.preview+json: schema: - $ref: '#/components/schemas/CloudProviderAccessRole' - x-xgen-version: "2023-01-01" + $ref: '#/components/schemas/ApiChartsDashboardImportResponseView' + x-xgen-preview: + name: charts-dashboards + public: "false" + x-xgen-version: preview description: OK - headers: - RateLimit-Limit: - $ref: '#/components/headers/HeaderRateLimitLimit' - RateLimit-Remaining: - $ref: '#/components/headers/HeaderRateLimitRemaining' - "401": - $ref: '#/components/responses/unauthorized' - "403": - $ref: '#/components/responses/forbidden' - "404": - $ref: '#/components/responses/notFound' - "429": - $ref: '#/components/responses/tooManyRequests' - "500": - $ref: '#/components/responses/internalServerError' - summary: Create One Cloud Provider Access Role - tags: - - Cloud Provider Access - x-rolesRequirements: - - Project Owner - x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Provider-Access/operation/createGroupCloudProviderAccess - x-xgen-operation-id-override: createCloudProviderAccess - /api/atlas/v2/groups/{groupId}/cloudProviderAccess/{cloudProvider}/{roleId}: - delete: - description: Revokes access to the specified project for the specified access role. - operationId: deauthorizeGroupCloudProviderAccessRole - parameters: - - $ref: '#/components/parameters/envelope' - - $ref: '#/components/parameters/groupId' - - $ref: '#/components/parameters/pretty' - - description: Human-readable label that identifies the cloud provider of the role to deauthorize. - in: path - name: cloudProvider - required: true - schema: - enum: - - AWS - - AZURE - - GCP - type: string - - description: Unique 24-hexadecimal digit string that identifies the role. Amazon Web Services (AWS) IAM roles and Google Service Accounts return this value as `roleId`. Azure Service Principals return it as `_id`. - in: path - name: roleId - required: true - schema: - pattern: ^([a-f0-9]{24})$ - type: string - responses: - "204": - content: - application/vnd.atlas.2023-01-01+json: - x-xgen-version: "2023-01-01" - description: No Content - headers: - RateLimit-Limit: - $ref: '#/components/headers/HeaderRateLimitLimit' - RateLimit-Remaining: - $ref: '#/components/headers/HeaderRateLimitRemaining' "400": $ref: '#/components/responses/badRequest' "401": @@ -49163,69 +50870,27 @@ paths: $ref: '#/components/responses/tooManyRequests' "500": $ref: '#/components/responses/internalServerError' - summary: Deauthorize One Cloud Provider Access Role + summary: Import One Charts Dashboard tags: - - Cloud Provider Access + - Charts Dashboards x-rolesRequirements: - Project Owner - x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Provider-Access/operation/deauthorizeGroupCloudProviderAccessRole - x-xgen-method-verb-override: - customMethod: "True" - verb: deauthorizeRole - x-xgen-operation-id-override: deauthorizeProviderAccessRole - /api/atlas/v2/groups/{groupId}/cloudProviderAccess/{roleId}: + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Charts-Dashboards/operation/importGroupChartsDashboards + x-xgen-operation-id-override: importChartsDashboards + /api/atlas/v2/groups/{groupId}/cloudProviderAccess: get: - description: Returns the access role with the specified id and with access to the specified project. - operationId: getGroupCloudProviderAccess + description: Returns all cloud provider access roles with access to the specified project. + operationId: listGroupCloudProviderAccess parameters: - $ref: '#/components/parameters/envelope' - $ref: '#/components/parameters/groupId' - $ref: '#/components/parameters/pretty' - - description: Unique 24-hexadecimal digit string that identifies the role. Amazon Web Services (AWS) IAM roles and Google Service Accounts return this value as `roleId`. Azure Service Principals return it as `_id`. - in: path - name: roleId - required: true - schema: - pattern: ^([a-f0-9]{24})$ - type: string responses: "200": content: application/vnd.atlas.2023-01-01+json: - examples: - AWS: - description: AWS - value: - atlasAWSAccountArn: arn:aws:iam::772401394250:role/my-test-aws-role - atlasAssumedRoleExternalId: feb2dfc7-f760-4288-a403-01c7c2345005 - authorizedDate: "2024-05-30T14:12:00Z" - createdDate: "2024-05-30T14:11:00Z" - featureUsages: [] - iamAssumedRoleArn: arn:aws:iam::123456789012:root - providerName: AWS - roleId: 32b6e34b3d91647abb20e7b8 - Azure: - description: Azure - value: - _id: 32b6e34b3d91647abb20e7b8 - atlasAzureAppId: da5dd062-f3ca-4cb5-b86a-05f82203ab67 - createdDate: "2024-05-30T14:11:00Z" - featureUsages: [] - lastUpdatedDate: "2024-05-30T14:12:00Z" - providerName: AZURE - servicePrincipalId: ec8e7844-912d-4869-86e9-6d0dfca4b8af - tenantId: 4297fc77-1592-4de8-a6d5-a8c32401df87 - GCP: - description: GCP - value: - createdDate: "2024-05-30T14:11:00Z" - featureUsages: [] - gcpServiceAccountForAtlas: mongodb-atlas-1234567890123456@p-111111111111111111111111.iam.gserviceaccount.com - providerName: GCP - roleId: 32b6e34b3d91647abb20e7b8 - status: COMPLETE schema: - $ref: '#/components/schemas/CloudProviderAccessRole' + $ref: '#/components/schemas/CloudProviderAccessRoles' x-xgen-version: "2023-01-01" description: OK headers: @@ -49243,36 +50908,250 @@ paths: $ref: '#/components/responses/tooManyRequests' "500": $ref: '#/components/responses/internalServerError' - summary: Return One Cloud Provider Access Role + summary: Return All Cloud Provider Access Roles tags: - Cloud Provider Access x-rolesRequirements: - Project Read Only - x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Provider-Access/operation/getGroupCloudProviderAccess - x-xgen-operation-id-override: getCloudProviderAccess - patch: - description: Grants access to the specified project for the specified access role. This API endpoint is one step in a procedure to create unified access for MongoDB Cloud services. This is not required for GCP service account access. + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Provider-Access/operation/listGroupCloudProviderAccess + x-xgen-operation-id-override: listCloudProviderAccess + post: + description: Creates one access role for the specified cloud provider. Some MongoDB Cloud features use these cloud provider access roles for authentication. For the GCP provider, if the project folder is not yet provisioned, Atlas will now create the role asynchronously. An intermediate role with status `IN_PROGRESS` will be returned, and the final service account will be provisioned. Once the GCP project is set up, subsequent requests will create the service account synchronously. externalDocs: description: Set Up Access to Cloud Providers url: https://www.mongodb.com/docs/atlas/security/cloud-provider-access/ - operationId: authorizeGroupCloudProviderAccessRole + operationId: createGroupCloudProviderAccess parameters: - $ref: '#/components/parameters/envelope' - $ref: '#/components/parameters/groupId' - $ref: '#/components/parameters/pretty' - - description: Unique 24-hexadecimal digit string that identifies the role. Amazon Web Services (AWS) IAM roles and Google Service Accounts return this value as `roleId`. Azure Service Principals return it as `_id`. - in: path - name: roleId - required: true - schema: - pattern: ^([a-f0-9]{24})$ - type: string requestBody: content: application/vnd.atlas.2023-01-01+json: schema: - $ref: '#/components/schemas/CloudProviderAccessRoleRequestUpdate' - description: Grants access to the specified project for the specified access role. + $ref: '#/components/schemas/CloudProviderAccessRoleRequest' + description: Creates one role for the specified cloud provider. + required: true + responses: + "200": + content: + application/vnd.atlas.2023-01-01+json: + examples: + AWS: + description: AWS + value: + atlasAWSAccountArn: arn:aws:iam::772401394250:role/my-test-aws-role + atlasAssumedRoleExternalId: feb2dfc7-f760-4288-a403-01c7c2345005 + authorizedDate: "2024-05-30T14:12:00Z" + createdDate: "2024-05-30T14:11:00Z" + featureUsages: [] + iamAssumedRoleArn: arn:aws:iam::123456789012:root + providerName: AWS + roleId: 32b6e34b3d91647abb20e7b8 + Azure: + description: Azure + value: + _id: 32b6e34b3d91647abb20e7b8 + atlasAzureAppId: da5dd062-f3ca-4cb5-b86a-05f82203ab67 + createdDate: "2024-05-30T14:11:00Z" + featureUsages: [] + lastUpdatedDate: "2024-05-30T14:12:00Z" + providerName: AZURE + servicePrincipalId: ec8e7844-912d-4869-86e9-6d0dfca4b8af + tenantId: 4297fc77-1592-4de8-a6d5-a8c32401df87 + GCP: + description: GCP + value: + createdDate: "2024-05-30T14:11:00Z" + featureUsages: [] + gcpServiceAccountForAtlas: mongodb-atlas-1234567890123456@p-111111111111111111111111.iam.gserviceaccount.com + providerName: GCP + roleId: 32b6e34b3d91647abb20e7b8 + status: COMPLETE + schema: + $ref: '#/components/schemas/CloudProviderAccessRole' + x-xgen-version: "2023-01-01" + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Create One Cloud Provider Access Role + tags: + - Cloud Provider Access + x-rolesRequirements: + - Project Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Provider-Access/operation/createGroupCloudProviderAccess + x-xgen-operation-id-override: createCloudProviderAccess + /api/atlas/v2/groups/{groupId}/cloudProviderAccess/{cloudProvider}/{roleId}: + delete: + description: Revokes access to the specified project for the specified access role. + operationId: deauthorizeGroupCloudProviderAccessRole + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/pretty' + - description: Human-readable label that identifies the cloud provider of the role to deauthorize. + in: path + name: cloudProvider + required: true + schema: + enum: + - AWS + - AZURE + - GCP + type: string + - description: Unique 24-hexadecimal digit string that identifies the role. Amazon Web Services (AWS) IAM roles and Google Service Accounts return this value as `roleId`. Azure Service Principals return it as `_id`. + in: path + name: roleId + required: true + schema: + pattern: ^([a-f0-9]{24})$ + type: string + responses: + "204": + content: + application/vnd.atlas.2023-01-01+json: + x-xgen-version: "2023-01-01" + description: No Content + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Deauthorize One Cloud Provider Access Role + tags: + - Cloud Provider Access + x-rolesRequirements: + - Project Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Provider-Access/operation/deauthorizeGroupCloudProviderAccessRole + x-xgen-method-verb-override: + customMethod: "True" + verb: deauthorizeRole + x-xgen-operation-id-override: deauthorizeProviderAccessRole + /api/atlas/v2/groups/{groupId}/cloudProviderAccess/{roleId}: + get: + description: Returns the access role with the specified id and with access to the specified project. + operationId: getGroupCloudProviderAccess + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/pretty' + - description: Unique 24-hexadecimal digit string that identifies the role. Amazon Web Services (AWS) IAM roles and Google Service Accounts return this value as `roleId`. Azure Service Principals return it as `_id`. + in: path + name: roleId + required: true + schema: + pattern: ^([a-f0-9]{24})$ + type: string + responses: + "200": + content: + application/vnd.atlas.2023-01-01+json: + examples: + AWS: + description: AWS + value: + atlasAWSAccountArn: arn:aws:iam::772401394250:role/my-test-aws-role + atlasAssumedRoleExternalId: feb2dfc7-f760-4288-a403-01c7c2345005 + authorizedDate: "2024-05-30T14:12:00Z" + createdDate: "2024-05-30T14:11:00Z" + featureUsages: [] + iamAssumedRoleArn: arn:aws:iam::123456789012:root + providerName: AWS + roleId: 32b6e34b3d91647abb20e7b8 + Azure: + description: Azure + value: + _id: 32b6e34b3d91647abb20e7b8 + atlasAzureAppId: da5dd062-f3ca-4cb5-b86a-05f82203ab67 + createdDate: "2024-05-30T14:11:00Z" + featureUsages: [] + lastUpdatedDate: "2024-05-30T14:12:00Z" + providerName: AZURE + servicePrincipalId: ec8e7844-912d-4869-86e9-6d0dfca4b8af + tenantId: 4297fc77-1592-4de8-a6d5-a8c32401df87 + GCP: + description: GCP + value: + createdDate: "2024-05-30T14:11:00Z" + featureUsages: [] + gcpServiceAccountForAtlas: mongodb-atlas-1234567890123456@p-111111111111111111111111.iam.gserviceaccount.com + providerName: GCP + roleId: 32b6e34b3d91647abb20e7b8 + status: COMPLETE + schema: + $ref: '#/components/schemas/CloudProviderAccessRole' + x-xgen-version: "2023-01-01" + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return One Cloud Provider Access Role + tags: + - Cloud Provider Access + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Provider-Access/operation/getGroupCloudProviderAccess + x-xgen-operation-id-override: getCloudProviderAccess + patch: + description: Grants access to the specified project for the specified access role. This API endpoint is one step in a procedure to create unified access for MongoDB Cloud services. This is not required for GCP service account access. + externalDocs: + description: Set Up Access to Cloud Providers + url: https://www.mongodb.com/docs/atlas/security/cloud-provider-access/ + operationId: authorizeGroupCloudProviderAccessRole + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/pretty' + - description: Unique 24-hexadecimal digit string that identifies the role. Amazon Web Services (AWS) IAM roles and Google Service Accounts return this value as `roleId`. Azure Service Principals return it as `_id`. + in: path + name: roleId + required: true + schema: + pattern: ^([a-f0-9]{24})$ + type: string + requestBody: + content: + application/vnd.atlas.2023-01-01+json: + schema: + $ref: '#/components/schemas/CloudProviderAccessRoleRequestUpdate' + description: Grants access to the specified project for the specified access role. required: true responses: "200": @@ -49343,6 +51222,59 @@ paths: customMethod: "True" verb: authorizeRole x-xgen-operation-id-override: authorizeProviderAccessRole + /api/atlas/v2/groups/{groupId}/clusterConfigurations:validate: + post: + description: Checks if the given cluster configuration is valid and ready to be used to create or edit a cluster. + operationId: validateGroupClusterConfigurations + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/groupId' + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ClusterConfigurationValidation' + x-xgen-preview: + name: cluster-configuration-validation + public: "false" + x-xgen-version: preview + description: Cluster configuration to validate. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ClusterConfigurationValidationResult' + x-xgen-preview: + name: cluster-configuration-validation + public: "false" + x-xgen-version: preview + description: Ok + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Validate One Cluster Configuration + tags: + - Clusters + x-rolesRequirements: + - Project Cluster Manager + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/validateGroupClusterConfigurations /api/atlas/v2/groups/{groupId}/clusters: get: description: |- @@ -49603,6 +51535,12 @@ paths: schema: $ref: '#/components/schemas/ClusterDescription20240805' x-xgen-version: "2024-10-23" + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ApiAtlasClusterDescriptionPreview' + x-xgen-preview: + public: "true" + x-xgen-version: preview description: Cluster to create in this project. required: true responses: @@ -49627,6 +51565,12 @@ paths: schema: $ref: '#/components/schemas/ClusterDescription20240805' x-xgen-version: "2024-10-23" + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ApiAtlasClusterDescriptionPreview' + x-xgen-preview: + public: "true" + x-xgen-version: preview description: Created headers: RateLimit-Limit: @@ -49769,6 +51713,12 @@ paths: schema: $ref: '#/components/schemas/ClusterDescription20240805' x-xgen-version: "2024-08-05" + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ApiAtlasClusterDescriptionPreview' + x-xgen-preview: + public: "true" + x-xgen-version: preview description: OK headers: RateLimit-Limit: @@ -49836,6 +51786,12 @@ paths: schema: $ref: '#/components/schemas/ClusterDescription20240805' x-xgen-version: "2024-10-23" + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ApiAtlasClusterDescriptionPreview' + x-xgen-preview: + public: "true" + x-xgen-version: preview description: Cluster to update in the specified project. required: true responses: @@ -49860,6 +51816,12 @@ paths: schema: $ref: '#/components/schemas/ClusterDescription20240805' x-xgen-version: "2024-10-23" + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ApiAtlasClusterDescriptionPreview' + x-xgen-preview: + public: "true" + x-xgen-version: preview description: OK headers: RateLimit-Limit: @@ -50065,13 +52027,10 @@ paths: responses: "200": content: - application/vnd.atlas.preview+json: + application/vnd.atlas.2025-03-12+json: schema: $ref: '#/components/schemas/AdaptiveSettingsResponse' - x-xgen-preview: - name: adaptive-settings - public: "false" - x-xgen-version: preview + x-xgen-version: "2025-03-12" description: OK. headers: RateLimit-Limit: @@ -50110,25 +52069,18 @@ paths: type: string requestBody: content: - application/vnd.atlas.preview+json: + application/vnd.atlas.2025-03-12+json: schema: $ref: '#/components/schemas/AdaptiveSettingsUpdateRequest' - x-xgen-preview: - name: adaptive-settings - public: "false" - x-xgen-version: preview - description: Adaptive Settings overrides to apply to the specified cluster. Omitting `adaptiveSettingsOverrides` is a no-op. + description: 'Adaptive Settings overrides to apply to the specified cluster. The supplied `adaptiveSettingsOverrides` map fully replaces the existing overrides: any override omitted from the map returns to its Atlas-managed default. Omitting the `adaptiveSettingsOverrides` field entirely preserves the existing overrides, an empty map clears all overrides, and `null` resets the field and omits it from responses until it is set again.' required: true responses: "200": content: - application/vnd.atlas.preview+json: + application/vnd.atlas.2025-03-12+json: schema: $ref: '#/components/schemas/AdaptiveSettingsResponse' - x-xgen-preview: - name: adaptive-settings - public: "false" - x-xgen-version: preview + x-xgen-version: "2025-03-12" description: OK. headers: RateLimit-Limit: @@ -51523,6 +53475,116 @@ paths: - Project Read Only x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Legacy-Backup/operation/getGroupClusterBackupCheckpoint x-xgen-operation-id-override: getClusterBackupCheckpoint + /api/atlas/v2/groups/{groupId}/clusters/{clusterName}/backupSubscription: + get: + description: Returns whether the free (M0) cluster has an active paid-backups subscription. + operationId: getGroupClusterBackupSubscription + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/groupId' + - description: Human-readable label that identifies the cluster. + in: path + name: clusterName + required: true + schema: + pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ + type: string + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ClusterBackupSubscriptionResponse' + x-xgen-preview: + name: m0-paid-backup + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return One Cluster Backup Subscription + tags: + - Cloud Backups + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Backups/operation/getGroupClusterBackupSubscription + x-xgen-operation-id-override: getClusterBackupSubscription + patch: + description: Enables or disables the paid-backup subscription for a free (M0) cluster. Set enabled to update the backup state on the cluster. Omit enabled to leave the subscription unchanged. + operationId: updateGroupClusterBackupSubscription + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/groupId' + - description: Human-readable label that identifies the cluster. + in: path + name: clusterName + required: true + schema: + pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ + type: string + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ClusterBackupSubscriptionUpdateRequest' + x-xgen-preview: + name: m0-paid-backup + x-xgen-version: preview + description: Paid-backup subscription state to apply to the free (M0) cluster. An empty body is a no-op. + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ClusterBackupSubscriptionResponse' + x-xgen-preview: + name: m0-paid-backup + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "402": + $ref: '#/components/responses/paymentRequired' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Update One Cluster Backup Subscription + tags: + - Cloud Backups + x-rolesRequirements: + - Project Cluster Manager + - Project Cluster Resilience Tester + - Project Replica Set Manager + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Cloud-Backups/operation/updateGroupClusterBackupSubscription + x-xgen-operation-id-override: updateClusterBackupSubscription /api/atlas/v2/groups/{groupId}/clusters/{clusterName}/collStats/pinned: get: description: Returns a list of given cluster's pinned namespaces, a set of namespaces manually selected by users to collect query latency metrics on. @@ -53525,6 +55587,8 @@ paths: $ref: '#/components/responses/forbidden' "404": $ref: '#/components/responses/notFound' + "409": + $ref: '#/components/responses/conflict' "429": $ref: '#/components/responses/tooManyRequests' "500": @@ -54204,7 +56268,7 @@ paths: maxItems: 10 type: array style: form - - description: Retrieve query shape statistics matching specified MongoDB commands. To include multiple commands, pass the parameter multiple times delimited with an ampersand (`&`) between each command. The currently supported parameters are find, distinct, and aggregate. Omit this parameter to return results for all supported commands. + - description: 'Retrieve query shape statistics matching specified MongoDB commands. To include multiple commands, pass the parameter multiple times delimited with an ampersand (`&`) between each command. The currently supported parameters are: find, distinct, aggregate, count, insert, update, and delete. The insert, update, and delete commands return results only for clusters running MongoDB 9.0 or later with write query shape statistics enabled for the project. Omit this parameter to return results for all supported commands.' in: query name: commands schema: @@ -54214,8 +56278,12 @@ paths: - find - distinct - aggregate + - count + - insert + - update + - delete type: string - maxItems: 3 + maxItems: 7 type: array uniqueItems: true style: form @@ -54232,7 +56300,7 @@ paths: in: query name: series schema: - description: Query shape statistics data series to retrieve. A series represents a specific metric about query execution. To include multiple series, pass the parameter multiple times delimited with an ampersand (`&`) between each series. Omit this parameter to return results for all available series. The `P50_EXECUTION_TIME`, `P90_EXECUTION_TIME`, and `P99_EXECUTION_TIME` series are deprecated as the values they report may be inaccurate. They will be removed in a future release. + description: Query shape statistics data series to retrieve. A series represents a specific metric about query execution. To include multiple series, pass the parameter multiple times delimited with an ampersand (`&`) between each series. Omit this parameter to return results for all available series. The `P50_EXECUTION_TIME`, `P90_EXECUTION_TIME`, and `P99_EXECUTION_TIME` series are deprecated as the values they report may be inaccurate. They will be removed in a future release. The write command series (`DOCS_MATCHED`, `DOCS_MODIFIED`, `DOCS_UPSERTED`, `DOCS_DELETED`, `DOCS_INSERTED`, `KEYS_INSERTED`, `KEYS_DELETED`) return data only for clusters running MongoDB 9.0 or later with write query shape statistics enabled for the project. items: enum: - TOTAL_EXECUTION_TIME @@ -54250,8 +56318,15 @@ paths: - P50_EXECUTION_TIME - P90_EXECUTION_TIME - P99_EXECUTION_TIME + - DOCS_MATCHED + - DOCS_MODIFIED + - DOCS_UPSERTED + - DOCS_DELETED + - DOCS_INSERTED + - KEYS_INSERTED + - KEYS_DELETED type: string - maxItems: 15 + maxItems: 22 type: array uniqueItems: true style: form @@ -56049,6 +58124,79 @@ paths: - Project Read Only x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/getGroupClusterStatus x-xgen-operation-id-override: getClusterStatus + /api/atlas/v2/groups/{groupId}/clusters/{clusterName}:estimateUpdateCost: + post: + description: This endpoint validates a supplied cluster configuration and returns an estimated hourly and monthly compute cost without creating or modifying the cluster. It applies the same validation as the Update One Cluster endpoint, so invalid configurations are rejected with the same errors. The estimate excludes backup storage, disk storage, data transfer, and premium feature surcharges, which are billed based on actual usage. Subscription, payment, and resource policy checks are not performed, so a configuration that can be priced here may still be rejected during the actual operation. + operationId: estimateGroupClusterUpdateCost + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/groupId' + - description: Human-readable label that identifies the cluster. + in: path + name: clusterName + required: true + schema: + pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ + type: string + - description: When true, hardware specification fields for autoscaling-enabled clusters are resolved to their effective (current operational) values before pricing. When false (default), the client-specified values are priced. Set this to match the header sent on the corresponding cluster update. + in: header + name: Use-Effective-Instance-Fields + schema: + default: false + type: boolean + - description: Controls how `replicationSpecs` are interpreted for auto-sharded clusters before pricing. When false (default), `replicationSpecs` is treated as the actual cluster state. + in: header + name: Use-Effective-Fields-Replication-Specs + schema: + default: false + type: boolean + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ClusterDescription20240805' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Cluster update to estimate pricing for. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ClusterCostEstimate' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the supplied configuration. + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "409": + $ref: '#/components/responses/conflict' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Estimate the Cost of Updating One Cluster + tags: + - Clusters + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/estimateGroupClusterUpdateCost + x-xgen-operation-id-override: estimateUpdateClusterCost /api/atlas/v2/groups/{groupId}/clusters/{clusterName}:grantMongoDBEmployeeAccess: post: description: Grants MongoDB employee cluster access for the given duration and at the specified level for one cluster. @@ -56518,6 +58666,114 @@ paths: customMethod: true verb: upgrade x-xgen-operation-id-override: upgradeClusterToServerless + /api/atlas/v2/groups/{groupId}/clusters:estimateCreateCost: + post: + description: This endpoint validates a supplied cluster configuration and returns an estimated hourly and monthly compute cost without creating or modifying the cluster. It applies the same validation as the Create One Cluster endpoint, so invalid configurations are rejected with the same errors. The estimate excludes backup storage, disk storage, data transfer, and premium feature surcharges, which are billed based on actual usage. Subscription, payment, and resource policy checks are not performed, so a configuration that can be priced here may still be rejected during the actual operation. + operationId: estimateGroupClusterCreateCost + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/groupId' + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ClusterDescription20240805' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Cluster configuration to estimate. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ClusterCostEstimate' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the supplied configuration. + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "409": + $ref: '#/components/responses/conflict' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Estimate the Cost of Creating One Cluster + tags: + - Clusters + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/estimateGroupClusterCreateCost + x-xgen-operation-id-override: estimateCreateClusterCost + /api/atlas/v2/groups/{groupId}/clusters:estimateTenantUpgradeCost: + post: + description: This endpoint validates a supplied cluster configuration and returns an estimated hourly and monthly compute cost without creating or modifying the cluster. It applies the same validation as the Upgrade One Shared-Tier Cluster endpoint, so invalid configurations are rejected with the same errors. The estimate excludes backup storage, disk storage, data transfer, and premium feature surcharges, which are billed based on actual usage. Subscription, payment, and resource policy checks are not performed, so a configuration that can be priced here may still be rejected during the actual operation. + operationId: estimateGroupClusterTenantUpgradeCost + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/groupId' + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/LegacyAtlasTenantClusterUpgradeRequest' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Shared-tier cluster upgrade to estimate. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ClusterCostEstimate' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the supplied configuration. + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "409": + $ref: '#/components/responses/conflict' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Estimate the Cost of Upgrading One Shared-Tier Cluster + tags: + - Clusters + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/estimateGroupClusterTenantUpgradeCost + x-xgen-operation-id-override: estimateTenantUpgradeCost /api/atlas/v2/groups/{groupId}/collStats/metrics: get: description: Returns all available Coll Stats Latency metric names and their respective units for the specified project at the time of request. @@ -57678,7 +59934,7 @@ paths: x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Database-Users/operation/listGroupDatabaseUsers x-xgen-operation-id-override: listDatabaseUsers post: - description: Creates one database user in the specified project. This MongoDB Cloud supports a maximum of 100 database users per project. If you require more than 100 database users on a project, contact Support. + description: Creates one database user in the specified project. This MongoDB Cloud supports a default limit of 100 and a maximum of 900 database users per project. If you require more than 900 database users on a project, contact Support. externalDocs: description: Contact MongoDB Support url: https://cloud.mongodb.com/support @@ -58862,6 +61118,67 @@ paths: "2026-05-07": Updated NO_PAYMENT_INFORMATION_FOUND error message to include a link for users to add a payment method when no payment info is found. x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Flex-Clusters/operation/createGroupFlexCluster x-xgen-operation-id-override: createFlexCluster + /api/atlas/v2/groups/{groupId}/flexClusters/{clusterName}:estimateUpdateCost: + post: + description: This endpoint validates a supplied cluster configuration and returns an estimated hourly and monthly compute cost without creating or modifying the cluster. It applies the same validation as the Update One Flex Cluster endpoint, so invalid configurations are rejected with the same errors. The estimate excludes backup storage, disk storage, data transfer, and premium feature surcharges, which are billed based on actual usage. Subscription, payment, and resource policy checks are not performed, so a configuration that can be priced here may still be rejected during the actual operation. + operationId: estimateGroupFlexClusterUpdateCost + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/groupId' + - description: Human-readable label that identifies the flex cluster. + in: path + name: clusterName + required: true + schema: + pattern: ^[a-zA-Z0-9][a-zA-Z0-9-]*$ + type: string + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/FlexClusterDescriptionUpdate20241113' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Flex cluster update to estimate pricing for. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ClusterCostEstimate' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the supplied configuration. + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "409": + $ref: '#/components/responses/conflict' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Estimate the Cost of Updating One Flex Cluster + tags: + - Flex Clusters + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Flex-Clusters/operation/estimateGroupFlexClusterUpdateCost + x-xgen-operation-id-override: estimateUpdateFlexCost /api/atlas/v2/groups/{groupId}/flexClusters/{name}: delete: description: Removes one flex cluster from the specified project. The flex cluster must have termination protection disabled in order to be deleted. @@ -59333,6 +61650,114 @@ paths: - Project Read Only x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Flex-Snapshots/operation/getGroupFlexClusterBackupSnapshot x-xgen-operation-id-override: getFlexBackupSnapshot + /api/atlas/v2/groups/{groupId}/flexClusters:estimateCreateCost: + post: + description: This endpoint validates a supplied cluster configuration and returns an estimated hourly and monthly compute cost without creating or modifying the cluster. It applies the same validation as the Create One Flex Cluster endpoint, so invalid configurations are rejected with the same errors. The estimate excludes backup storage, disk storage, data transfer, and premium feature surcharges, which are billed based on actual usage. Subscription, payment, and resource policy checks are not performed, so a configuration that can be priced here may still be rejected during the actual operation. + operationId: estimateGroupFlexClusterCreateCost + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/groupId' + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/FlexClusterDescriptionCreate20241113' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Flex cluster configuration to estimate. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ClusterCostEstimate' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the supplied configuration. + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "409": + $ref: '#/components/responses/conflict' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Estimate the Cost of Creating One Flex Cluster + tags: + - Flex Clusters + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Flex-Clusters/operation/estimateGroupFlexClusterCreateCost + x-xgen-operation-id-override: estimateCreateFlexCost + /api/atlas/v2/groups/{groupId}/flexClusters:estimateTenantUpgradeCost: + post: + description: This endpoint validates a supplied cluster configuration and returns an estimated hourly and monthly compute cost without creating or modifying the cluster. It applies the same validation as the Upgrade One Flex Cluster endpoint, so invalid configurations are rejected with the same errors. The estimate excludes backup storage, disk storage, data transfer, and premium feature surcharges, which are billed based on actual usage. Subscription, payment, and resource policy checks are not performed, so a configuration that can be priced here may still be rejected during the actual operation. + operationId: estimateGroupFlexClusterTenantUpgradeCost + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/pretty' + - $ref: '#/components/parameters/groupId' + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/AtlasTenantClusterUpgradeRequest20240805' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Flex cluster upgrade to estimate. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/ClusterCostEstimate' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the supplied configuration. + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "409": + $ref: '#/components/responses/conflict' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Estimate the Cost of Upgrading One Flex Cluster + tags: + - Flex Clusters + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Flex-Clusters/operation/estimateGroupFlexClusterTenantUpgradeCost + x-xgen-operation-id-override: estimateUpgradeFlexCost /api/atlas/v2/groups/{groupId}/flexClusters:tenantUpgrade: post: description: Upgrades a flex cluster to a dedicated cluster (M10+) in the specified project. @@ -60308,7 +62733,7 @@ paths: | `atlas.project.deployment.clusters` | Limit on the number of clusters in this project | 25 | 100 | | `atlas.project.deployment.nodesPerPrivateLinkRegion` | Limit on AWS PrivateLink addressable target nodes per region in this project. For sharded clusters using optimized (load-balanced) connection strings, `currentUsage` doesn't grow with the number of `mongos` — the load balancer is counted as a single addressable target regardless of how many `mongos` sit behind it. | 50 | 90 | | `atlas.project.security.databaseAccess.customRoles` | Limit on the number of custom roles in this project | 100 | 1400 | - | `atlas.project.security.databaseAccess.users` | Limit on the number of database users in this project | 100 | 100 | + | `atlas.project.security.databaseAccess.users` | Limit on the number of database users in this project | 100 | 900 | | `atlas.project.security.networkAccess.crossRegionEntries` | Limit on the number of cross-region network access entries in this project | 40 | 220 | | `atlas.project.security.networkAccess.entries` | Limit on the number of network access entries in this project | 200 | 20 | | `dataFederation.bytesProcessed.query` | Limit on the number of bytes processed during a single Data Federation query | N/A | N/A | @@ -60382,7 +62807,7 @@ paths: | `atlas.project.deployment.clusters` | Limit on the number of clusters in this project | 25 | 100 | | `atlas.project.deployment.nodesPerPrivateLinkRegion` | Limit on AWS PrivateLink addressable target nodes per region in this project. For sharded clusters using optimized (load-balanced) connection strings, `currentUsage` doesn't grow with the number of `mongos` — the load balancer is counted as a single addressable target regardless of how many `mongos` sit behind it. | 50 | 90 | | `atlas.project.security.databaseAccess.customRoles` | Limit on the number of custom roles in this project | 100 | 1400 | - | `atlas.project.security.databaseAccess.users` | Limit on the number of database users in this project | 100 | 100 | + | `atlas.project.security.databaseAccess.users` | Limit on the number of database users in this project | 100 | 900 | | `atlas.project.security.networkAccess.crossRegionEntries` | Limit on the number of cross-region network access entries in this project | 40 | 220 | | `atlas.project.security.networkAccess.entries` | Limit on the number of network access entries in this project | 200 | 20 | | `dataFederation.bytesProcessed.query` | Limit on the number of bytes processed during a single Data Federation query | N/A | N/A | @@ -60458,7 +62883,7 @@ paths: | `atlas.project.deployment.clusters` | Limit on the number of clusters in this project | 25 | 100 | | `atlas.project.deployment.nodesPerPrivateLinkRegion` | Limit on AWS PrivateLink addressable target nodes per region in this project. For sharded clusters using optimized (load-balanced) connection strings, `currentUsage` doesn't grow with the number of `mongos` — the load balancer is counted as a single addressable target regardless of how many `mongos` sit behind it. | 50 | 90 | | `atlas.project.security.databaseAccess.customRoles` | Limit on the number of custom roles in this project | 100 | 1400 | - | `atlas.project.security.databaseAccess.users` | Limit on the number of database users in this project | 100 | 100 | + | `atlas.project.security.databaseAccess.users` | Limit on the number of database users in this project | 100 | 900 | | `atlas.project.security.networkAccess.crossRegionEntries` | Limit on the number of cross-region network access entries in this project | 40 | 220 | | `atlas.project.security.networkAccess.entries` | Limit on the number of network access entries in this project | 200 | 20 | | `dataFederation.bytesProcessed.query` | Limit on the number of bytes processed during a single Data Federation query | N/A | N/A | @@ -64278,11 +66703,20 @@ paths: - TRANSACTIONS_CURRENT_ACTIVE - TRANSACTIONS_CURRENT_INACTIVE - TRANSACTIONS_CURRENT_OPEN - - TRANSACTIONS_TOTAL_ABORTED - - TRANSACTIONS_TOTAL_COMMITTED - - TRANSACTIONS_TOTAL_STARTED + - TRANSACTIONS_ABORTED + - TRANSACTIONS_COMMITTED + - TRANSACTIONS_STARTED - CACHE_PRESSURE_PERCENTAGE - INGRESS_QUEUE_WAIT_TIME + - CONNECTION_RATE_LIMITING_SUCCESSFUL_ADMISSIONS + - CONNECTION_RATE_LIMITING_REJECTED_ADMISSIONS + - CONNECTION_RATE_LIMITING_AVERAGE_TIME_QUEUED + - OPERATION_RATE_LIMITING_OFFERED_ADMISSIONS + - OPERATION_RATE_LIMITING_SUCCESSFUL_ADMISSIONS + - OPERATION_RATE_LIMITING_REJECTED_ADMISSIONS + - OPERATION_RATE_LIMITING_ADDED_TO_QUEUE + - OPERATION_RATE_LIMITING_CURRENT_QUEUE_DEPTH + - OPERATION_RATE_LIMITING_AVERAGE_TIME_QUEUED type: string maxItems: 10 minItems: 1 @@ -64768,6 +67202,47 @@ paths: - Project Owner x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Push-Based-Log-Export/operation/createGroupPushBasedLogExport x-xgen-operation-id-override: createLogExport + /api/atlas/v2/groups/{groupId}/ratelimits: + get: + description: Retrieve rate limiting bucket state for the specified group. + operationId: getGroupRatelimits + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/AtlasRateLimitInspectionResponse' + x-xgen-preview: + name: rate-limit + public: "false" + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return Rate Limit State for One Group + tags: + - Rate Limiting + x-rolesRequirements: + - Project Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Rate-Limiting/operation/getGroupRatelimits /api/atlas/v2/groups/{groupId}/sampleDatasetLoad/{name}: post: description: Requests loading the MongoDB sample dataset into the specified cluster. @@ -65465,7 +67940,7 @@ paths: x-xgen-operation-id-override: createAccessList /api/atlas/v2/groups/{groupId}/serviceAccounts/{clientId}/accessList/{ipAddress}: delete: - description: Removes the specified access list entry from the specified Service Account for the project. You can't remove the requesting IP address from the access list. + description: Removes the specified access list entry from the specified Service Account for the project. A Service Account cannot remove its own IP address from its access list. operationId: deleteGroupServiceAccountAccessListEntry parameters: - $ref: '#/components/parameters/envelope' @@ -65693,6 +68168,12 @@ paths: schema: $ref: '#/components/schemas/GroupSettings' x-xgen-version: "2023-01-01" + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/GroupSettingsPreview' + x-xgen-preview: + name: query-insights-gen-ai-features + x-xgen-version: preview description: OK headers: RateLimit-Limit: @@ -65727,6 +68208,12 @@ paths: application/vnd.atlas.2023-01-01+json: schema: $ref: '#/components/schemas/GroupSettings' + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/GroupSettingsPreview' + x-xgen-preview: + name: query-insights-gen-ai-features + x-xgen-version: preview description: Settings to update. required: true responses: @@ -65736,6 +68223,12 @@ paths: schema: $ref: '#/components/schemas/GroupSettings' x-xgen-version: "2023-01-01" + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/GroupSettingsPreview' + x-xgen-preview: + name: query-insights-gen-ai-features + x-xgen-version: preview description: OK headers: RateLimit-Limit: @@ -65799,7 +68292,7 @@ paths: - Project Read Only x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Standby-Links/operation/listGroupStandbyLinks post: - description: Creates a disaster recovery standby link between an active cluster and a standby cluster. Both clusters must not already be part of a standby link system, must be single-region clusters, and must be in different regions. + description: Creates a disaster recovery standby link between an active cluster and a standby cluster. Both clusters must not already be part of a standby link system and must be single-region clusters. operationId: createGroupStandbyLink parameters: - description: Unique 24-hexadecimal digit string that identifies the project containing the clusters. @@ -66723,7 +69216,11 @@ paths: tags: - Streams x-rolesRequirements: - - Project Read Only + - Organization Stream Processing Admin + - Project Data Access Admin + - Project Data Access Read Only + - Project Data Access Read Write + - Project Stream Processing Manager x-xgen-changelog: "2023-09-11": The MongoDB Atlas Streams Processing API is now exposed as part of private preview, but is subject to change until GA. x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/getGroupStreamConnection @@ -68139,6 +70636,701 @@ paths: - Project Stream Processing Manager x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/withGroupStreamSampleConnections x-xgen-operation-id-override: withStreamSampleConnections + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayAttachments: + get: + description: Returns the Transit Gateway Attachments for this group in the shared Atlas AWS Account. + operationId: listGroupStreamsTransitGatewayAttachments + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/itemsPerPage' + - $ref: '#/components/parameters/pageNum' + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/PaginatedApiStreamsTransitGatewayAttachmentResponse' + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return All Transit Gateway Attachments for One Group + tags: + - Streams + x-rolesRequirements: + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/listGroupStreamsTransitGatewayAttachments + x-xgen-operation-id-override: listTransitGatewayAttachments + post: + description: Creates Transit Gateway Attachment with the provided VPC for a Transit Gateway that has been shared with an Atlas AWS Account. This Transit Gateway will be used in Atlas Streams private networking connections. + operationId: createGroupStreamsTransitGatewayAttachment + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/StreamsTransitGatewayAttachmentRequest' + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: Metadata needed for creating a transit gateway attachment. + required: true + responses: + "201": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/StreamsTransitGatewayAttachmentResponse' + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: Created + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Create One Transit Gateway Attachment + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/createGroupStreamsTransitGatewayAttachment + x-xgen-operation-id-override: createTransitGatewayAttachment + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayAttachments/{attachmentId}: + delete: + description: Deletes a transit gateway attachment. + operationId: deleteGroupStreamsTransitGatewayAttachment + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + - description: Unique identifier that identifies the Transit Gateway Attachment. + in: path + name: attachmentId + required: true + schema: + example: tgw-attach-01f8100bc7EXAMPLE + pattern: ^tgw-attach-[0-9a-zA-Z]+$ + type: string + responses: + "204": + content: + application/vnd.atlas.preview+json: + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: No Content + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Delete One Transit Gateway Attachment + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/deleteGroupStreamsTransitGatewayAttachment + x-xgen-operation-id-override: deleteTransitGatewayAttachment + get: + description: Returns one Transit Gateway Attachment for this group from the shared Atlas AWS Account. + operationId: getGroupStreamsTransitGatewayAttachment + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + - description: Unique identifier that identifies the Transit Gateway Attachment. + in: path + name: attachmentId + required: true + schema: + example: tgw-attach-01f8100bc7EXAMPLE + pattern: ^tgw-attach-[0-9a-zA-Z]+$ + type: string + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/StreamsTransitGatewayAttachmentResponse' + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return One Transit Gateway Attachment for One Group + tags: + - Streams + x-rolesRequirements: + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/getGroupStreamsTransitGatewayAttachment + x-xgen-operation-id-override: getTransitGatewayAttachment + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayInvitations: + get: + description: Returns the AWS RAM Resource Shares and Transit Gateway IDs for a Transit Gateway that has been shared with an Atlas AWS Account. This only returns the resource shares cached for Atlas Streams Processing. + operationId: listGroupStreamsTransitGatewayInvitations + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/itemsPerPage' + - $ref: '#/components/parameters/pageNum' + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/PaginatedStreamsTransitGatewayInvitationsResponse' + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return All Streams Transit Gateway Invitations + tags: + - Streams + x-rolesRequirements: + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/listGroupStreamsTransitGatewayInvitations + x-xgen-operation-id-override: listTransitGatewayInvitations + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayInvitations/{resourceShareArn}: + delete: + description: Deletes an AWS Resource Share Invitation for a Transit Gateway that has been shared with an Atlas AWS account. This does not delete the resource share invitation from the sender's AWS account. This only deletes the resource share invitation that's cached for Atlas Streams Processing. + operationId: deleteGroupStreamsTransitGatewayInvitation + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + - description: AWS Transit Gateway resource share ARN. + in: path + name: resourceShareArn + required: true + schema: + type: string + responses: + "204": + content: + application/vnd.atlas.preview+json: + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: No Content + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Delete One Transit Gateway Invitation + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/deleteGroupStreamsTransitGatewayInvitation + x-xgen-operation-id-override: deleteTransitGatewayInvitation + get: + description: Returns the details of one AWS Resource Share Invitation for a Transit Gateway that has been shared with an Atlas AWS Account. This only returns the resource share invitation cached for Atlas Streams Processing. + operationId: getGroupStreamsTransitGatewayInvitation + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + - description: AWS Transit Gateway resource share ARN. + in: path + name: resourceShareArn + required: true + schema: + type: string + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/StreamsTransitGatewayInvitationsResponse' + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return One Transit Gateway Invitation + tags: + - Streams + x-rolesRequirements: + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/getGroupStreamsTransitGatewayInvitation + x-xgen-operation-id-override: getTransitGatewayInvitation + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayInvitations:accept: + post: + description: Accept AWS RAM Resource Share for a Transit Gateway that has been shared with an Atlas AWS account. This Transit Gateway will be used in Atlas Streams private networking connections. + operationId: acceptGroupStreamsTransitGatewayInvitations + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/StreamsTransitGatewayResourceShare' + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: Detailed information on accepting a transit gateway resource share invitation. + required: true + responses: + "204": + content: + application/vnd.atlas.preview+json: + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: No Content + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "500": + $ref: '#/components/responses/internalServerError' + summary: Accept Transit Gateway Resource Share Invitations + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/acceptGroupStreamsTransitGatewayInvitations + x-xgen-operation-id-override: acceptTransitGatewayInvitations + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayInvitations:reject: + post: + description: Rejects AWS RAM Resource Share for a Transit Gateway that has been shared with an Atlas AWS account. + operationId: rejectGroupStreamsTransitGatewayInvitations + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/StreamsTransitGatewayResourceShare' + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: Detailed information on rejecting a transit gateway resource share invitation. + required: true + responses: + "204": + content: + application/vnd.atlas.preview+json: + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: No Content + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "500": + $ref: '#/components/responses/internalServerError' + summary: Reject Transit Gateway Resource Share Invitations + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/rejectGroupStreamsTransitGatewayInvitations + x-xgen-operation-id-override: rejectTransitGatewayInvitations + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayRoutes: + get: + description: List Transit Gateway routes in the default route table associated with Atlas VPC. + operationId: listGroupStreamsTransitGatewayRoutes + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/itemsPerPage' + - $ref: '#/components/parameters/pageNum' + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/PaginatedApiStreamsTransitGatewayRouteResponse' + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return All Transit Gateway Routes in the Default Route Table for One Atlas VPC + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/listGroupStreamsTransitGatewayRoutes + x-xgen-operation-id-override: listTransitGatewayRoutes + post: + description: Creates a route in the default route table associated with Atlas VPC to route all traffic destined for provided CIDR to the provided Transit Gateway. + operationId: createGroupStreamsTransitGatewayRoute + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/StreamsTransitGatewayRouteRequest' + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: Metadata needed for creating a transit gateway route. + required: true + responses: + "201": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/StreamsTransitGatewayRouteResponse' + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: Created + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Create One Transit Gateway Route in the Default Route Table for One Atlas VPC + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/createGroupStreamsTransitGatewayRoute + x-xgen-operation-id-override: createTransitGatewayRoute + /api/atlas/v2/groups/{groupId}/streamsTransitGatewayRoutes/{routeId}: + delete: + description: Deletes a transit gateway route in the default route table associated with Atlas VPC. + operationId: deleteGroupStreamsTransitGatewayRoute + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + - description: The Object ID that uniquely identifies a transit gateway route. + in: path + name: routeId + required: true + schema: + example: 32b6e34b3d91647abb20e7b8 + pattern: ^([a-f0-9]{24})$ + type: string + responses: + "204": + content: + application/vnd.atlas.preview+json: + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: No Content + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Delete One Transit Gateway Route in the Default Route Table for One Atlas VPC + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/deleteGroupStreamsTransitGatewayRoute + x-xgen-operation-id-override: deleteTransitGatewayRoute + get: + description: Retrieves a transit gateway route in the default route table associated with Atlas VPC. + operationId: getGroupStreamsTransitGatewayRoute + parameters: + - $ref: '#/components/parameters/groupId' + - description: The Object ID that uniquely identifies a transit gateway route. + in: path + name: routeId + required: true + schema: + example: 32b6e34b3d91647abb20e7b8 + pattern: ^([a-f0-9]{24})$ + type: string + - $ref: '#/components/parameters/envelope' + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/StreamsTransitGatewayRouteResponse' + x-xgen-preview: + name: aws-transit-gateway + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return One Transit Gateway Route in the Default Route Table for One Atlas VPC + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/getGroupStreamsTransitGatewayRoute + x-xgen-operation-id-override: getTransitGatewayRoute + /api/atlas/v2/groups/{groupId}/streamsWorkspacePrivateEndpoints: + get: + description: Returns all private endpoints registered for Atlas Stream Processing in the specified project. + operationId: listGroupStreamsWorkspacePrivateEndpoints + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/includeCount' + - $ref: '#/components/parameters/itemsPerPage' + - $ref: '#/components/parameters/pageNum' + - $ref: '#/components/parameters/pretty' + responses: + "200": + content: + application/vnd.atlas.2025-03-12+json: + schema: + $ref: '#/components/schemas/PaginatedStreamsWorkspacePrivateEndpointResponse' + x-xgen-version: "2025-03-12" + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return All Workspace Private Endpoints for Atlas Stream Processing + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/listGroupStreamsWorkspacePrivateEndpoints + x-xgen-operation-id-override: listWorkspacePrivateEndpoints + /api/atlas/v2/groups/{groupId}/streamsWorkspacePrivateEndpoints/{endpointId}: + get: + description: Returns one private endpoint registered for Atlas Stream Processing in the specified project. + operationId: getGroupStreamsWorkspacePrivateEndpoint + parameters: + - $ref: '#/components/parameters/groupId' + - $ref: '#/components/parameters/envelope' + - description: Unique identifier of the customer's VPC endpoint. + in: path + name: endpointId + required: true + schema: + example: vpce-0abc123def4567890 + pattern: ^vpce-[a-z0-9]{17}$ + type: string + responses: + "200": + content: + application/vnd.atlas.2025-03-12+json: + schema: + $ref: '#/components/schemas/StreamsWorkspacePrivateEndpointResponse' + x-xgen-version: "2025-03-12" + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return One Workspace Private Endpoint for Atlas Stream Processing + tags: + - Streams + x-rolesRequirements: + - Organization Stream Processing Admin + - Project Stream Processing Owner + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Streams/operation/getGroupStreamsWorkspacePrivateEndpoint + x-xgen-operation-id-override: getWorkspacePrivateEndpoint /api/atlas/v2/groups/{groupId}/teams: get: description: Returns all teams to which the authenticated user has access in the project specified using its unique 24-hexadecimal digit identifier. All members of the team share the same project access. @@ -69160,6 +72352,48 @@ paths: tags: - Projects x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Projects/operation/getGroupByName + /api/atlas/v2/openapi/info: + get: + description: This resource returns general information about the MongoDB Atlas Administration API OpenAPI Specification. + operationId: getOpenapiInfo + parameters: + - $ref: '#/components/parameters/pretty' + responses: + "200": + content: + application/vnd.atlas.2024-05-30+json: + schema: + $ref: '#/components/schemas/OpenApiInfo' + x-sunset: "9999-12-30" + x-xgen-version: "2024-05-30" + application/vnd.atlas.2024-08-05+json: + schema: + $ref: '#/components/schemas/OpenApiInfo' + x-xgen-version: "2024-08-05" + application/vnd.atlas.2025-09-22.upcoming+json: + schema: + $ref: '#/components/schemas/OpenApiInfo' + x-xgen-version: 2025-09-22.upcoming + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/OpenApiInfo' + x-sunset: "9999-12-30" + x-xgen-preview: + public: "true" + x-xgen-version: preview + description: OK + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return General Information on MongoDB Atlas Administration API OpenAPI Specification + tags: + - OpenAPI + x-xgen-method-verb-override: + customMethod: "False" + verb: get /api/atlas/v2/orgs: get: description: Returns all organizations to which the requesting Service Account or API Key has access. @@ -71796,9 +75030,14 @@ paths: responses: "200": content: + application/vnd.atlas.2025-03-12+json: + schema: + $ref: '#/components/schemas/OrganizationMaintenanceSettingsResponse' + x-xgen-version: "2025-03-12" application/vnd.atlas.preview+json: schema: $ref: '#/components/schemas/OrganizationMaintenanceSettingsResponse' + x-sunset: "2026-10-12" x-xgen-preview: name: organization-maintenance x-xgen-version: preview @@ -71835,9 +75074,14 @@ paths: - $ref: '#/components/parameters/pretty' requestBody: content: + application/vnd.atlas.2025-03-12+json: + schema: + $ref: '#/components/schemas/OrganizationMaintenanceSettingsUpdateRequest' + x-xgen-version: "2025-03-12" application/vnd.atlas.preview+json: schema: $ref: '#/components/schemas/OrganizationMaintenanceSettingsUpdateRequest' + x-sunset: "2026-10-12" x-xgen-preview: name: organization-maintenance x-xgen-version: preview @@ -71846,9 +75090,14 @@ paths: responses: "200": content: + application/vnd.atlas.2025-03-12+json: + schema: + $ref: '#/components/schemas/OrganizationMaintenanceSettingsResponse' + x-xgen-version: "2025-03-12" application/vnd.atlas.preview+json: schema: $ref: '#/components/schemas/OrganizationMaintenanceSettingsResponse' + x-sunset: "2026-10-12" x-xgen-preview: name: organization-maintenance x-xgen-version: preview @@ -71887,9 +75136,14 @@ paths: responses: "200": content: + application/vnd.atlas.2025-03-12+json: + schema: + $ref: '#/components/schemas/OrganizationMaintenanceSettingsResponse' + x-xgen-version: "2025-03-12" application/vnd.atlas.preview+json: schema: $ref: '#/components/schemas/OrganizationMaintenanceSettingsResponse' + x-sunset: "2026-10-12" x-xgen-preview: name: organization-maintenance x-xgen-version: preview @@ -72405,6 +75659,47 @@ paths: - Organization Member x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Resource-Policies/operation/getOrgNonCompliantResources x-xgen-operation-id-override: getNonCompliantResources + /api/atlas/v2/orgs/{orgId}/ratelimits: + get: + description: Retrieve rate limiting bucket state for the specified organization. + operationId: getOrgRatelimits + parameters: + - $ref: '#/components/parameters/orgId' + - $ref: '#/components/parameters/envelope' + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/AtlasRateLimitInspectionResponse' + x-xgen-preview: + name: rate-limit + public: "false" + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return Rate Limit State for One Organization + tags: + - Rate Limiting + x-rolesRequirements: + - Organization Read Only + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Rate-Limiting/operation/getOrgRatelimits /api/atlas/v2/orgs/{orgId}/resourcePolicies: get: description: Return all Atlas Resource Policies for the organization. @@ -73256,7 +76551,7 @@ paths: x-xgen-operation-id-override: createOrgAccessList /api/atlas/v2/orgs/{orgId}/serviceAccounts/{clientId}/accessList/{ipAddress}: delete: - description: Removes the specified access list entry from the specified Service Account for the organization. You can't remove the requesting IP address from the access list. + description: Removes the specified access list entry from the specified Service Account for the organization. A Service Account cannot remove its own IP address from its access list. operationId: deleteOrgServiceAccountAccessListEntry parameters: - $ref: '#/components/parameters/envelope' @@ -74697,14 +77992,6 @@ paths: schema: $ref: '#/components/schemas/PaginatedRateLimitEndpointSets' x-xgen-version: "2025-03-12" - application/vnd.atlas.preview+json: - schema: - $ref: '#/components/schemas/PaginatedRateLimitEndpointSets' - x-sunset: "2026-04-21" - x-xgen-preview: - name: rate-limit - public: "false" - x-xgen-version: preview description: OK headers: RateLimit-Limit: @@ -74773,14 +78060,6 @@ paths: schema: $ref: '#/components/schemas/RateLimitEndpointSetResponse' x-xgen-version: "2025-03-12" - application/vnd.atlas.preview+json: - schema: - $ref: '#/components/schemas/RateLimitEndpointSetResponse' - x-sunset: "2026-04-21" - x-xgen-preview: - name: rate-limit - public: "false" - x-xgen-version: preview description: OK headers: RateLimit-Limit: @@ -74885,6 +78164,46 @@ paths: - Organization Member - Project Read Only x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Invoices/operation/getSku + /api/atlas/v2/unauth/clusters:estimateCost: + post: + description: Estimates the hourly and monthly compute cost of a cluster of the requested tier in the requested cloud provider and region, applying standard defaults. This unauthenticated endpoint prices a fixed set of representative tiers and does not create a cluster. To estimate arbitrary configurations, use the authenticated cost-estimate endpoints. + operationId: estimateClusterCost + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/pretty' + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/UnauthClusterCostEstimateRequest' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Tier, cloud provider, and region to estimate. + required: true + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/UnauthClusterCostEstimateResponse' + x-xgen-preview: + name: cluster-cost-estimate + x-xgen-version: preview + description: Estimated hourly and monthly compute cost for the requested tier, with the standard defaults the server applied for dedicated tiers. + "400": + $ref: '#/components/responses/badRequest' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + security: [] + summary: Estimate the Cost of One Cluster + tags: + - Clusters + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/estimateClusterCost /api/atlas/v2/unauth/controlPlaneIPAddresses: get: description: Returns all control plane IP addresses. @@ -74914,6 +78233,217 @@ paths: - Root x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Root/operation/listControlPlaneIpAddresses x-xgen-operation-id-override: listControlPlaneAddresses + /api/atlas/v2/unauth/ephemeralClusters/{clusterId}: + get: + description: |- + Returns the details for one Atlas Ephemeral cluster. + + To learn more about Ephemeral clusters, see [Create an Atlas Ephemeral Cluster](https://dochub.mongodb.org/core/create-ephemeral-cluster) in the MongoDB Atlas documentation. + operationId: getEphemeralCluster + parameters: + - description: Unique ID of the ephemeral cluster to look up. + in: path + name: clusterId + required: true + schema: + type: string + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/EphemeralClusterStatusResponse' + x-xgen-preview: + public: "true" + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + security: [] + summary: Return One Ephemeral Atlas Cluster + tags: + - Ephemeral Clusters + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Ephemeral-Clusters/operation/getEphemeralCluster + /api/atlas/v2/unauth/ephemeralClusters:create: + post: + description: |- + Creates an Atlas Ephemeral cluster and returns its connection and claim details. + + An Ephemeral cluster is a temporary Free cluster that you can create and connect to without an Atlas account. Atlas pauses the cluster 2 days after creation and deletes it 7 days after creation unless you claim it to an Atlas account. + + Claiming an Ephemeral cluster converts it into a standard Free cluster with no expiration date and moves it into a new or existing Atlas organization. Until you claim the cluster, you can read and write its data but can't perform administrative operations, such as scaling the cluster, adding database users, or changing network access. + + Atlas deploys all Ephemeral clusters to AWS `us-east-1` and allows connections from any IP address (`0.0.0.0/0`). To learn more about Ephemeral clusters, see [Create an Atlas Ephemeral Cluster](https://dochub.mongodb.org/core/create-ephemeral-cluster) in the MongoDB Atlas documentation. + operationId: createEphemeralCluster + requestBody: + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/CreateEphemeralClusterRequest' + x-xgen-preview: + public: "true" + x-xgen-version: preview + description: Ephemeral cluster to create. + required: true + responses: + "201": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/EphemeralClusterCreated' + x-xgen-preview: + public: "true" + x-xgen-version: preview + description: Created + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + security: [] + summary: Create One Ephemeral Atlas Cluster + tags: + - Ephemeral Clusters + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Ephemeral-Clusters/operation/createEphemeralCluster + /api/atlas/v2/unauth/openapi/versions: + get: + description: API that provides a list of available versions for a given environment. + operationId: listOpenapiVersions + parameters: + - $ref: '#/components/parameters/envelope' + - $ref: '#/components/parameters/itemsPerPage' + - $ref: '#/components/parameters/pageNum' + - $ref: '#/components/parameters/pretty' + - description: The environment to get the versions from. If not provided, it returns the versions for the given MongoDB URL. (E.g. prod for cloud.mongodb.com). + in: query + name: env + schema: + enum: + - dev + - qa + - prod + - stage + type: string + responses: + "200": + content: + application/vnd.atlas.2024-08-05+json: + schema: + $ref: '#/components/schemas/PaginatedApiVersions' + x-xgen-version: "2024-08-05" + application/vnd.atlas.2024-08-05+yaml: + schema: + $ref: '#/components/schemas/PaginatedApiVersions' + x-xgen-version: "2024-08-05" + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/PaginatedApiVersions' + x-xgen-preview: + name: version-resource + x-xgen-version: preview + application/vnd.atlas.preview+yaml: + schema: + $ref: '#/components/schemas/PaginatedApiVersions' + x-xgen-preview: + name: version-resource + x-xgen-version: preview + description: OK + "500": + $ref: '#/components/responses/internalServerError' + summary: Return All Versions for One Environment + tags: + - OpenAPI + /api/atlas/v2/unauth/ratelimits: + get: + description: Retrieve rate limiting bucket state for unauthenticated requests. + operationId: listRatelimits + parameters: + - $ref: '#/components/parameters/envelope' + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/AtlasRateLimitInspectionResponse' + x-xgen-preview: + name: rate-limit + public: "false" + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "404": + $ref: '#/components/responses/notFound' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return Rate Limit State for Unauthenticated Requests + tags: + - Rate Limiting + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Rate-Limiting/operation/listRatelimits + /api/atlas/v2/userRateLimits: + get: + description: Retrieve rate limiting bucket state for the current user. + operationId: listUserRatelimits + parameters: + - $ref: '#/components/parameters/envelope' + responses: + "200": + content: + application/vnd.atlas.preview+json: + schema: + $ref: '#/components/schemas/AtlasRateLimitInspectionResponse' + x-xgen-preview: + name: rate-limit + public: "false" + x-xgen-version: preview + description: OK + headers: + RateLimit-Limit: + $ref: '#/components/headers/HeaderRateLimitLimit' + RateLimit-Remaining: + $ref: '#/components/headers/HeaderRateLimitRemaining' + "400": + $ref: '#/components/responses/badRequest' + "401": + $ref: '#/components/responses/unauthorized' + "403": + $ref: '#/components/responses/forbidden' + "429": + $ref: '#/components/responses/tooManyRequests' + "500": + $ref: '#/components/responses/internalServerError' + summary: Return Rate Limit State for One User + tags: + - Rate Limiting + x-xgen-docs-url: https://mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Rate-Limiting/operation/listUserRatelimits /api/atlas/v2/users: post: deprecated: true @@ -75076,6 +78606,8 @@ tags: name: Auditing - description: Returns and edits custom DNS configurations for MongoDB Cloud database deployments on AWS. The resource requires your Project ID. If you use the VPC peering on AWS and you use your own DNS servers instead of Amazon Route 53, enable custom DNS. Before 31 March 2020, applications deployed within AWS using custom DNS services and VPC-peered with MongoDB Cloud couldn't connect over private IP addresses. Custom DNS resolved to public IP addresses. AWS internal DNS resolved to private IP addresses. Applications deployed with custom DNS services in AWS should use Private IP for Peering connection strings. name: AWS Clusters DNS + - description: Returns, adds, and edits Charts Dashboard instances. This resource applies only to projects with a Charts tenant, and requires your Project ID. + name: Charts Dashboards - description: Manages Cloud Backup snapshots, snapshot export buckets, restore jobs, and schedules. This resource applies only to clusters that use Cloud Backups. name: Cloud Backups - description: Manages the Cloud Migration Service. Source organizations, projects, and MongoDB clusters reside on Cloud Manager or Ops Manager. Destination organizations, projects, and MongoDB clusters reside on MongoDB Cloud. Source databases can't use any authentication except SCRAM-SHA. @@ -75096,6 +78628,13 @@ tags: name: Database Users - description: Returns and edits the Encryption at Rest using Customer Key Management configuration. MongoDB Cloud encrypts all storage whether or not you use your own key management. name: Encryption at Rest using Customer Key Management + - description: |- + Create and return Atlas Ephemeral clusters. An Ephemeral cluster is a temporary Atlas Free cluster that you can claim within 7 days to convert into a standard Free cluster. + + Use of this API, including any resources created through it, is governed by MongoDB’s [Cloud Terms of Service](https://www.mongodb.com/legal/terms-and-conditions/cloud) and [Privacy Policy](https://www.mongodb.com/legal/privacy/privacy-policy). By using this API to create an Ephemeral cluster, you agree to these terms. + + To learn more about Ephemeral clusters, see [Create an Atlas Ephemeral Cluster](https://dochub.mongodb.org/core/create-ephemeral-cluster) in the MongoDB Atlas documentation. + name: Ephemeral Clusters - description: Returns events. This collection remains under revision and may change. name: Events - description: Returns, adds, edits, and removes federation-related features such as role mappings and connected organization configurations. @@ -75132,6 +78671,8 @@ tags: name: Network Peering - description: Returns, adds, edits, or removes an online archive. name: Online Archive + - description: Returns information about the MongoDB Atlas Specification. + name: OpenAPI - description: Returns, adds, and edits organizational units in MongoDB Cloud. name: Organizations - description: Returns and starts overload protection simulations for a cluster. From 276556015146598b7cc626016fc7bc5af701d4a8 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 15 Sep 2026 12:02:06 +0200 Subject: [PATCH 02/17] Add override config for OAuth implementation --- tools/codegen/config.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/codegen/config.yml b/tools/codegen/config.yml index 226949aff7..c85cf25f63 100644 --- a/tools/codegen/config.yml +++ b/tools/codegen/config.yml @@ -1662,6 +1662,13 @@ resources: description: *project_id_description headers.value: sensitive: true + oauth: + description: "OAuth 2.0 client credentials configuration. Required when auth_type is `OAUTH2`. Secrets are never returned." + oauth.client_secret: + sensitive: true + description: "Shared client secret. Required when client_auth_method is `CLIENT_SECRET`, and rejected for `PRIVATE_KEY_JWT`. Encrypted at rest and never returned." + oauth.signing_key_info: + description: "Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the jwks_uri with your identity provider. Atlas rotates the underlying key without changing this URL." headers: description: "Required for auth_type: HEADER. HTTP headers for authentication and configuration. Total size limit 2KB." datasources: From 6b66d3979cae6c098c7ee455114748673ec46bb0 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 15 Sep 2026 12:02:57 +0200 Subject: [PATCH 03/17] Autogenerate resource --- .../metricintegration/resource_schema.go | 77 ++- tools/codegen/models/metric_integration.yaml | 460 +++++++++++++++++- 2 files changed, 535 insertions(+), 2 deletions(-) diff --git a/internal/serviceapi/metricintegration/resource_schema.go b/internal/serviceapi/metricintegration/resource_schema.go index da5f002f11..d8d290bb00 100755 --- a/internal/serviceapi/metricintegration/resource_schema.go +++ b/internal/serviceapi/metricintegration/resource_schema.go @@ -22,7 +22,7 @@ func ResourceSchema(ctx context.Context) schema.Schema { }, "auth_type": schema.StringAttribute{ Required: true, - MarkdownDescription: "Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used.", + MarkdownDescription: "Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used. `OAUTH2` acquires a bearer token from an OAuth 2.0 token endpoint using the `oauth` field.", }, "endpoint": schema.StringAttribute{ Required: true, @@ -83,6 +83,65 @@ func ResourceSchema(ctx context.Context) schema.Schema { CustomType: customtypes.NewSetType[types.String](ctx), ElementType: types.StringType, }, + "oauth": schema.SingleNestedAttribute{ + Optional: true, + MarkdownDescription: "OAuth 2.0 client credentials configuration. Required when auth_type is `OAUTH2`. Secrets are never returned.", + CustomType: customtypes.NewObjectType[TFOauthModel](ctx), + Attributes: map[string]schema.Attribute{ + "client_auth_method": schema.StringAttribute{ + Required: true, + MarkdownDescription: "How the client authenticates to the token endpoint. `CLIENT_SECRET` sends a shared secret. `PRIVATE_KEY_JWT` signs a client assertion with an Atlas-generated, Atlas-managed key. Register the returned JWKS URL with your identity provider.", + }, + "client_id": schema.StringAttribute{ + Required: true, + MarkdownDescription: "OAuth 2.0 client identifier registered with the token endpoint.", + }, + "client_secret": schema.StringAttribute{ + Optional: true, + MarkdownDescription: "Shared client secret. Required when client_auth_method is `CLIENT_SECRET`, and rejected for `PRIVATE_KEY_JWT`. Encrypted at rest and never returned.", + Sensitive: true, + }, + "scopes": schema.SetAttribute{ + Optional: true, + MarkdownDescription: "Optional OAuth 2.0 scopes requested on the token, sent as a space delimited `scope` parameter. Applies to both client authentication methods.", + CustomType: customtypes.NewSetType[types.String](ctx), + ElementType: types.StringType, + }, + "signing_key_info": schema.SingleNestedAttribute{ + Computed: true, + MarkdownDescription: "Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the jwks_uri with your identity provider. Atlas rotates the underlying key without changing this URL.", + CustomType: customtypes.NewObjectType[TFOauthSigningKeyInfoModel](ctx), + Attributes: map[string]schema.Attribute{ + "algorithm": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "Signing algorithm of the Atlas-managed key.", + }, + "created_at": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "When the currently active signing key was created. This parameter expresses its value in the ISO 8601 timestamp format in UTC.", + }, + "jwks_uri": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "Public JWKS URL serving this integration's signing keys. Fixed for the lifetime of the integration.", + }, + "kid": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "Key ID stamped on client assertions, the `SHA-1` thumbprint of the key certificate in uppercase hexadecimal. Changes when Atlas rotates the key.", + }, + }, + }, + "token_endpoint": schema.StringAttribute{ + Required: true, + MarkdownDescription: "OAuth 2.0 token endpoint URL. Must use HTTPS.", + }, + "token_request_params": schema.MapAttribute{ + Optional: true, + MarkdownDescription: "Optional provider-specific parameters added to the token request, for example a resource indicator. Applies to both client authentication methods.", + CustomType: customtypes.NewMapType[types.String](ctx), + ElementType: types.StringType, + }, + }, + }, "provider_type": schema.StringAttribute{ Required: true, MarkdownDescription: "The provider type for the metric integration. Identifies the third-party service provider.", @@ -101,6 +160,7 @@ type TFModel struct { IntegrationType types.String `tfsdk:"integration_type"` MetricIntegrationId types.String `tfsdk:"metric_integration_id" autogen:"omitjson"` MetricSelection customtypes.SetValue[types.String] `tfsdk:"metric_selection"` + Oauth customtypes.ObjectValue[TFOauthModel] `tfsdk:"oauth"` ProviderType types.String `tfsdk:"provider_type"` } type TFHeadersModel struct { @@ -111,3 +171,18 @@ type TFHeadersRedactedModel struct { Name types.String `tfsdk:"name" autogen:"omitjson"` Value types.String `tfsdk:"value" autogen:"omitjson"` } +type TFOauthModel struct { + ClientAuthMethod types.String `tfsdk:"client_auth_method"` + ClientId types.String `tfsdk:"client_id"` + ClientSecret types.String `tfsdk:"client_secret" autogen:"sensitive"` + Scopes customtypes.SetValue[types.String] `tfsdk:"scopes"` + SigningKeyInfo customtypes.ObjectValue[TFOauthSigningKeyInfoModel] `tfsdk:"signing_key_info" autogen:"omitjson"` + TokenEndpoint types.String `tfsdk:"token_endpoint"` + TokenRequestParams customtypes.MapValue[types.String] `tfsdk:"token_request_params"` +} +type TFOauthSigningKeyInfoModel struct { + Algorithm types.String `tfsdk:"algorithm" autogen:"omitjson"` + CreatedAt types.String `tfsdk:"created_at" autogen:"omitjson"` + JwksUri types.String `tfsdk:"jwks_uri" autogen:"omitjson"` + Kid types.String `tfsdk:"kid" autogen:"omitjson"` +} diff --git a/tools/codegen/models/metric_integration.yaml b/tools/codegen/models/metric_integration.yaml index 47418945d3..eaae030224 100755 --- a/tools/codegen/models/metric_integration.yaml +++ b/tools/codegen/models/metric_integration.yaml @@ -13,7 +13,7 @@ schema: present_in_any_response: true request_only_required_on_create: false - string: {} - description: Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used. + description: Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used. `OAUTH2` acquires a bearer token from an OAuth 2.0 token endpoint using the `oauth` field. computed_optional_required: required tf_schema_name: auth_type tf_model_name: AuthType @@ -167,6 +167,166 @@ schema: create_only: false present_in_any_response: true request_only_required_on_create: false + - single_nested: + nested_object: + attributes: + - string: {} + description: How the client authenticates to the token endpoint. `CLIENT_SECRET` sends a shared secret. `PRIVATE_KEY_JWT` signs a client assertion with an Atlas-generated, Atlas-managed key. Register the returned JWKS URL with your identity provider. + computed_optional_required: required + tf_schema_name: client_auth_method + tf_model_name: ClientAuthMethod + api_name: clientAuthMethod + req_body_usage: all_request_bodies + sensitive: false + create_only: false + present_in_any_response: true + request_only_required_on_create: false + - string: {} + description: OAuth 2.0 client identifier registered with the token endpoint. + computed_optional_required: required + tf_schema_name: client_id + tf_model_name: ClientId + api_name: clientId + req_body_usage: all_request_bodies + sensitive: false + create_only: false + present_in_any_response: true + request_only_required_on_create: false + - string: {} + description: Shared client secret. Required when client_auth_method is `CLIENT_SECRET`, and rejected for `PRIVATE_KEY_JWT`. Encrypted at rest and never returned. + computed_optional_required: optional + tf_schema_name: client_secret + tf_model_name: ClientSecret + api_name: clientSecret + req_body_usage: all_request_bodies + sensitive: true + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - set: + element_type: 4 + description: Optional OAuth 2.0 scopes requested on the token, sent as a space delimited `scope` parameter. Applies to both client authentication methods. + custom_type: + model: customtypes.SetValue[types.String] + schema: customtypes.NewSetType[types.String](ctx) + packages: + - customtypes + computed_optional_required: optional + tf_schema_name: scopes + tf_model_name: Scopes + api_name: scopes + req_body_usage: all_request_bodies + sensitive: false + create_only: false + present_in_any_response: true + request_only_required_on_create: false + - single_nested: + nested_object: + attributes: + - string: {} + description: Signing algorithm of the Atlas-managed key. + computed_optional_required: computed + tf_schema_name: algorithm + tf_model_name: Algorithm + api_name: algorithm + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: true + request_only_required_on_create: false + - string: {} + description: When the currently active signing key was created. This parameter expresses its value in the ISO 8601 timestamp format in UTC. + computed_optional_required: computed + tf_schema_name: created_at + tf_model_name: CreatedAt + api_name: createdAt + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: true + request_only_required_on_create: false + - string: {} + description: Public JWKS URL serving this integration's signing keys. Fixed for the lifetime of the integration. + computed_optional_required: computed + tf_schema_name: jwks_uri + tf_model_name: JwksUri + api_name: jwksUri + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: true + request_only_required_on_create: false + - string: {} + description: Key ID stamped on client assertions, the `SHA-1` thumbprint of the key certificate in uppercase hexadecimal. Changes when Atlas rotates the key. + computed_optional_required: computed + tf_schema_name: kid + tf_model_name: Kid + api_name: kid + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: true + request_only_required_on_create: false + description: Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the jwks_uri with your identity provider. Atlas rotates the underlying key without changing this URL. + custom_type: + name: OauthSigningKeyInfo + model: customtypes.ObjectValue[TFOauthSigningKeyInfoModel] + schema: customtypes.NewObjectType[TFOauthSigningKeyInfoModel](ctx) + packages: + - customtypes + computed_optional_required: computed + tf_schema_name: signing_key_info + tf_model_name: SigningKeyInfo + api_name: signingKeyInfo + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: true + request_only_required_on_create: false + - string: {} + description: OAuth 2.0 token endpoint URL. Must use HTTPS. + computed_optional_required: required + tf_schema_name: token_endpoint + tf_model_name: TokenEndpoint + api_name: tokenEndpoint + req_body_usage: all_request_bodies + sensitive: false + create_only: false + present_in_any_response: true + request_only_required_on_create: false + - map: + element_type: 4 + description: Optional provider-specific parameters added to the token request, for example a resource indicator. Applies to both client authentication methods. + custom_type: + model: customtypes.MapValue[types.String] + schema: customtypes.NewMapType[types.String](ctx) + packages: + - customtypes + computed_optional_required: optional + tf_schema_name: token_request_params + tf_model_name: TokenRequestParams + api_name: tokenRequestParams + req_body_usage: all_request_bodies + sensitive: false + create_only: false + present_in_any_response: true + request_only_required_on_create: false + description: OAuth 2.0 client credentials configuration. Required when auth_type is `OAUTH2`. Secrets are never returned. + custom_type: + name: Oauth + model: customtypes.ObjectValue[TFOauthModel] + schema: customtypes.NewObjectType[TFOauthModel](ctx) + packages: + - customtypes + computed_optional_required: optional + tf_schema_name: oauth + tf_model_name: Oauth + api_name: oauth + req_body_usage: all_request_bodies + sensitive: false + create_only: false + present_in_any_response: true + request_only_required_on_create: false - string: {} description: The provider type for the metric integration. Identifies the third-party service provider. computed_optional_required: required @@ -309,6 +469,155 @@ data_sources: create_only: false present_in_any_response: false request_only_required_on_create: false + - single_nested: + nested_object: + attributes: + - string: {} + description: How the client authenticates to the token endpoint. + computed_optional_required: computed + tf_schema_name: client_auth_method + tf_model_name: ClientAuthMethod + api_name: clientAuthMethod + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - string: {} + description: OAuth 2.0 client identifier registered with the token endpoint. + computed_optional_required: computed + tf_schema_name: client_id + tf_model_name: ClientId + api_name: clientId + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - set: + element_type: 4 + description: OAuth 2.0 scopes requested on the token. + custom_type: + model: customtypes.SetValue[types.String] + schema: customtypes.NewSetType[types.String](ctx) + packages: + - customtypes + computed_optional_required: computed + tf_schema_name: scopes + tf_model_name: Scopes + api_name: scopes + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - single_nested: + nested_object: + attributes: + - string: {} + description: Signing algorithm of the Atlas-managed key. + computed_optional_required: computed + tf_schema_name: algorithm + tf_model_name: Algorithm + api_name: algorithm + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - string: {} + description: When the currently active signing key was created. This parameter expresses its value in the ISO 8601 timestamp format in UTC. + computed_optional_required: computed + tf_schema_name: created_at + tf_model_name: CreatedAt + api_name: createdAt + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - string: {} + description: Public JWKS URL serving this integration's signing keys. Fixed for the lifetime of the integration. + computed_optional_required: computed + tf_schema_name: jwks_uri + tf_model_name: JwksUri + api_name: jwksUri + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - string: {} + description: Key ID stamped on client assertions, the `SHA-1` thumbprint of the key certificate in uppercase hexadecimal. Changes when Atlas rotates the key. + computed_optional_required: computed + tf_schema_name: kid + tf_model_name: Kid + api_name: kid + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + description: Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the `jwksUri` with your identity provider. Atlas rotates the underlying key without changing this URL. + custom_type: + name: OauthSigningKeyInfo + model: customtypes.ObjectValue[TFOauthSigningKeyInfoModel] + schema: customtypes.NewObjectType[TFOauthSigningKeyInfoModel](ctx) + packages: + - customtypes + computed_optional_required: computed + tf_schema_name: signing_key_info + tf_model_name: SigningKeyInfo + api_name: signingKeyInfo + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - string: {} + description: OAuth 2.0 token endpoint URL. + computed_optional_required: computed + tf_schema_name: token_endpoint + tf_model_name: TokenEndpoint + api_name: tokenEndpoint + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - map: + element_type: 4 + description: Provider-specific parameters added to the token request. + custom_type: + model: customtypes.MapValue[types.String] + schema: customtypes.NewMapType[types.String](ctx) + packages: + - customtypes + computed_optional_required: computed + tf_schema_name: token_request_params + tf_model_name: TokenRequestParams + api_name: tokenRequestParams + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + description: OAuth 2.0 configuration returned for a metric integration. Secrets are never returned. + custom_type: + name: Oauth + model: customtypes.ObjectValue[TFOauthModel] + schema: customtypes.NewObjectType[TFOauthModel](ctx) + packages: + - customtypes + computed_optional_required: computed + tf_schema_name: oauth + tf_model_name: Oauth + api_name: oauth + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false - string: {} description: Unique 24-hexadecimal digit string that identifies your project, also known as `groupId` in the official documentation. computed_optional_required: required @@ -483,6 +792,155 @@ data_sources: create_only: false present_in_any_response: false request_only_required_on_create: false + - single_nested: + nested_object: + attributes: + - string: {} + description: How the client authenticates to the token endpoint. + computed_optional_required: computed + tf_schema_name: client_auth_method + tf_model_name: ClientAuthMethod + api_name: clientAuthMethod + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - string: {} + description: OAuth 2.0 client identifier registered with the token endpoint. + computed_optional_required: computed + tf_schema_name: client_id + tf_model_name: ClientId + api_name: clientId + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - set: + element_type: 4 + description: OAuth 2.0 scopes requested on the token. + custom_type: + model: customtypes.SetValue[types.String] + schema: customtypes.NewSetType[types.String](ctx) + packages: + - customtypes + computed_optional_required: computed + tf_schema_name: scopes + tf_model_name: Scopes + api_name: scopes + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - single_nested: + nested_object: + attributes: + - string: {} + description: Signing algorithm of the Atlas-managed key. + computed_optional_required: computed + tf_schema_name: algorithm + tf_model_name: Algorithm + api_name: algorithm + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - string: {} + description: When the currently active signing key was created. This parameter expresses its value in the ISO 8601 timestamp format in UTC. + computed_optional_required: computed + tf_schema_name: created_at + tf_model_name: CreatedAt + api_name: createdAt + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - string: {} + description: Public JWKS URL serving this integration's signing keys. Fixed for the lifetime of the integration. + computed_optional_required: computed + tf_schema_name: jwks_uri + tf_model_name: JwksUri + api_name: jwksUri + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - string: {} + description: Key ID stamped on client assertions, the `SHA-1` thumbprint of the key certificate in uppercase hexadecimal. Changes when Atlas rotates the key. + computed_optional_required: computed + tf_schema_name: kid + tf_model_name: Kid + api_name: kid + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + description: Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the `jwksUri` with your identity provider. Atlas rotates the underlying key without changing this URL. + custom_type: + name: ResultsOauthSigningKeyInfo + model: customtypes.ObjectValue[TFResultsOauthSigningKeyInfoModel] + schema: customtypes.NewObjectType[TFResultsOauthSigningKeyInfoModel](ctx) + packages: + - customtypes + computed_optional_required: computed + tf_schema_name: signing_key_info + tf_model_name: SigningKeyInfo + api_name: signingKeyInfo + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - string: {} + description: OAuth 2.0 token endpoint URL. + computed_optional_required: computed + tf_schema_name: token_endpoint + tf_model_name: TokenEndpoint + api_name: tokenEndpoint + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + - map: + element_type: 4 + description: Provider-specific parameters added to the token request. + custom_type: + model: customtypes.MapValue[types.String] + schema: customtypes.NewMapType[types.String](ctx) + packages: + - customtypes + computed_optional_required: computed + tf_schema_name: token_request_params + tf_model_name: TokenRequestParams + api_name: tokenRequestParams + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false + description: OAuth 2.0 configuration returned for a metric integration. Secrets are never returned. + custom_type: + name: ResultsOauth + model: customtypes.ObjectValue[TFResultsOauthModel] + schema: customtypes.NewObjectType[TFResultsOauthModel](ctx) + packages: + - customtypes + computed_optional_required: computed + tf_schema_name: oauth + tf_model_name: Oauth + api_name: oauth + req_body_usage: omit_always + sensitive: false + create_only: false + present_in_any_response: false + request_only_required_on_create: false - string: {} description: The provider type for the metric integration. Identifies the third-party service provider. computed_optional_required: computed From 790eb7b5865bc7b662fcebe61d74abaf19a7be78 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Tue, 15 Sep 2026 16:00:11 +0200 Subject: [PATCH 04/17] Autogenerate singular and plural data sources --- .../metricintegration/data_source_schema.go | 69 +++++++++++++++++++ .../plural_data_source_schema.go | 69 +++++++++++++++++++ tools/codegen/config.yml | 2 + tools/codegen/models/metric_integration.yaml | 4 +- 4 files changed, 142 insertions(+), 2 deletions(-) diff --git a/internal/serviceapi/metricintegration/data_source_schema.go b/internal/serviceapi/metricintegration/data_source_schema.go index fc9ceecd0c..58adaef946 100755 --- a/internal/serviceapi/metricintegration/data_source_schema.go +++ b/internal/serviceapi/metricintegration/data_source_schema.go @@ -57,6 +57,60 @@ func DataSourceSchema(ctx context.Context) dsschema.Schema { CustomType: customtypes.NewSetType[types.String](ctx), ElementType: types.StringType, }, + "oauth": dsschema.SingleNestedAttribute{ + Computed: true, + MarkdownDescription: "OAuth 2.0 configuration returned for a metric integration. Secrets are never returned.", + CustomType: customtypes.NewObjectType[TFDSOauthModel](ctx), + Attributes: map[string]dsschema.Attribute{ + "client_auth_method": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "How the client authenticates to the token endpoint.", + }, + "client_id": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "OAuth 2.0 client identifier registered with the token endpoint.", + }, + "scopes": dsschema.SetAttribute{ + Computed: true, + MarkdownDescription: "OAuth 2.0 scopes requested on the token.", + CustomType: customtypes.NewSetType[types.String](ctx), + ElementType: types.StringType, + }, + "signing_key_info": dsschema.SingleNestedAttribute{ + Computed: true, + MarkdownDescription: "Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the jwks_uri with your identity provider. Atlas rotates the underlying key without changing this URL.", + CustomType: customtypes.NewObjectType[TFDSOauthSigningKeyInfoModel](ctx), + Attributes: map[string]dsschema.Attribute{ + "algorithm": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "Signing algorithm of the Atlas-managed key.", + }, + "created_at": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "When the currently active signing key was created. This parameter expresses its value in the ISO 8601 timestamp format in UTC.", + }, + "jwks_uri": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "Public JWKS URL serving this integration's signing keys. Fixed for the lifetime of the integration.", + }, + "kid": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "Key ID stamped on client assertions, the `SHA-1` thumbprint of the key certificate in uppercase hexadecimal. Changes when Atlas rotates the key.", + }, + }, + }, + "token_endpoint": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "OAuth 2.0 token endpoint URL.", + }, + "token_request_params": dsschema.MapAttribute{ + Computed: true, + MarkdownDescription: "Provider-specific parameters added to the token request.", + CustomType: customtypes.NewMapType[types.String](ctx), + ElementType: types.StringType, + }, + }, + }, "project_id": dsschema.StringAttribute{ Required: true, MarkdownDescription: "Unique 24-hexadecimal digit string that identifies your project, also known as `groupId` in the official documentation.", @@ -77,6 +131,7 @@ type TFDSModel struct { IntegrationType types.String `tfsdk:"integration_type" autogen:"omitjson"` MetricIntegrationId types.String `tfsdk:"metric_integration_id" autogen:"omitjson"` MetricSelection customtypes.SetValue[types.String] `tfsdk:"metric_selection" autogen:"omitjson"` + Oauth customtypes.ObjectValue[TFDSOauthModel] `tfsdk:"oauth" autogen:"omitjson"` ProjectId types.String `tfsdk:"project_id" apiname:"groupId" autogen:"omitjson"` ProviderType types.String `tfsdk:"provider_type" autogen:"omitjson"` } @@ -84,3 +139,17 @@ type TFDSHeadersRedactedModel struct { Name types.String `tfsdk:"name" autogen:"omitjson"` Value types.String `tfsdk:"value" autogen:"omitjson"` } +type TFDSOauthModel struct { + ClientAuthMethod types.String `tfsdk:"client_auth_method" autogen:"omitjson"` + ClientId types.String `tfsdk:"client_id" autogen:"omitjson"` + Scopes customtypes.SetValue[types.String] `tfsdk:"scopes" autogen:"omitjson"` + SigningKeyInfo customtypes.ObjectValue[TFDSOauthSigningKeyInfoModel] `tfsdk:"signing_key_info" autogen:"omitjson"` + TokenEndpoint types.String `tfsdk:"token_endpoint" autogen:"omitjson"` + TokenRequestParams customtypes.MapValue[types.String] `tfsdk:"token_request_params" autogen:"omitjson"` +} +type TFDSOauthSigningKeyInfoModel struct { + Algorithm types.String `tfsdk:"algorithm" autogen:"omitjson"` + CreatedAt types.String `tfsdk:"created_at" autogen:"omitjson"` + JwksUri types.String `tfsdk:"jwks_uri" autogen:"omitjson"` + Kid types.String `tfsdk:"kid" autogen:"omitjson"` +} diff --git a/internal/serviceapi/metricintegration/plural_data_source_schema.go b/internal/serviceapi/metricintegration/plural_data_source_schema.go index 52568787b4..b782c9339d 100755 --- a/internal/serviceapi/metricintegration/plural_data_source_schema.go +++ b/internal/serviceapi/metricintegration/plural_data_source_schema.go @@ -75,6 +75,60 @@ func PluralDataSourceSchema(ctx context.Context) dsschema.Schema { CustomType: customtypes.NewSetType[types.String](ctx), ElementType: types.StringType, }, + "oauth": dsschema.SingleNestedAttribute{ + Computed: true, + MarkdownDescription: "OAuth 2.0 configuration returned for a metric integration. Secrets are never returned.", + CustomType: customtypes.NewObjectType[TFPluralDSResultsOauthModel](ctx), + Attributes: map[string]dsschema.Attribute{ + "client_auth_method": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "How the client authenticates to the token endpoint.", + }, + "client_id": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "OAuth 2.0 client identifier registered with the token endpoint.", + }, + "scopes": dsschema.SetAttribute{ + Computed: true, + MarkdownDescription: "OAuth 2.0 scopes requested on the token.", + CustomType: customtypes.NewSetType[types.String](ctx), + ElementType: types.StringType, + }, + "signing_key_info": dsschema.SingleNestedAttribute{ + Computed: true, + MarkdownDescription: "Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the jwks_uri with your identity provider. Atlas rotates the underlying key without changing this URL.", + CustomType: customtypes.NewObjectType[TFPluralDSResultsOauthSigningKeyInfoModel](ctx), + Attributes: map[string]dsschema.Attribute{ + "algorithm": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "Signing algorithm of the Atlas-managed key.", + }, + "created_at": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "When the currently active signing key was created. This parameter expresses its value in the ISO 8601 timestamp format in UTC.", + }, + "jwks_uri": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "Public JWKS URL serving this integration's signing keys. Fixed for the lifetime of the integration.", + }, + "kid": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "Key ID stamped on client assertions, the `SHA-1` thumbprint of the key certificate in uppercase hexadecimal. Changes when Atlas rotates the key.", + }, + }, + }, + "token_endpoint": dsschema.StringAttribute{ + Computed: true, + MarkdownDescription: "OAuth 2.0 token endpoint URL.", + }, + "token_request_params": dsschema.MapAttribute{ + Computed: true, + MarkdownDescription: "Provider-specific parameters added to the token request.", + CustomType: customtypes.NewMapType[types.String](ctx), + ElementType: types.StringType, + }, + }, + }, "provider_type": dsschema.StringAttribute{ Computed: true, MarkdownDescription: "The provider type for the metric integration. Identifies the third-party service provider.", @@ -100,9 +154,24 @@ type TFPluralDSResultsModel struct { IntegrationType types.String `tfsdk:"integration_type" autogen:"omitjson"` MetricIntegrationId types.String `tfsdk:"metric_integration_id" autogen:"omitjson"` MetricSelection customtypes.SetValue[types.String] `tfsdk:"metric_selection" autogen:"omitjson"` + Oauth customtypes.ObjectValue[TFPluralDSResultsOauthModel] `tfsdk:"oauth" autogen:"omitjson"` ProviderType types.String `tfsdk:"provider_type" autogen:"omitjson"` } type TFPluralDSResultsHeadersRedactedModel struct { Name types.String `tfsdk:"name" autogen:"omitjson"` Value types.String `tfsdk:"value" autogen:"omitjson"` } +type TFPluralDSResultsOauthModel struct { + ClientAuthMethod types.String `tfsdk:"client_auth_method" autogen:"omitjson"` + ClientId types.String `tfsdk:"client_id" autogen:"omitjson"` + Scopes customtypes.SetValue[types.String] `tfsdk:"scopes" autogen:"omitjson"` + SigningKeyInfo customtypes.ObjectValue[TFPluralDSResultsOauthSigningKeyInfoModel] `tfsdk:"signing_key_info" autogen:"omitjson"` + TokenEndpoint types.String `tfsdk:"token_endpoint" autogen:"omitjson"` + TokenRequestParams customtypes.MapValue[types.String] `tfsdk:"token_request_params" autogen:"omitjson"` +} +type TFPluralDSResultsOauthSigningKeyInfoModel struct { + Algorithm types.String `tfsdk:"algorithm" autogen:"omitjson"` + CreatedAt types.String `tfsdk:"created_at" autogen:"omitjson"` + JwksUri types.String `tfsdk:"jwks_uri" autogen:"omitjson"` + Kid types.String `tfsdk:"kid" autogen:"omitjson"` +} diff --git a/tools/codegen/config.yml b/tools/codegen/config.yml index c85cf25f63..909585d03b 100644 --- a/tools/codegen/config.yml +++ b/tools/codegen/config.yml @@ -1685,6 +1685,8 @@ resources: overrides: project_id: description: *project_id_description + oauth.signing_key_info: + description: "Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the jwks_uri with your identity provider. Atlas rotates the underlying key without changing this URL." # Collection-level restore (GA 2025-03-12). Jobs are immutable and have no public DELETE/cancel. cloud_backup_collection_restore_job: diff --git a/tools/codegen/models/metric_integration.yaml b/tools/codegen/models/metric_integration.yaml index eaae030224..9ea227fcc9 100755 --- a/tools/codegen/models/metric_integration.yaml +++ b/tools/codegen/models/metric_integration.yaml @@ -558,7 +558,7 @@ data_sources: create_only: false present_in_any_response: false request_only_required_on_create: false - description: Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the `jwksUri` with your identity provider. Atlas rotates the underlying key without changing this URL. + description: Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the jwks_uri with your identity provider. Atlas rotates the underlying key without changing this URL. custom_type: name: OauthSigningKeyInfo model: customtypes.ObjectValue[TFOauthSigningKeyInfoModel] @@ -881,7 +881,7 @@ data_sources: create_only: false present_in_any_response: false request_only_required_on_create: false - description: Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the `jwksUri` with your identity provider. Atlas rotates the underlying key without changing this URL. + description: Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the jwks_uri with your identity provider. Atlas rotates the underlying key without changing this URL. custom_type: name: ResultsOauthSigningKeyInfo model: customtypes.ObjectValue[TFResultsOauthSigningKeyInfoModel] From a696aa849f9265411d375da4a55f4942ac1ca8d2 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 16 Sep 2026 11:34:16 +0200 Subject: [PATCH 05/17] Add acceptance tests --- .../metricintegration/resource_test.go | 240 +++++++++++++++++- 1 file changed, 238 insertions(+), 2 deletions(-) diff --git a/internal/serviceapi/metricintegration/resource_test.go b/internal/serviceapi/metricintegration/resource_test.go index bace4d67ba..c00974cb2e 100644 --- a/internal/serviceapi/metricintegration/resource_test.go +++ b/internal/serviceapi/metricintegration/resource_test.go @@ -5,7 +5,9 @@ import ( "fmt" "net/http" "os" + "regexp" "strconv" + "strings" "testing" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -30,8 +32,17 @@ const ( depends_on = [mongodbatlas_metric_integration.test] } ` + // Dummy endpoints for OAuth integrations. + oauthTokenEndpoint = "https://192.0.2.2/oauth2/token" //nolint:gosec // Test data + oauthClientID = "atlas-otel-test" //nolint:gosec // Test data + oauthEndpoint = "https://192.0.2.1/v1/metrics" + // Pre-rendered token_request_params HCL fragments, passed to the config builders. + trParamsClientSecret = `token_request_params = { resource = "atlas:otel:test" }` + trParamsPrivateKeyJWT = `token_request_params = { resource = "JPMC:URI:OTel" }` ) +// TestAccMetricIntegration_basic covers the base HEADER auth path. Serial because the project +// allows at most 2 metric integrations, and the OAuth tests share the same project. func TestAccMetricIntegration_basic(t *testing.T) { var ( projectID = acc.ProjectIDExecution(t) @@ -44,8 +55,7 @@ func TestAccMetricIntegration_basic(t *testing.T) { extraHeader = true withDS = true ) - - resource.ParallelTest(t, resource.TestCase{ + resource.Test(t, resource.TestCase{ PreCheck: func() { acc.PreCheckBasic(t); preCheckMetricIntegration(t) }, ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, CheckDestroy: checkDestroy, @@ -204,3 +214,229 @@ func importStateIDFunc(resourceName string) resource.ImportStateIdFunc { return fmt.Sprintf("%s/%s", projectID, integrationID), nil } } + +func preCheckMetricIntegrationOAuth(tb testing.TB) { + tb.Helper() + acc.PreCheckBasic(tb) + // TODO: remove this skip once the OAuth fields are available in prod and the feature flags + // are enabled on the CI test project. These tests are not run in CI yet. + tb.Skip("OAuth metric integration acceptance tests are not run in CI until the feature is available in prod") +} + +// configOauth renders an OAUTH2 metric integration resource. The optional oauth block +// attributes are appended after client_id, each on its own line at the block indentation. +func configOauth(projectID, endpoint, tokenEndpoint, clientID, clientAuthMethod string, withDS bool, oauthAttrs ...string) string { + dsConfig := "" + if withDS { + dsConfig = datasourcesConfig + } + var attrsBlock strings.Builder + for _, a := range oauthAttrs { + if a != "" { + attrsBlock.WriteString("\n\t\t\t\t" + a) + } + } + return fmt.Sprintf(` + resource "mongodbatlas_metric_integration" "test" { + project_id = %[1]q + integration_type = "OTEL" + provider_type = "CUSTOM" + auth_type = "OAUTH2" + aggregation_temporality = "DELTA" + endpoint = %[2]q + metric_selection = ["ATLAS_STREAM_PROCESSING"] + + oauth = { + client_auth_method = %[3]q + token_endpoint = %[4]q + client_id = %[5]q%[6]s + } + } + + %[7]s + `, projectID, endpoint, clientAuthMethod, tokenEndpoint, clientID, attrsBlock.String(), dsConfig) +} + +func configOauthClientSecret(projectID, endpoint, tokenEndpoint, clientID, clientSecret string, scopes []string, tokenRequestParams string, withDS bool) string { + return configOauth(projectID, endpoint, tokenEndpoint, clientID, "CLIENT_SECRET", withDS, + fmt.Sprintf("client_secret = %q", clientSecret), + "scopes = "+hcl.StringSliceToHCL(scopes), + tokenRequestParams, + ) +} + +func configOauthPrivateKeyJWT(projectID, endpoint, tokenEndpoint, clientID string, scopes []string, tokenRequestParams string, withDS bool) string { + oauthAttrs := []string{} + if len(scopes) > 0 { + oauthAttrs = append(oauthAttrs, "scopes = "+hcl.StringSliceToHCL(scopes)) + } + oauthAttrs = append(oauthAttrs, tokenRequestParams) + return configOauth(projectID, endpoint, tokenEndpoint, clientID, "PRIVATE_KEY_JWT", withDS, oauthAttrs...) +} + +// TestAccMetricIntegration_oauthClientSecret covers the CLIENT_SECRET OAuth path: create, +// update (rotate the write-only secret and change scopes/tokenRequestParams), and import. +// Serial because the project allows at most 2 metric integrations and tests share it. +func TestAccMetricIntegration_oauthClientSecret(t *testing.T) { + projectID := acc.ProjectIDExecution(t) + var ( + secret1 = "client-secret-initial" + secret2 = "client-secret-rotated" + scopes1 = []string{"metrics.write"} + scopes2 = []string{"metrics.write", "monitoring.read"} + dsName = new(dataSourceName) + ) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { preCheckMetricIntegrationOAuth(t) }, + ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, + CheckDestroy: checkDestroy, + Steps: []resource.TestStep{ + { + Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret1, scopes1, "", true), + Check: checkOauthClientSecret(secret1, scopes1, 0, dsName), + }, + { + Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret2, scopes2, trParamsClientSecret, false), + Check: checkOauthClientSecret(secret2, scopes2, 1, nil), + }, + { + Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret2, scopes2, trParamsClientSecret, false), + ResourceName: resourceName, + ImportStateIdFunc: importStateIDFunc(resourceName), + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "metric_integration_id", + // client_secret is write-only and not returned on GET, so it cannot match on import. + ImportStateVerifyIgnore: []string{"oauth.client_secret"}, + }, + }, + }) +} + +// TestAccMetricIntegration_oauthPrivateKeyJWT covers the PRIVATE_KEY_JWT OAuth path +func TestAccMetricIntegration_oauthPrivateKeyJWT(t *testing.T) { + projectID := acc.ProjectIDExecution(t) + var ( + scopes1 = []string{} + scopes2 = []string{"metrics.write"} + dsName = new(dataSourceName) + ) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { preCheckMetricIntegrationOAuth(t) }, + ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, + CheckDestroy: checkDestroy, + Steps: []resource.TestStep{ + { + Config: configOauthPrivateKeyJWT(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, scopes1, trParamsPrivateKeyJWT, true), + Check: checkOauthPrivateKeyJWT(scopes1, 1, dsName), + }, + { + Config: configOauthPrivateKeyJWT(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, scopes2, trParamsPrivateKeyJWT, false), + Check: checkOauthPrivateKeyJWT(scopes2, 1, nil), + }, + { + Config: configOauthPrivateKeyJWT(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, scopes2, trParamsPrivateKeyJWT, false), + ResourceName: resourceName, + ImportStateIdFunc: importStateIDFunc(resourceName), + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "metric_integration_id", + }, + }, + }) +} + +// TestAccMetricIntegration_oauthPrivateKeyJWTRejectsClientSecret verifies the API rejects a +// client_secret set on a PRIVATE_KEY_JWT integration. The validation is server-side, so this +// step performs a real apply that is expected to fail with the API's 400. +func TestAccMetricIntegration_oauthPrivateKeyJWTRejectsClientSecret(t *testing.T) { + projectID := acc.ProjectIDExecution(t) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { preCheckMetricIntegrationOAuth(t) }, + ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, + CheckDestroy: checkDestroy, + Steps: []resource.TestStep{ + { + Config: configOauthPrivateKeyJWTWithClientSecret(projectID), + ExpectError: regexp.MustCompile( + `oauth.clientSecret must not be set when clientAuthMethod is 'PRIVATE_KEY_JWT'`, + ), + }, + }, + }) +} + +func configOauthPrivateKeyJWTWithClientSecret(projectID string) string { + return fmt.Sprintf(` + resource "mongodbatlas_metric_integration" "test" { + project_id = %[1]q + integration_type = "OTEL" + provider_type = "CUSTOM" + auth_type = "OAUTH2" + aggregation_temporality = "DELTA" + endpoint = %[2]q + metric_selection = ["ATLAS_STREAM_PROCESSING"] + + oauth = { + client_auth_method = "PRIVATE_KEY_JWT" + token_endpoint = %[3]q + client_id = %[4]q + client_secret = "should-be-rejected" + } + } + `, projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID) +} + +func checkOauthClientSecret(clientSecret string, scopes []string, tokenRequestParamsCount int, dsName *string) resource.TestCheckFunc { + mapChecks := map[string]string{ + "auth_type": "OAUTH2", + "oauth.client_auth_method": "CLIENT_SECRET", + "oauth.client_id": oauthClientID, + "oauth.token_endpoint": oauthTokenEndpoint, + "oauth.scopes.#": strconv.Itoa(len(scopes)), + "oauth.token_request_params.%": strconv.Itoa(tokenRequestParamsCount), + "headers_redacted.#": "0", + } + setChecks := []string{"project_id", "metric_integration_id"} + // client_secret is write-only and only present on the resource (never on data sources). + checks := []resource.TestCheckFunc{ + resource.TestCheckResourceAttr(resourceName, "oauth.client_secret", clientSecret), + } + if dsName != nil { + checks = append(checks, resource.TestCheckResourceAttrWith(pluralDataSourceName, "results.#", acc.IntGreatThan(0))) + } + checks = append(checks, acc.CheckRSAndDS(resourceName, dsName, nil, setChecks, mapChecks, checkExists(resourceName))) + return resource.ComposeAggregateTestCheckFunc(checks...) +} + +func checkOauthPrivateKeyJWT(scopes []string, tokenRequestParamsCount int, dsName *string) resource.TestCheckFunc { + mapChecks := map[string]string{ + "auth_type": "OAUTH2", + "oauth.client_auth_method": "PRIVATE_KEY_JWT", + "oauth.client_id": oauthClientID, + "oauth.token_endpoint": oauthTokenEndpoint, + "oauth.scopes.#": strconv.Itoa(len(scopes)), + "oauth.token_request_params.%": strconv.Itoa(tokenRequestParamsCount), + "oauth.signing_key_info.algorithm": "RS256", + "headers_redacted.#": "0", + } + // signing_key_info is read-only and present on both resource and data sources for PRIVATE_KEY_JWT. + setChecks := []string{ + "project_id", "metric_integration_id", + "oauth.signing_key_info.kid", + "oauth.signing_key_info.jwks_uri", + "oauth.signing_key_info.created_at", + } + checks := []resource.TestCheckFunc{ + // No client_secret is sent for PRIVATE_KEY_JWT, so it must not appear in state. + resource.TestCheckNoResourceAttr(resourceName, "oauth.client_secret"), + } + if dsName != nil { + checks = append(checks, resource.TestCheckResourceAttrWith(pluralDataSourceName, "results.#", acc.IntGreatThan(0))) + } + checks = append(checks, acc.CheckRSAndDS(resourceName, dsName, nil, setChecks, mapChecks, checkExists(resourceName))) + return resource.ComposeAggregateTestCheckFunc(checks...) +} From 193142a8237e95dd384b286c511324d329054b0e Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 16 Sep 2026 11:50:15 +0200 Subject: [PATCH 06/17] Generate docs --- docs/data-sources/metric_integration.md | 24 +++++++++++++++ docs/data-sources/metric_integrations.md | 24 +++++++++++++++ docs/resources/metric_integration.md | 37 +++++++++++++++++++++++- 3 files changed, 84 insertions(+), 1 deletion(-) diff --git a/docs/data-sources/metric_integration.md b/docs/data-sources/metric_integration.md index f33245890d..c87e621631 100644 --- a/docs/data-sources/metric_integration.md +++ b/docs/data-sources/metric_integration.md @@ -72,6 +72,7 @@ output "metric_integration_ids" { - `headers_redacted` (Attributes List) HTTP headers for authentication and configuration. Values are redacted and never returned in plaintext. (see [below for nested schema](#nestedatt--headers_redacted)) - `integration_type` (String) Type of metric integration. Identifies which protocol will be used for the integration. - `metric_selection` (Set of String) Array of metric categories to export. Determines which types of metrics are sent to the integration. +- `oauth` (Attributes) OAuth 2.0 configuration returned for a metric integration. Secrets are never returned. (see [below for nested schema](#nestedatt--oauth)) - `provider_type` (String) The provider type for the metric integration. Identifies the third-party service provider. @@ -82,4 +83,27 @@ Read-Only: - `name` (String) Header name. - `value` (String) Redacted header value. + + +### Nested Schema for `oauth` + +Read-Only: + +- `client_auth_method` (String) How the client authenticates to the token endpoint. +- `client_id` (String) OAuth 2.0 client identifier registered with the token endpoint. +- `scopes` (Set of String) OAuth 2.0 scopes requested on the token. +- `signing_key_info` (Attributes) Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the jwks_uri with your identity provider. Atlas rotates the underlying key without changing this URL. (see [below for nested schema](#nestedatt--oauth--signing_key_info)) +- `token_endpoint` (String) OAuth 2.0 token endpoint URL. +- `token_request_params` (Map of String) Provider-specific parameters added to the token request. + + +### Nested Schema for `oauth.signing_key_info` + +Read-Only: + +- `algorithm` (String) Signing algorithm of the Atlas-managed key. +- `created_at` (String) When the currently active signing key was created. This parameter expresses its value in the ISO 8601 timestamp format in UTC. +- `jwks_uri` (String) Public JWKS URL serving this integration's signing keys. Fixed for the lifetime of the integration. +- `kid` (String) Key ID stamped on client assertions, the `SHA-1` thumbprint of the key certificate in uppercase hexadecimal. Changes when Atlas rotates the key. + For more information see: [MongoDB Atlas - OTel Integration](https://www.mongodb.com/docs/atlas/tutorial/otel-integration/) Documentation. diff --git a/docs/data-sources/metric_integrations.md b/docs/data-sources/metric_integrations.md index ce31cd5b98..72fab652a5 100644 --- a/docs/data-sources/metric_integrations.md +++ b/docs/data-sources/metric_integrations.md @@ -86,6 +86,7 @@ Read-Only: - `integration_type` (String) Type of metric integration. Identifies which protocol will be used for the integration. - `metric_integration_id` (String) Unique identifier of the metric integration configuration. - `metric_selection` (Set of String) Array of metric categories to export. Determines which types of metrics are sent to the integration. +- `oauth` (Attributes) OAuth 2.0 configuration returned for a metric integration. Secrets are never returned. (see [below for nested schema](#nestedatt--results--oauth)) - `provider_type` (String) The provider type for the metric integration. Identifies the third-party service provider. @@ -96,4 +97,27 @@ Read-Only: - `name` (String) Header name. - `value` (String) Redacted header value. + + +### Nested Schema for `results.oauth` + +Read-Only: + +- `client_auth_method` (String) How the client authenticates to the token endpoint. +- `client_id` (String) OAuth 2.0 client identifier registered with the token endpoint. +- `scopes` (Set of String) OAuth 2.0 scopes requested on the token. +- `signing_key_info` (Attributes) Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the jwks_uri with your identity provider. Atlas rotates the underlying key without changing this URL. (see [below for nested schema](#nestedatt--results--oauth--signing_key_info)) +- `token_endpoint` (String) OAuth 2.0 token endpoint URL. +- `token_request_params` (Map of String) Provider-specific parameters added to the token request. + + +### Nested Schema for `results.oauth.signing_key_info` + +Read-Only: + +- `algorithm` (String) Signing algorithm of the Atlas-managed key. +- `created_at` (String) When the currently active signing key was created. This parameter expresses its value in the ISO 8601 timestamp format in UTC. +- `jwks_uri` (String) Public JWKS URL serving this integration's signing keys. Fixed for the lifetime of the integration. +- `kid` (String) Key ID stamped on client assertions, the `SHA-1` thumbprint of the key certificate in uppercase hexadecimal. Changes when Atlas rotates the key. + For more information see: [MongoDB Atlas - OTel Integration](https://www.mongodb.com/docs/atlas/tutorial/otel-integration/) Documentation. diff --git a/docs/resources/metric_integration.md b/docs/resources/metric_integration.md index f348226a83..6c27932f58 100644 --- a/docs/resources/metric_integration.md +++ b/docs/resources/metric_integration.md @@ -64,13 +64,17 @@ output "metric_integration_ids" { ### Required - `aggregation_temporality` (String) The temporality to send to the metric integration. -- `auth_type` (String) Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used. +- `auth_type` (String) Authentication method the integration uses when exporting metrics to the endpoint. `HEADER` authenticates with the static HTTP headers provided in the `headers` field, which must be set when this value is used. `OAUTH2` acquires a bearer token from an OAuth 2.0 token endpoint using the `oauth` field. - `endpoint` (String) OpenTelemetry collector endpoint URL. Must use HTTPS. - `integration_type` (String) Type of metric integration. Identifies which protocol will be used for the integration. This value cannot be modified after the integration is created. - `metric_selection` (Set of String) Array of metric categories to export. Determines which types of metrics are sent to the integration. - `project_id` (String) Unique 24-hexadecimal digit string that identifies your project, also known as `groupId` in the official documentation. - `provider_type` (String) The provider type for the metric integration. Identifies the third-party service provider. +### Optional + +- `oauth` (Attributes) OAuth 2.0 client credentials configuration. Required when auth_type is `OAUTH2`. Secrets are never returned. (see [below for nested schema](#nestedatt--oauth)) + The following attributes depend on the value of `auth_type`: @@ -93,6 +97,37 @@ Required: - `value` (String, Sensitive) Header value. + +### Nested Schema for `oauth` + +Required: + +- `client_auth_method` (String) How the client authenticates to the token endpoint. `CLIENT_SECRET` sends a shared secret. `PRIVATE_KEY_JWT` signs a client assertion with an Atlas-generated, Atlas-managed key. Register the returned JWKS URL with your identity provider. +- `client_id` (String) OAuth 2.0 client identifier registered with the token endpoint. +- `token_endpoint` (String) OAuth 2.0 token endpoint URL. Must use HTTPS. + +Optional: + +- `client_secret` (String, Sensitive) Shared client secret. Required when client_auth_method is `CLIENT_SECRET`, and rejected for `PRIVATE_KEY_JWT`. Encrypted at rest and never returned. +- `scopes` (Set of String) Optional OAuth 2.0 scopes requested on the token, sent as a space delimited `scope` parameter. Applies to both client authentication methods. +- `token_request_params` (Map of String) Optional provider-specific parameters added to the token request, for example a resource indicator. Applies to both client authentication methods. + +Read-Only: + +- `signing_key_info` (Attributes) Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the jwks_uri with your identity provider. Atlas rotates the underlying key without changing this URL. (see [below for nested schema](#nestedatt--oauth--signing_key_info)) + + +### Nested Schema for `oauth.signing_key_info` + +Read-Only: + +- `algorithm` (String) Signing algorithm of the Atlas-managed key. +- `created_at` (String) When the currently active signing key was created. This parameter expresses its value in the ISO 8601 timestamp format in UTC. +- `jwks_uri` (String) Public JWKS URL serving this integration's signing keys. Fixed for the lifetime of the integration. +- `kid` (String) Key ID stamped on client assertions, the `SHA-1` thumbprint of the key certificate in uppercase hexadecimal. Changes when Atlas rotates the key. + + + ### Nested Schema for `headers_redacted` From 112753186a62f870d6d365ff252c95d44ca2c25d Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 16 Sep 2026 12:05:12 +0200 Subject: [PATCH 07/17] Improve tests with provider consistency --- .../metricintegration/resource_test.go | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/internal/serviceapi/metricintegration/resource_test.go b/internal/serviceapi/metricintegration/resource_test.go index c00974cb2e..a301433f83 100644 --- a/internal/serviceapi/metricintegration/resource_test.go +++ b/internal/serviceapi/metricintegration/resource_test.go @@ -215,14 +215,6 @@ func importStateIDFunc(resourceName string) resource.ImportStateIdFunc { } } -func preCheckMetricIntegrationOAuth(tb testing.TB) { - tb.Helper() - acc.PreCheckBasic(tb) - // TODO: remove this skip once the OAuth fields are available in prod and the feature flags - // are enabled on the CI test project. These tests are not run in CI yet. - tb.Skip("OAuth metric integration acceptance tests are not run in CI until the feature is available in prod") -} - // configOauth renders an OAUTH2 metric integration resource. The optional oauth block // attributes are appended after client_id, each on its own line at the block indentation. func configOauth(projectID, endpoint, tokenEndpoint, clientID, clientAuthMethod string, withDS bool, oauthAttrs ...string) string { @@ -274,10 +266,10 @@ func configOauthPrivateKeyJWT(projectID, endpoint, tokenEndpoint, clientID strin return configOauth(projectID, endpoint, tokenEndpoint, clientID, "PRIVATE_KEY_JWT", withDS, oauthAttrs...) } -// TestAccMetricIntegration_oauthClientSecret covers the CLIENT_SECRET OAuth path: create, -// update (rotate the write-only secret and change scopes/tokenRequestParams), and import. -// Serial because the project allows at most 2 metric integrations and tests share it. +// TestAccMetricIntegration_oauthClientSecret covers the CLIENT_SECRET OAuth path func TestAccMetricIntegration_oauthClientSecret(t *testing.T) { + // TODO: remove once the OAuth metric integration fields are available in prod and before merging to master + acc.SkipTestForCI(t) projectID := acc.ProjectIDExecution(t) var ( secret1 = "client-secret-initial" @@ -287,8 +279,9 @@ func TestAccMetricIntegration_oauthClientSecret(t *testing.T) { dsName = new(dataSourceName) ) + // Test is serial because the project allows at most 2 metric integrations and tests share it. resource.Test(t, resource.TestCase{ - PreCheck: func() { preCheckMetricIntegrationOAuth(t) }, + PreCheck: func() { acc.PreCheckBasic(t) }, ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, CheckDestroy: checkDestroy, Steps: []resource.TestStep{ @@ -316,6 +309,8 @@ func TestAccMetricIntegration_oauthClientSecret(t *testing.T) { // TestAccMetricIntegration_oauthPrivateKeyJWT covers the PRIVATE_KEY_JWT OAuth path func TestAccMetricIntegration_oauthPrivateKeyJWT(t *testing.T) { + // TODO: remove once the OAuth metric integration fields are available in prod and before merging to master + acc.SkipTestForCI(t) projectID := acc.ProjectIDExecution(t) var ( scopes1 = []string{} @@ -323,8 +318,9 @@ func TestAccMetricIntegration_oauthPrivateKeyJWT(t *testing.T) { dsName = new(dataSourceName) ) + // Test is serial because the project allows at most 2 metric integrations and tests share it. resource.Test(t, resource.TestCase{ - PreCheck: func() { preCheckMetricIntegrationOAuth(t) }, + PreCheck: func() { acc.PreCheckBasic(t) }, ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, CheckDestroy: checkDestroy, Steps: []resource.TestStep{ @@ -352,10 +348,13 @@ func TestAccMetricIntegration_oauthPrivateKeyJWT(t *testing.T) { // client_secret set on a PRIVATE_KEY_JWT integration. The validation is server-side, so this // step performs a real apply that is expected to fail with the API's 400. func TestAccMetricIntegration_oauthPrivateKeyJWTRejectsClientSecret(t *testing.T) { + // TODO: remove once the OAuth metric integration fields are available in prod and before merging to master + acc.SkipTestForCI(t) projectID := acc.ProjectIDExecution(t) + // Test is serial because the project allows at most 2 metric integrations and tests share it. resource.Test(t, resource.TestCase{ - PreCheck: func() { preCheckMetricIntegrationOAuth(t) }, + PreCheck: func() { acc.PreCheckBasic(t) }, ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, CheckDestroy: checkDestroy, Steps: []resource.TestStep{ From cc6f5afe6145a513bf8c9ac2557710cad3473ca4 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 16 Sep 2026 12:59:36 +0200 Subject: [PATCH 08/17] test: Gate OAuth metric integration tests to CI and refine error assertion --- internal/serviceapi/metricintegration/resource_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/serviceapi/metricintegration/resource_test.go b/internal/serviceapi/metricintegration/resource_test.go index a301433f83..189e3af211 100644 --- a/internal/serviceapi/metricintegration/resource_test.go +++ b/internal/serviceapi/metricintegration/resource_test.go @@ -361,7 +361,7 @@ func TestAccMetricIntegration_oauthPrivateKeyJWTRejectsClientSecret(t *testing.T { Config: configOauthPrivateKeyJWTWithClientSecret(projectID), ExpectError: regexp.MustCompile( - `oauth.clientSecret must not be set when clientAuthMethod is 'PRIVATE_KEY_JWT'`, + `oauth.clientSecret must not be set when clientAuthMethod is`, ), }, }, From f5ff620ef8ce0147835deafdffeefee224baf3a1 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 16 Sep 2026 13:01:08 +0200 Subject: [PATCH 09/17] chore: Add changelog entry for OAuth metric integration support --- .changelog/4737.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .changelog/4737.txt diff --git a/.changelog/4737.txt b/.changelog/4737.txt new file mode 100644 index 0000000000..f4a20310cf --- /dev/null +++ b/.changelog/4737.txt @@ -0,0 +1,11 @@ +```release-note:enhancement +resource/mongodbatlas_metric_integration: Adds OAuth 2.0 support +``` + +```release-note:enhancement +data-source/mongodbatlas_metric_integration: Adds OAuth 2.0 support +``` + +```release-note:enhancement +data-source/mongodbatlas_metric_integrations: Adds OAuth 2.0 support +``` From 85ab0e4ad0c35961bec9e448b8989cb046ebd8e2 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 16 Sep 2026 15:17:10 +0200 Subject: [PATCH 10/17] Refactor tests --- .../metricintegration/resource_test.go | 50 ++++++++++--------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/internal/serviceapi/metricintegration/resource_test.go b/internal/serviceapi/metricintegration/resource_test.go index 189e3af211..5fe9f83b52 100644 --- a/internal/serviceapi/metricintegration/resource_test.go +++ b/internal/serviceapi/metricintegration/resource_test.go @@ -215,19 +215,25 @@ func importStateIDFunc(resourceName string) resource.ImportStateIdFunc { } } -// configOauth renders an OAUTH2 metric integration resource. The optional oauth block -// attributes are appended after client_id, each on its own line at the block indentation. -func configOauth(projectID, endpoint, tokenEndpoint, clientID, clientAuthMethod string, withDS bool, oauthAttrs ...string) string { +// oauthExtrasHCL indents each optional oauth attribute to the block indentation and joins +// them on newlines. Empty attributes are skipped, so omitted fields are not rendered. +func oauthExtrasHCL(attrs ...string) string { + var b strings.Builder + for _, a := range attrs { + if a != "" { + b.WriteString("\n\t\t\t\t" + a) + } + } + return b.String() +} + +// configOauth renders an OAUTH2 metric integration resource. oauthExtras is a pre-rendered +// fragment of optional oauth block attributes, appended after client_id. +func configOauth(projectID, endpoint, tokenEndpoint, clientID, clientAuthMethod string, withDS bool, oauthExtras string) string { dsConfig := "" if withDS { dsConfig = datasourcesConfig } - var attrsBlock strings.Builder - for _, a := range oauthAttrs { - if a != "" { - attrsBlock.WriteString("\n\t\t\t\t" + a) - } - } return fmt.Sprintf(` resource "mongodbatlas_metric_integration" "test" { project_id = %[1]q @@ -246,24 +252,26 @@ func configOauth(projectID, endpoint, tokenEndpoint, clientID, clientAuthMethod } %[7]s - `, projectID, endpoint, clientAuthMethod, tokenEndpoint, clientID, attrsBlock.String(), dsConfig) + `, projectID, endpoint, clientAuthMethod, tokenEndpoint, clientID, oauthExtras, dsConfig) } func configOauthClientSecret(projectID, endpoint, tokenEndpoint, clientID, clientSecret string, scopes []string, tokenRequestParams string, withDS bool) string { return configOauth(projectID, endpoint, tokenEndpoint, clientID, "CLIENT_SECRET", withDS, - fmt.Sprintf("client_secret = %q", clientSecret), - "scopes = "+hcl.StringSliceToHCL(scopes), - tokenRequestParams, + oauthExtrasHCL( + fmt.Sprintf("client_secret = %q", clientSecret), + "scopes = "+hcl.StringSliceToHCL(scopes), + tokenRequestParams, + ), ) } func configOauthPrivateKeyJWT(projectID, endpoint, tokenEndpoint, clientID string, scopes []string, tokenRequestParams string, withDS bool) string { - oauthAttrs := []string{} + extraAttrs := []string{} if len(scopes) > 0 { - oauthAttrs = append(oauthAttrs, "scopes = "+hcl.StringSliceToHCL(scopes)) + extraAttrs = append(extraAttrs, "scopes = "+hcl.StringSliceToHCL(scopes)) } - oauthAttrs = append(oauthAttrs, tokenRequestParams) - return configOauth(projectID, endpoint, tokenEndpoint, clientID, "PRIVATE_KEY_JWT", withDS, oauthAttrs...) + extraAttrs = append(extraAttrs, tokenRequestParams) + return configOauth(projectID, endpoint, tokenEndpoint, clientID, "PRIVATE_KEY_JWT", withDS, oauthExtrasHCL(extraAttrs...)) } // TestAccMetricIntegration_oauthClientSecret covers the CLIENT_SECRET OAuth path @@ -300,8 +308,7 @@ func TestAccMetricIntegration_oauthClientSecret(t *testing.T) { ImportState: true, ImportStateVerify: true, ImportStateVerifyIdentifierAttribute: "metric_integration_id", - // client_secret is write-only and not returned on GET, so it cannot match on import. - ImportStateVerifyIgnore: []string{"oauth.client_secret"}, + ImportStateVerifyIgnore: []string{"oauth.client_secret"}, }, }, }) @@ -345,8 +352,7 @@ func TestAccMetricIntegration_oauthPrivateKeyJWT(t *testing.T) { } // TestAccMetricIntegration_oauthPrivateKeyJWTRejectsClientSecret verifies the API rejects a -// client_secret set on a PRIVATE_KEY_JWT integration. The validation is server-side, so this -// step performs a real apply that is expected to fail with the API's 400. +// client_secret set on a PRIVATE_KEY_JWT integration. func TestAccMetricIntegration_oauthPrivateKeyJWTRejectsClientSecret(t *testing.T) { // TODO: remove once the OAuth metric integration fields are available in prod and before merging to master acc.SkipTestForCI(t) @@ -422,7 +428,6 @@ func checkOauthPrivateKeyJWT(scopes []string, tokenRequestParamsCount int, dsNam "oauth.signing_key_info.algorithm": "RS256", "headers_redacted.#": "0", } - // signing_key_info is read-only and present on both resource and data sources for PRIVATE_KEY_JWT. setChecks := []string{ "project_id", "metric_integration_id", "oauth.signing_key_info.kid", @@ -430,7 +435,6 @@ func checkOauthPrivateKeyJWT(scopes []string, tokenRequestParamsCount int, dsNam "oauth.signing_key_info.created_at", } checks := []resource.TestCheckFunc{ - // No client_secret is sent for PRIVATE_KEY_JWT, so it must not appear in state. resource.TestCheckNoResourceAttr(resourceName, "oauth.client_secret"), } if dsName != nil { From 85b96a4c1a1f367fafbdd070f4194660f73abfe4 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 16 Sep 2026 15:27:25 +0200 Subject: [PATCH 11/17] test: Assert oauth fields on the plural metric integration data source --- .../metricintegration/resource_test.go | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/internal/serviceapi/metricintegration/resource_test.go b/internal/serviceapi/metricintegration/resource_test.go index 5fe9f83b52..61afdde481 100644 --- a/internal/serviceapi/metricintegration/resource_test.go +++ b/internal/serviceapi/metricintegration/resource_test.go @@ -11,6 +11,8 @@ import ( "testing" "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/hashicorp/terraform-plugin-testing/knownvalue" + "github.com/hashicorp/terraform-plugin-testing/statecheck" "github.com/hashicorp/terraform-plugin-testing/terraform" "github.com/mongodb/terraform-provider-mongodbatlas/internal/testutil/acc" @@ -295,7 +297,20 @@ func TestAccMetricIntegration_oauthClientSecret(t *testing.T) { Steps: []resource.TestStep{ { Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret1, scopes1, "", true), - Check: checkOauthClientSecret(secret1, scopes1, 0, dsName), + ConfigStateChecks: []statecheck.StateCheck{ + acc.PluralResultCheck( + pluralDataSourceName, + "endpoint", + knownvalue.StringExact(oauthEndpoint), + map[string]knownvalue.Check{ + "oauth.client_auth_method": knownvalue.StringExact("CLIENT_SECRET"), + "oauth.client_id": knownvalue.StringExact(oauthClientID), + "oauth.token_endpoint": knownvalue.StringExact(oauthTokenEndpoint), + "oauth.scopes": knownvalue.SetExact([]knownvalue.Check{knownvalue.StringExact("metrics.write")}), + }, + ), + }, + Check: checkOauthClientSecret(secret1, scopes1, 0, dsName), }, { Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret2, scopes2, trParamsClientSecret, false), @@ -333,7 +348,21 @@ func TestAccMetricIntegration_oauthPrivateKeyJWT(t *testing.T) { Steps: []resource.TestStep{ { Config: configOauthPrivateKeyJWT(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, scopes1, trParamsPrivateKeyJWT, true), - Check: checkOauthPrivateKeyJWT(scopes1, 1, dsName), + ConfigStateChecks: []statecheck.StateCheck{ + acc.PluralResultCheck( + pluralDataSourceName, + "endpoint", + knownvalue.StringExact(oauthEndpoint), + map[string]knownvalue.Check{ + "oauth.client_auth_method": knownvalue.StringExact("PRIVATE_KEY_JWT"), + "oauth.client_id": knownvalue.StringExact(oauthClientID), + "oauth.token_endpoint": knownvalue.StringExact(oauthTokenEndpoint), + "oauth.token_request_params": knownvalue.MapExact(map[string]knownvalue.Check{"resource": knownvalue.StringExact("JPMC:URI:OTel")}), + "oauth.signing_key_info.algorithm": knownvalue.StringExact("RS256"), + }, + ), + }, + Check: checkOauthPrivateKeyJWT(scopes1, 1, dsName), }, { Config: configOauthPrivateKeyJWT(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, scopes2, trParamsPrivateKeyJWT, false), From d70e28903c813a8954e3dfbd7f961115e80fdb9f Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Wed, 16 Sep 2026 16:04:56 +0200 Subject: [PATCH 12/17] fix: Clear oauth scopes and token_request_params when removed from config --- .../serviceapi/metricintegration/resource_schema.go | 4 ++-- .../serviceapi/metricintegration/resource_test.go | 12 ++++++++++-- tools/codegen/config.yml | 4 ++++ tools/codegen/models/metric_integration.yaml | 4 ++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/internal/serviceapi/metricintegration/resource_schema.go b/internal/serviceapi/metricintegration/resource_schema.go index d8d290bb00..2ef6274440 100755 --- a/internal/serviceapi/metricintegration/resource_schema.go +++ b/internal/serviceapi/metricintegration/resource_schema.go @@ -175,10 +175,10 @@ type TFOauthModel struct { ClientAuthMethod types.String `tfsdk:"client_auth_method"` ClientId types.String `tfsdk:"client_id"` ClientSecret types.String `tfsdk:"client_secret" autogen:"sensitive"` - Scopes customtypes.SetValue[types.String] `tfsdk:"scopes"` + Scopes customtypes.SetValue[types.String] `tfsdk:"scopes" autogen:"sendnullasemptyonupdate"` SigningKeyInfo customtypes.ObjectValue[TFOauthSigningKeyInfoModel] `tfsdk:"signing_key_info" autogen:"omitjson"` TokenEndpoint types.String `tfsdk:"token_endpoint"` - TokenRequestParams customtypes.MapValue[types.String] `tfsdk:"token_request_params"` + TokenRequestParams customtypes.MapValue[types.String] `tfsdk:"token_request_params" autogen:"sendnullasemptyonupdate"` } type TFOauthSigningKeyInfoModel struct { Algorithm types.String `tfsdk:"algorithm" autogen:"omitjson"` diff --git a/internal/serviceapi/metricintegration/resource_test.go b/internal/serviceapi/metricintegration/resource_test.go index 61afdde481..31e36b0c5f 100644 --- a/internal/serviceapi/metricintegration/resource_test.go +++ b/internal/serviceapi/metricintegration/resource_test.go @@ -258,10 +258,14 @@ func configOauth(projectID, endpoint, tokenEndpoint, clientID, clientAuthMethod } func configOauthClientSecret(projectID, endpoint, tokenEndpoint, clientID, clientSecret string, scopes []string, tokenRequestParams string, withDS bool) string { + scopesAttr := "" + if scopes != nil { + scopesAttr = "scopes = " + hcl.StringSliceToHCL(scopes) + } return configOauth(projectID, endpoint, tokenEndpoint, clientID, "CLIENT_SECRET", withDS, oauthExtrasHCL( fmt.Sprintf("client_secret = %q", clientSecret), - "scopes = "+hcl.StringSliceToHCL(scopes), + scopesAttr, tokenRequestParams, ), ) @@ -317,7 +321,11 @@ func TestAccMetricIntegration_oauthClientSecret(t *testing.T) { Check: checkOauthClientSecret(secret2, scopes2, 1, nil), }, { - Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret2, scopes2, trParamsClientSecret, false), + Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret2, nil, "", false), + Check: checkOauthClientSecret(secret2, nil, 0, nil), + }, + { + Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret2, nil, "", false), ResourceName: resourceName, ImportStateIdFunc: importStateIDFunc(resourceName), ImportState: true, diff --git a/tools/codegen/config.yml b/tools/codegen/config.yml index 909585d03b..cb356a7073 100644 --- a/tools/codegen/config.yml +++ b/tools/codegen/config.yml @@ -1669,6 +1669,10 @@ resources: description: "Shared client secret. Required when client_auth_method is `CLIENT_SECRET`, and rejected for `PRIVATE_KEY_JWT`. Encrypted at rest and never returned." oauth.signing_key_info: description: "Read-only metadata for the Atlas-managed signing key used by `PRIVATE_KEY_JWT`. Present only for that method. Register the jwks_uri with your identity provider. Atlas rotates the underlying key without changing this URL." + oauth.scopes: + request_body_usage: send_null_as_empty_on_update + oauth.token_request_params: + request_body_usage: send_null_as_empty_on_update headers: description: "Required for auth_type: HEADER. HTTP headers for authentication and configuration. Total size limit 2KB." datasources: diff --git a/tools/codegen/models/metric_integration.yaml b/tools/codegen/models/metric_integration.yaml index 9ea227fcc9..d3a7634aa8 100755 --- a/tools/codegen/models/metric_integration.yaml +++ b/tools/codegen/models/metric_integration.yaml @@ -215,7 +215,7 @@ schema: tf_schema_name: scopes tf_model_name: Scopes api_name: scopes - req_body_usage: all_request_bodies + req_body_usage: send_null_as_empty_on_update sensitive: false create_only: false present_in_any_response: true @@ -306,7 +306,7 @@ schema: tf_schema_name: token_request_params tf_model_name: TokenRequestParams api_name: tokenRequestParams - req_body_usage: all_request_bodies + req_body_usage: send_null_as_empty_on_update sensitive: false create_only: false present_in_any_response: true From 63eab95fc875691ef03dc390b121418dc14b8974 Mon Sep 17 00:00:00 2001 From: Mar Cabrera <102970376+marcabreracast@users.noreply.github.com> Date: Thu, 17 Sep 2026 10:06:37 +0200 Subject: [PATCH 13/17] Update internal/serviceapi/metricintegration/resource_test.go Co-authored-by: Agustin Bettati --- internal/serviceapi/metricintegration/resource_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/serviceapi/metricintegration/resource_test.go b/internal/serviceapi/metricintegration/resource_test.go index 31e36b0c5f..005eb5df96 100644 --- a/internal/serviceapi/metricintegration/resource_test.go +++ b/internal/serviceapi/metricintegration/resource_test.go @@ -40,7 +40,7 @@ const ( oauthEndpoint = "https://192.0.2.1/v1/metrics" // Pre-rendered token_request_params HCL fragments, passed to the config builders. trParamsClientSecret = `token_request_params = { resource = "atlas:otel:test" }` - trParamsPrivateKeyJWT = `token_request_params = { resource = "JPMC:URI:OTel" }` + trParamsPrivateKeyJWT = `token_request_params = { resource = "TEST:URI:OTel" }` ) // TestAccMetricIntegration_basic covers the base HEADER auth path. Serial because the project From c1c7b03d98c9f90be05ff4c831e5b30cf70042ac Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Thu, 17 Sep 2026 15:59:13 +0200 Subject: [PATCH 14/17] chore: Reference CLOUDP-447244 in OAuth test CI gate TODO --- internal/serviceapi/metricintegration/resource_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/serviceapi/metricintegration/resource_test.go b/internal/serviceapi/metricintegration/resource_test.go index 67a9453320..3559bc072f 100644 --- a/internal/serviceapi/metricintegration/resource_test.go +++ b/internal/serviceapi/metricintegration/resource_test.go @@ -282,7 +282,7 @@ func configOauthPrivateKeyJWT(projectID, endpoint, tokenEndpoint, clientID strin // TestAccMetricIntegration_oauthClientSecret covers the CLIENT_SECRET OAuth path func TestAccMetricIntegration_oauthClientSecret(t *testing.T) { - // TODO: remove once the OAuth metric integration fields are available in prod and before merging to master + // TODO(CLOUDP-447244): remove this gate before merging to master. acc.SkipTestForCI(t) projectID := acc.ProjectIDExecution(t) var ( @@ -339,7 +339,7 @@ func TestAccMetricIntegration_oauthClientSecret(t *testing.T) { // TestAccMetricIntegration_oauthPrivateKeyJWT covers the PRIVATE_KEY_JWT OAuth path func TestAccMetricIntegration_oauthPrivateKeyJWT(t *testing.T) { - // TODO: remove once the OAuth metric integration fields are available in prod and before merging to master + // TODO(CLOUDP-447244): remove this gate before merging to master. acc.SkipTestForCI(t) projectID := acc.ProjectIDExecution(t) var ( @@ -391,7 +391,7 @@ func TestAccMetricIntegration_oauthPrivateKeyJWT(t *testing.T) { // TestAccMetricIntegration_oauthPrivateKeyJWTRejectsClientSecret verifies the API rejects a // client_secret set on a PRIVATE_KEY_JWT integration. func TestAccMetricIntegration_oauthPrivateKeyJWTRejectsClientSecret(t *testing.T) { - // TODO: remove once the OAuth metric integration fields are available in prod and before merging to master + // TODO(CLOUDP-447244): remove this gate before merging to master. acc.SkipTestForCI(t) projectID := acc.ProjectIDExecution(t) From 328cf3d71b67554d6e40e9ae1a7304556eedb9b9 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Thu, 17 Sep 2026 17:55:28 +0200 Subject: [PATCH 15/17] chore: Enrich metric integration OAuth changelog entries --- .changelog/4737.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.changelog/4737.txt b/.changelog/4737.txt index f4a20310cf..e9f50ff76a 100644 --- a/.changelog/4737.txt +++ b/.changelog/4737.txt @@ -1,11 +1,11 @@ ```release-note:enhancement -resource/mongodbatlas_metric_integration: Adds OAuth 2.0 support +resource/mongodbatlas_metric_integration: Adds OAuth 2.0 support via a new `oauth` block (client-secret or private-key JWT authentication) ``` ```release-note:enhancement -data-source/mongodbatlas_metric_integration: Adds OAuth 2.0 support +data-source/mongodbatlas_metric_integration: Adds OAuth 2.0 support via a new `oauth` block (client-secret or private-key JWT authentication) ``` ```release-note:enhancement -data-source/mongodbatlas_metric_integrations: Adds OAuth 2.0 support +data-source/mongodbatlas_metric_integrations: Adds OAuth 2.0 support via a new `oauth` block (client-secret or private-key JWT authentication) ``` From 3dd8b4b911c9364cca98888da50410906111b168 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Fri, 18 Sep 2026 10:18:50 +0200 Subject: [PATCH 16/17] Add acceptance test for switch from OAuth2 to HEADER --- .../metricintegration/resource_test.go | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/internal/serviceapi/metricintegration/resource_test.go b/internal/serviceapi/metricintegration/resource_test.go index 3559bc072f..9477444956 100644 --- a/internal/serviceapi/metricintegration/resource_test.go +++ b/internal/serviceapi/metricintegration/resource_test.go @@ -411,6 +411,52 @@ func TestAccMetricIntegration_oauthPrivateKeyJWTRejectsClientSecret(t *testing.T }) } +// TestAccMetricIntegration_oauthToHeader verifies switching an OAUTH2 integration to HEADER clears +// the stored oauth configuration. +func TestAccMetricIntegration_oauthToHeader(t *testing.T) { + // TODO(CLOUDP-447244): remove this gate before merging to master. + acc.SkipTestForCI(t) + projectID := acc.ProjectIDExecution(t) + var ( + endpoint = os.Getenv("MONGODB_ATLAS_METRIC_INTEGRATION_ENDPOINT") + apiKey = os.Getenv("MONGODB_ATLAS_METRIC_INTEGRATION_API_KEY") + integrationType = "OTEL" + providerType = "CUSTOM" + aggregation = "DELTA" + metricSelection = []string{"ATLAS_STREAM_PROCESSING"} + clientSecret = "client-secret-initial" + scopes = []string{"metrics.write"} + ) + + headerConfig := configBasic(projectID, integrationType, providerType, aggregation, endpoint, apiKey, metricSelection, false, false) + headerCheck := resource.ComposeTestCheckFunc( + checkBasic(integrationType, providerType, aggregation, endpoint, metricSelection, false, false), + resource.TestCheckNoResourceAttr(resourceName, "oauth.client_auth_method"), + resource.TestCheckNoResourceAttr(resourceName, "oauth.client_secret"), + ) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.PreCheckBasic(t); preCheckMetricIntegration(t) }, + ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, + CheckDestroy: checkDestroy, + Steps: []resource.TestStep{ + { + Config: configOauthClientSecret(projectID, endpoint, oauthTokenEndpoint, oauthClientID, clientSecret, scopes, "", false), + Check: checkOauthClientSecret(clientSecret, scopes, 0, nil), + }, + { + Config: headerConfig, + Check: headerCheck, + }, + { + Config: headerConfig, + PlanOnly: true, + ExpectNonEmptyPlan: false, + }, + }, + }) +} + func configOauthPrivateKeyJWTWithClientSecret(projectID string) string { return fmt.Sprintf(` resource "mongodbatlas_metric_integration" "test" { From 677b7051625df1dc3c1ab4eab64e67d666d8a918 Mon Sep 17 00:00:00 2001 From: Mar Cabrera Date: Fri, 18 Sep 2026 14:28:26 +0200 Subject: [PATCH 17/17] Address PR comments --- .../metricintegration/resource_test.go | 354 +++++++++--------- 1 file changed, 169 insertions(+), 185 deletions(-) diff --git a/internal/serviceapi/metricintegration/resource_test.go b/internal/serviceapi/metricintegration/resource_test.go index 9477444956..3cd9ab6501 100644 --- a/internal/serviceapi/metricintegration/resource_test.go +++ b/internal/serviceapi/metricintegration/resource_test.go @@ -82,14 +82,182 @@ func TestAccMetricIntegration_basic(t *testing.T) { }, }) } +func TestAccMetricIntegration_oauthClientSecret(t *testing.T) { + // TODO(CLOUDP-447244): remove this gate before merging to master. + acc.SkipTestForCI(t) + projectID := acc.ProjectIDExecution(t) + var ( + secret1 = "client-secret-initial" + secret2 = "client-secret-rotated" + scopes1 = []string{"metrics.write"} + scopes2 = []string{"metrics.write", "monitoring.read"} + dsName = new(dataSourceName) + ) + + // Test is serial because the project allows at most 2 metric integrations and tests share it. + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.PreCheckBasic(t) }, + ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, + CheckDestroy: checkDestroy, + Steps: []resource.TestStep{ + { + Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret1, scopes1, "", true), + ConfigStateChecks: []statecheck.StateCheck{ + acc.PluralResultCheck( + pluralDataSourceName, + "endpoint", + knownvalue.StringExact(oauthEndpoint), + map[string]knownvalue.Check{ + "oauth.client_auth_method": knownvalue.StringExact("CLIENT_SECRET"), + "oauth.client_id": knownvalue.StringExact(oauthClientID), + "oauth.token_endpoint": knownvalue.StringExact(oauthTokenEndpoint), + "oauth.scopes": knownvalue.SetExact([]knownvalue.Check{knownvalue.StringExact("metrics.write")}), + }, + ), + }, + Check: checkOauthClientSecret(secret1, scopes1, 0, dsName), + }, + { + Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret2, scopes2, trParamsClientSecret, false), + Check: checkOauthClientSecret(secret2, scopes2, 1, nil), + }, + { + Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret2, nil, "", false), + Check: checkOauthClientSecret(secret2, nil, 0, nil), + }, + { + Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret2, nil, "", false), + ResourceName: resourceName, + ImportStateIdFunc: importStateIDFunc(resourceName), + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "metric_integration_id", + ImportStateVerifyIgnore: []string{"oauth.client_secret"}, + }, + }, + }) +} + +// TestAccMetricIntegration_oauthPrivateKeyJWT covers the PRIVATE_KEY_JWT OAuth path +func TestAccMetricIntegration_oauthPrivateKeyJWT(t *testing.T) { + // TODO(CLOUDP-447244): remove this gate before merging to master. + acc.SkipTestForCI(t) + projectID := acc.ProjectIDExecution(t) + var ( + scopes1 = []string{} + scopes2 = []string{"metrics.write"} + dsName = new(dataSourceName) + ) + + // Test is serial because the project allows at most 2 metric integrations and tests share it. + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.PreCheckBasic(t) }, + ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, + CheckDestroy: checkDestroy, + Steps: []resource.TestStep{ + { + Config: configOauthPrivateKeyJWT(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, scopes1, trParamsPrivateKeyJWT, true), + ConfigStateChecks: []statecheck.StateCheck{ + acc.PluralResultCheck( + pluralDataSourceName, + "endpoint", + knownvalue.StringExact(oauthEndpoint), + map[string]knownvalue.Check{ + "oauth.client_auth_method": knownvalue.StringExact("PRIVATE_KEY_JWT"), + "oauth.client_id": knownvalue.StringExact(oauthClientID), + "oauth.token_endpoint": knownvalue.StringExact(oauthTokenEndpoint), + "oauth.token_request_params": knownvalue.MapExact(map[string]knownvalue.Check{"resource": knownvalue.StringExact("TEST:URI:OTel")}), + "oauth.signing_key_info.algorithm": knownvalue.StringExact("RS256"), + }, + ), + }, + Check: checkOauthPrivateKeyJWT(scopes1, 1, dsName), + }, + { + Config: configOauthPrivateKeyJWT(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, scopes2, trParamsPrivateKeyJWT, false), + Check: checkOauthPrivateKeyJWT(scopes2, 1, nil), + }, + { + Config: configOauthPrivateKeyJWT(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, scopes2, trParamsPrivateKeyJWT, false), + ResourceName: resourceName, + ImportStateIdFunc: importStateIDFunc(resourceName), + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIdentifierAttribute: "metric_integration_id", + }, + }, + }) +} + +// TestAccMetricIntegration_oauthPrivateKeyJWTRejectsClientSecret verifies the API rejects a +// client_secret set on a PRIVATE_KEY_JWT integration. +func TestAccMetricIntegration_oauthPrivateKeyJWTRejectsClientSecret(t *testing.T) { + // TODO(CLOUDP-447244): remove this gate before merging to master. + acc.SkipTestForCI(t) + projectID := acc.ProjectIDExecution(t) + + // Test is serial because the project allows at most 2 metric integrations and tests share it. + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.PreCheckBasic(t) }, + ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, + CheckDestroy: checkDestroy, + Steps: []resource.TestStep{ + { + Config: configOauthPrivateKeyJWTWithClientSecret(projectID), + ExpectError: regexp.MustCompile( + `oauth.clientSecret must not be set when clientAuthMethod is`, + ), + }, + }, + }) +} + +// TestAccMetricIntegration_oauthToHeader verifies switching an OAUTH2 integration to HEADER clears +// the stored oauth configuration. +func TestAccMetricIntegration_oauthToHeader(t *testing.T) { + // TODO(CLOUDP-447244): remove this gate before merging to master. + acc.SkipTestForCI(t) + projectID := acc.ProjectIDExecution(t) + var ( + endpoint = os.Getenv("MONGODB_ATLAS_METRIC_INTEGRATION_ENDPOINT") + apiKey = os.Getenv("MONGODB_ATLAS_METRIC_INTEGRATION_API_KEY") + integrationType = "OTEL" + providerType = "CUSTOM" + aggregation = "DELTA" + metricSelection = []string{"ATLAS_STREAM_PROCESSING"} + clientSecret = "client-secret-initial" + scopes = []string{"metrics.write"} + ) + headerConfig := configBasic(projectID, integrationType, providerType, aggregation, endpoint, apiKey, metricSelection, false, false) + headerCheck := resource.ComposeTestCheckFunc( + checkBasic(integrationType, providerType, aggregation, endpoint, metricSelection, false, false), + resource.TestCheckNoResourceAttr(resourceName, "oauth.client_auth_method"), + resource.TestCheckNoResourceAttr(resourceName, "oauth.client_secret"), + ) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.PreCheckBasic(t); preCheckMetricIntegration(t) }, + ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, + CheckDestroy: checkDestroy, + Steps: []resource.TestStep{ + { + Config: configOauthClientSecret(projectID, endpoint, oauthTokenEndpoint, oauthClientID, clientSecret, scopes, "", false), + Check: checkOauthClientSecret(clientSecret, scopes, 0, nil), + }, + { + Config: headerConfig, + Check: headerCheck, + }, + }, + }) +} func preCheckMetricIntegration(tb testing.TB) { tb.Helper() if os.Getenv("MONGODB_ATLAS_METRIC_INTEGRATION_ENDPOINT") == "" || os.Getenv("MONGODB_ATLAS_METRIC_INTEGRATION_API_KEY") == "" { tb.Fatal("`MONGODB_ATLAS_METRIC_INTEGRATION_ENDPOINT` and `MONGODB_ATLAS_METRIC_INTEGRATION_API_KEY` must be set for acceptance testing") } } - func configBasic(projectID, integrationType, providerType, aggregation, endpoint, headerValue string, metricSelection []string, extraHeader, withDS bool) string { selectionHCL := hcl.StringSliceToHCL(metricSelection) extraHeaderHCL := "" @@ -125,7 +293,6 @@ func configBasic(projectID, integrationType, providerType, aggregation, endpoint %[9]s `, projectID, integrationType, providerType, aggregation, endpoint, selectionHCL, headerValue, extraHeaderHCL, dsConfig) } - func checkBasic(integrationType, providerType, aggregation, endpoint string, metricSelection []string, extraHeader, withDS bool) resource.TestCheckFunc { headerCount := "1" if extraHeader { @@ -151,7 +318,6 @@ func checkBasic(integrationType, providerType, aggregation, endpoint string, met checks = append(checks, acc.CheckRSAndDS(resourceName, dsName, nil, setChecks, mapChecks, checkExists(resourceName))) return resource.ComposeAggregateTestCheckFunc(checks...) } - func checkExists(resourceName string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[resourceName] @@ -175,7 +341,6 @@ func checkExists(resourceName string) resource.TestCheckFunc { return fmt.Errorf("metric integration for project_id %s with id %s does not exist, status %d", projectID, integrationID, resp.StatusCode) } } - func checkDestroy(state *terraform.State) error { for name, rs := range state.RootModule().Resources { if name != resourceName { @@ -201,7 +366,6 @@ func checkDestroy(state *terraform.State) error { } return nil } - func importStateIDFunc(resourceName string) resource.ImportStateIdFunc { return func(s *terraform.State) (string, error) { rs, ok := s.RootModule().Resources[resourceName] @@ -256,7 +420,6 @@ func configOauth(projectID, endpoint, tokenEndpoint, clientID, clientAuthMethod %[7]s `, projectID, endpoint, clientAuthMethod, tokenEndpoint, clientID, oauthExtras, dsConfig) } - func configOauthClientSecret(projectID, endpoint, tokenEndpoint, clientID, clientSecret string, scopes []string, tokenRequestParams string, withDS bool) string { scopesAttr := "" if scopes != nil { @@ -270,7 +433,6 @@ func configOauthClientSecret(projectID, endpoint, tokenEndpoint, clientID, clien ), ) } - func configOauthPrivateKeyJWT(projectID, endpoint, tokenEndpoint, clientID string, scopes []string, tokenRequestParams string, withDS bool) string { extraAttrs := []string{} if len(scopes) > 0 { @@ -281,182 +443,6 @@ func configOauthPrivateKeyJWT(projectID, endpoint, tokenEndpoint, clientID strin } // TestAccMetricIntegration_oauthClientSecret covers the CLIENT_SECRET OAuth path -func TestAccMetricIntegration_oauthClientSecret(t *testing.T) { - // TODO(CLOUDP-447244): remove this gate before merging to master. - acc.SkipTestForCI(t) - projectID := acc.ProjectIDExecution(t) - var ( - secret1 = "client-secret-initial" - secret2 = "client-secret-rotated" - scopes1 = []string{"metrics.write"} - scopes2 = []string{"metrics.write", "monitoring.read"} - dsName = new(dataSourceName) - ) - - // Test is serial because the project allows at most 2 metric integrations and tests share it. - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.PreCheckBasic(t) }, - ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, - CheckDestroy: checkDestroy, - Steps: []resource.TestStep{ - { - Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret1, scopes1, "", true), - ConfigStateChecks: []statecheck.StateCheck{ - acc.PluralResultCheck( - pluralDataSourceName, - "endpoint", - knownvalue.StringExact(oauthEndpoint), - map[string]knownvalue.Check{ - "oauth.client_auth_method": knownvalue.StringExact("CLIENT_SECRET"), - "oauth.client_id": knownvalue.StringExact(oauthClientID), - "oauth.token_endpoint": knownvalue.StringExact(oauthTokenEndpoint), - "oauth.scopes": knownvalue.SetExact([]knownvalue.Check{knownvalue.StringExact("metrics.write")}), - }, - ), - }, - Check: checkOauthClientSecret(secret1, scopes1, 0, dsName), - }, - { - Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret2, scopes2, trParamsClientSecret, false), - Check: checkOauthClientSecret(secret2, scopes2, 1, nil), - }, - { - Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret2, nil, "", false), - Check: checkOauthClientSecret(secret2, nil, 0, nil), - }, - { - Config: configOauthClientSecret(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, secret2, nil, "", false), - ResourceName: resourceName, - ImportStateIdFunc: importStateIDFunc(resourceName), - ImportState: true, - ImportStateVerify: true, - ImportStateVerifyIdentifierAttribute: "metric_integration_id", - ImportStateVerifyIgnore: []string{"oauth.client_secret"}, - }, - }, - }) -} - -// TestAccMetricIntegration_oauthPrivateKeyJWT covers the PRIVATE_KEY_JWT OAuth path -func TestAccMetricIntegration_oauthPrivateKeyJWT(t *testing.T) { - // TODO(CLOUDP-447244): remove this gate before merging to master. - acc.SkipTestForCI(t) - projectID := acc.ProjectIDExecution(t) - var ( - scopes1 = []string{} - scopes2 = []string{"metrics.write"} - dsName = new(dataSourceName) - ) - - // Test is serial because the project allows at most 2 metric integrations and tests share it. - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.PreCheckBasic(t) }, - ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, - CheckDestroy: checkDestroy, - Steps: []resource.TestStep{ - { - Config: configOauthPrivateKeyJWT(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, scopes1, trParamsPrivateKeyJWT, true), - ConfigStateChecks: []statecheck.StateCheck{ - acc.PluralResultCheck( - pluralDataSourceName, - "endpoint", - knownvalue.StringExact(oauthEndpoint), - map[string]knownvalue.Check{ - "oauth.client_auth_method": knownvalue.StringExact("PRIVATE_KEY_JWT"), - "oauth.client_id": knownvalue.StringExact(oauthClientID), - "oauth.token_endpoint": knownvalue.StringExact(oauthTokenEndpoint), - "oauth.token_request_params": knownvalue.MapExact(map[string]knownvalue.Check{"resource": knownvalue.StringExact("TEST:URI:OTel")}), - "oauth.signing_key_info.algorithm": knownvalue.StringExact("RS256"), - }, - ), - }, - Check: checkOauthPrivateKeyJWT(scopes1, 1, dsName), - }, - { - Config: configOauthPrivateKeyJWT(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, scopes2, trParamsPrivateKeyJWT, false), - Check: checkOauthPrivateKeyJWT(scopes2, 1, nil), - }, - { - Config: configOauthPrivateKeyJWT(projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID, scopes2, trParamsPrivateKeyJWT, false), - ResourceName: resourceName, - ImportStateIdFunc: importStateIDFunc(resourceName), - ImportState: true, - ImportStateVerify: true, - ImportStateVerifyIdentifierAttribute: "metric_integration_id", - }, - }, - }) -} - -// TestAccMetricIntegration_oauthPrivateKeyJWTRejectsClientSecret verifies the API rejects a -// client_secret set on a PRIVATE_KEY_JWT integration. -func TestAccMetricIntegration_oauthPrivateKeyJWTRejectsClientSecret(t *testing.T) { - // TODO(CLOUDP-447244): remove this gate before merging to master. - acc.SkipTestForCI(t) - projectID := acc.ProjectIDExecution(t) - - // Test is serial because the project allows at most 2 metric integrations and tests share it. - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.PreCheckBasic(t) }, - ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, - CheckDestroy: checkDestroy, - Steps: []resource.TestStep{ - { - Config: configOauthPrivateKeyJWTWithClientSecret(projectID), - ExpectError: regexp.MustCompile( - `oauth.clientSecret must not be set when clientAuthMethod is`, - ), - }, - }, - }) -} - -// TestAccMetricIntegration_oauthToHeader verifies switching an OAUTH2 integration to HEADER clears -// the stored oauth configuration. -func TestAccMetricIntegration_oauthToHeader(t *testing.T) { - // TODO(CLOUDP-447244): remove this gate before merging to master. - acc.SkipTestForCI(t) - projectID := acc.ProjectIDExecution(t) - var ( - endpoint = os.Getenv("MONGODB_ATLAS_METRIC_INTEGRATION_ENDPOINT") - apiKey = os.Getenv("MONGODB_ATLAS_METRIC_INTEGRATION_API_KEY") - integrationType = "OTEL" - providerType = "CUSTOM" - aggregation = "DELTA" - metricSelection = []string{"ATLAS_STREAM_PROCESSING"} - clientSecret = "client-secret-initial" - scopes = []string{"metrics.write"} - ) - - headerConfig := configBasic(projectID, integrationType, providerType, aggregation, endpoint, apiKey, metricSelection, false, false) - headerCheck := resource.ComposeTestCheckFunc( - checkBasic(integrationType, providerType, aggregation, endpoint, metricSelection, false, false), - resource.TestCheckNoResourceAttr(resourceName, "oauth.client_auth_method"), - resource.TestCheckNoResourceAttr(resourceName, "oauth.client_secret"), - ) - - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.PreCheckBasic(t); preCheckMetricIntegration(t) }, - ProtoV6ProviderFactories: acc.TestAccProviderV6Factories, - CheckDestroy: checkDestroy, - Steps: []resource.TestStep{ - { - Config: configOauthClientSecret(projectID, endpoint, oauthTokenEndpoint, oauthClientID, clientSecret, scopes, "", false), - Check: checkOauthClientSecret(clientSecret, scopes, 0, nil), - }, - { - Config: headerConfig, - Check: headerCheck, - }, - { - Config: headerConfig, - PlanOnly: true, - ExpectNonEmptyPlan: false, - }, - }, - }) -} - func configOauthPrivateKeyJWTWithClientSecret(projectID string) string { return fmt.Sprintf(` resource "mongodbatlas_metric_integration" "test" { @@ -477,7 +463,6 @@ func configOauthPrivateKeyJWTWithClientSecret(projectID string) string { } `, projectID, oauthEndpoint, oauthTokenEndpoint, oauthClientID) } - func checkOauthClientSecret(clientSecret string, scopes []string, tokenRequestParamsCount int, dsName *string) resource.TestCheckFunc { mapChecks := map[string]string{ "auth_type": "OAUTH2", @@ -499,7 +484,6 @@ func checkOauthClientSecret(clientSecret string, scopes []string, tokenRequestPa checks = append(checks, acc.CheckRSAndDS(resourceName, dsName, nil, setChecks, mapChecks, checkExists(resourceName))) return resource.ComposeAggregateTestCheckFunc(checks...) } - func checkOauthPrivateKeyJWT(scopes []string, tokenRequestParamsCount int, dsName *string) resource.TestCheckFunc { mapChecks := map[string]string{ "auth_type": "OAUTH2",