{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/mongodb/main/json-schema/mongodb-federation-identity-provider-schema.json",
  "title": "FederationIdentityProvider",
  "x-generated": "2026-10-03",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/mongodb-federated-authentication-api-openapi.yml#/components/schemas/FederationIdentityProvider",
  "oneOf": [
    {
      "$ref": "#/$defs/FederationSamlIdentityProvider"
    },
    {
      "$ref": "#/$defs/FederationOidcWorkforceIdentityProvider"
    },
    {
      "$ref": "#/$defs/FederationOidcWorkloadIdentityProvider"
    }
  ],
  "properties": {
    "associatedOrgs": {
      "description": "List that contains the connected organization configurations associated with the identity provider.",
      "items": {
        "$ref": "#/$defs/ConnectedOrgConfig"
      },
      "type": "array",
      "uniqueItems": true
    },
    "createdAt": {
      "description": "Date that the identity provider was created on. This parameter expresses its value in the ISO 8601 timestamp format in UTC.",
      "format": "date-time",
      "readOnly": true,
      "type": "string"
    },
    "description": {
      "description": "The description of the identity provider.",
      "type": "string"
    },
    "displayName": {
      "description": "Human-readable label that identifies the identity provider.",
      "type": "string"
    },
    "id": {
      "description": "Unique 24-hexadecimal digit string that identifies the identity provider.",
      "pattern": "^([a-f0-9]{24})$",
      "readOnly": true,
      "type": "string"
    },
    "idpType": {
      "description": "String enum that indicates the type of the identity provider. Default is WORKFORCE.",
      "enum": [
        "WORKFORCE",
        "WORKLOAD"
      ],
      "type": "string"
    },
    "issuerUri": {
      "description": "Unique string that identifies the issuer of the SAML Assertion or OIDC metadata/discovery document URL.",
      "type": "string"
    },
    "oktaIdpId": {
      "description": "Legacy 20-hexadecimal digit string that identifies the identity provider.",
      "pattern": "^([a-f0-9]{20})$",
      "type": "string"
    },
    "protocol": {
      "description": "String enum that indicates the protocol of the identity provider. Either SAML or OIDC.",
      "enum": [
        "SAML",
        "OIDC"
      ],
      "type": "string"
    },
    "updatedAt": {
      "description": "Date that the identity provider was last updated on. This parameter expresses its value in the ISO 8601 timestamp format in UTC.",
      "format": "date-time",
      "readOnly": true,
      "type": "string"
    }
  },
  "required": [
    "id",
    "oktaIdpId"
  ],
  "type": "object",
  "$defs": {
    "AuthFederationRoleMapping": {
      "description": "Mapping settings that link one IdP and MongoDB Cloud.",
      "properties": {
        "externalGroupName": {
          "description": "Unique human-readable label that identifies the identity provider group to which this role mapping applies.",
          "maxLength": 200,
          "minLength": 1,
          "type": "string"
        },
        "id": {
          "description": "Unique 24-hexadecimal digit string that identifies this role mapping.",
          "pattern": "^([a-f0-9]{24})$",
          "readOnly": true,
          "type": "string"
        },
        "roleAssignments": {
          "description": "Atlas roles and the unique identifiers of the groups and organizations associated with each role. The array must include at least one element with an Organization role and its respective `orgId`. Each element in the array can have a value for `orgId` or `groupId`, but not both.",
          "items": {
            "$ref": "#/$defs/ConnectedOrgConfigRoleAssignment"
          },
          "type": "array",
          "uniqueItems": true
        }
      },
      "required": [
        "externalGroupName",
        "roleAssignments"
      ],
      "title": "Federated Authentication Role Mapping",
      "type": "object"
    },
    "ConnectedOrgConfig": {
      "properties": {
        "dataAccessIdentityProviderIds": {
          "description": "The collection of unique ids representing the identity providers that can be used for data access in this organization.",
          "items": {
            "description": "Unique 24-hexadecimal digit string that represents the id of the identity providers that can be used for data access in this organization.",
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "domainAllowList": {
          "description": "Approved domains that restrict users who can join the organization based on their email address.",
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "domainRestrictionEnabled": {
          "description": "Value that indicates whether domain restriction is enabled for this connected organization.",
          "type": "boolean"
        },
        "identityProviderId": {
          "description": "Legacy 20-hexadecimal digit string that identifies the UI access identity provider that this connected organization configuration is associated with. This id can be found within the Federation Management Console > Identity Providers tab by clicking the info icon in the IdP ID row of a configured identity provider.",
          "pattern": "^([a-f0-9]{20})$",
          "type": "string"
        },
        "orgId": {
          "description": "Unique 24-hexadecimal digit string that identifies the connected organization configuration.",
          "pattern": "^([a-f0-9]{24})$",
          "readOnly": true,
          "type": "string"
        },
        "postAuthRoleGrants": {
          "description": "Atlas roles that are granted to a user in this organization after authenticating. Roles are a human-readable label that identifies the collection of privileges that MongoDB Cloud grants a specific MongoDB Cloud user. These roles can only be organization specific roles.",
          "items": {
            "enum": [
              "ORG_OWNER",
              "ORG_MEMBER",
              "ORG_GROUP_CREATOR",
              "ORG_BILLING_ADMIN",
              "ORG_BILLING_READ_ONLY",
              "ORG_STREAM_PROCESSING_ADMIN",
              "ORG_READ_ONLY"
            ],
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "roleMappings": {
          "description": "Role mappings that are configured in this organization.",
          "items": {
            "$ref": "#/$defs/AuthFederationRoleMapping"
          },
          "type": "array",
          "uniqueItems": true
        },
        "userConflicts": {
          "description": "List that contains the users who have an email address that doesn't match any domain on the allowed list.",
          "items": {
            "$ref": "#/$defs/FederatedUser"
          },
          "type": "array"
        }
      },
      "required": [
        "domainRestrictionEnabled",
        "orgId"
      ],
      "type": "object"
    },
    "ConnectedOrgConfigRoleAssignment": {
      "properties": {
        "groupId": {
          "description": "Unique 24-hexadecimal digit string that identifies the project to which this role belongs. Each element within `roleAssignments` can have a value for `groupId` or `orgId`, but not both.",
          "pattern": "^([a-f0-9]{24})$",
          "type": "string"
        },
        "orgId": {
          "description": "Unique 24-hexadecimal digit string that identifies the organization to which this role belongs. Each element within `roleAssignments` can have a value for `orgId` or `groupId`, but not both.",
          "pattern": "^([a-f0-9]{24})$",
          "type": "string"
        },
        "role": {
          "description": "Human-readable label that identifies the collection of privileges that MongoDB Cloud grants a specific API key, MongoDB Cloud user, or MongoDB Cloud team. These roles include organization- and project-level roles.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "FederatedUser": {
      "description": "MongoDB Cloud user linked to this federated authentication.",
      "properties": {
        "emailAddress": {
          "description": "Email address of the MongoDB Cloud user linked to the federated organization.",
          "format": "email",
          "type": "string"
        },
        "federationSettingsId": {
          "description": "Unique 24-hexadecimal digit string that identifies the federation to which this MongoDB Cloud user belongs.",
          "pattern": "^([a-f0-9]{24})$",
          "type": "string"
        },
        "firstName": {
          "description": "First or given name that belongs to the MongoDB Cloud user.",
          "type": "string"
        },
        "lastName": {
          "description": "Last name, family name, or surname that belongs to the MongoDB Cloud user.",
          "type": "string"
        },
        "userId": {
          "description": "Unique 24-hexadecimal digit string that identifies this user.",
          "pattern": "^([a-f0-9]{24})$",
          "readOnly": true,
          "type": "string"
        }
      },
      "required": [
        "emailAddress",
        "federationSettingsId",
        "firstName",
        "lastName"
      ],
      "title": "Federated User",
      "type": "object"
    },
    "FederationOidcWorkforceIdentityProvider": {
      "properties": {
        "associatedDomains": {
          "description": "List that contains the domains associated with the identity provider.",
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "associatedOrgs": {
          "description": "List that contains the connected organization configurations associated with the identity provider.",
          "items": {
            "$ref": "#/$defs/ConnectedOrgConfig"
          },
          "type": "array",
          "uniqueItems": true
        },
        "audience": {
          "description": "Identifier of the intended recipient of the token.",
          "type": "string"
        },
        "authorizationType": {
          "description": "Indicates whether authorization is granted based on group membership or user ID.",
          "enum": [
            "GROUP",
            "USER"
          ],
          "type": "string"
        },
        "clientId": {
          "description": "Client identifier that is assigned to an application by the Identity Provider.",
          "type": "string"
        },
        "createdAt": {
          "description": "Date that the identity provider was created on. This parameter expresses its value in the ISO 8601 timestamp format in UTC.",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "description": {
          "description": "The description of the identity provider.",
          "type": "string"
        },
        "displayName": {
          "description": "Human-readable label that identifies the identity provider.",
          "type": "string"
        },
        "groupsClaim": {
          "description": "Identifier of the claim which contains IdP Group IDs in the token.",
          "type": "string"
        },
        "id": {
          "description": "Unique 24-hexadecimal digit string that identifies the identity provider.",
          "pattern": "^([a-f0-9]{24})$",
          "readOnly": true,
          "type": "string"
        },
        "idpType": {
          "description": "String enum that indicates the type of the identity provider. Default is WORKFORCE.",
          "enum": [
            "WORKFORCE",
            "WORKLOAD"
          ],
          "type": "string"
        },
        "issuerUri": {
          "description": "Unique string that identifies the issuer of the SAML Assertion or OIDC metadata/discovery document URL.",
          "type": "string"
        },
        "oktaIdpId": {
          "description": "Legacy 20-hexadecimal digit string that identifies the identity provider.",
          "pattern": "^([a-f0-9]{20})$",
          "type": "string"
        },
        "protocol": {
          "description": "String enum that indicates the protocol of the identity provider. Either SAML or OIDC.",
          "enum": [
            "SAML",
            "OIDC"
          ],
          "type": "string"
        },
        "requestedScopes": {
          "description": "Scopes that MongoDB applications will request from the authorization endpoint.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "updatedAt": {
          "description": "Date that the identity provider was last updated on. This parameter expresses its value in the ISO 8601 timestamp format in UTC.",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "userClaim": {
          "description": "Identifier of the claim which contains the user ID in the token.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "oktaIdpId"
      ],
      "title": "OIDC WORKFORCE",
      "type": "object"
    },
    "FederationOidcWorkloadIdentityProvider": {
      "properties": {
        "associatedOrgs": {
          "description": "List that contains the connected organization configurations associated with the identity provider.",
          "items": {
            "$ref": "#/$defs/ConnectedOrgConfig"
          },
          "type": "array",
          "uniqueItems": true
        },
        "audience": {
          "description": "Identifier of the intended recipient of the token.",
          "type": "string"
        },
        "authorizationType": {
          "description": "Indicates whether authorization is granted based on group membership or user ID.",
          "enum": [
            "GROUP",
            "USER"
          ],
          "type": "string"
        },
        "createdAt": {
          "description": "Date that the identity provider was created on. This parameter expresses its value in the ISO 8601 timestamp format in UTC.",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "description": {
          "description": "The description of the identity provider.",
          "type": "string"
        },
        "displayName": {
          "description": "Human-readable label that identifies the identity provider.",
          "type": "string"
        },
        "groupsClaim": {
          "description": "Identifier of the claim which contains IdP Group IDs in the token.",
          "type": "string"
        },
        "id": {
          "description": "Unique 24-hexadecimal digit string that identifies the identity provider.",
          "pattern": "^([a-f0-9]{24})$",
          "readOnly": true,
          "type": "string"
        },
        "idpType": {
          "description": "String enum that indicates the type of the identity provider. Default is WORKFORCE.",
          "enum": [
            "WORKFORCE",
            "WORKLOAD"
          ],
          "type": "string"
        },
        "issuerUri": {
          "description": "Unique string that identifies the issuer of the SAML Assertion or OIDC metadata/discovery document URL.",
          "type": "string"
        },
        "oktaIdpId": {
          "description": "Legacy 20-hexadecimal digit string that identifies the identity provider.",
          "pattern": "^([a-f0-9]{20})$",
          "type": "string"
        },
        "protocol": {
          "description": "String enum that indicates the protocol of the identity provider. Either SAML or OIDC.",
          "enum": [
            "SAML",
            "OIDC"
          ],
          "type": "string"
        },
        "updatedAt": {
          "description": "Date that the identity provider was last updated on. This parameter expresses its value in the ISO 8601 timestamp format in UTC.",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "userClaim": {
          "description": "Identifier of the claim which contains the user ID in the token.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "oktaIdpId"
      ],
      "title": "OIDC WORKLOAD",
      "type": "object"
    },
    "FederationSamlIdentityProvider": {
      "properties": {
        "acsUrl": {
          "description": "URL that points to where to send the SAML response.",
          "type": "string"
        },
        "associatedDomains": {
          "description": "List that contains the domains associated with the identity provider.",
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "associatedOrgs": {
          "description": "List that contains the connected organization configurations associated with the identity provider.",
          "items": {
            "$ref": "#/$defs/ConnectedOrgConfig"
          },
          "type": "array",
          "uniqueItems": true
        },
        "audienceUri": {
          "description": "Unique string that identifies the intended audience of the SAML assertion.",
          "type": "string"
        },
        "createdAt": {
          "description": "Date that the identity provider was created on. This parameter expresses its value in the ISO 8601 timestamp format in UTC.",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "description": {
          "description": "The description of the identity provider.",
          "type": "string"
        },
        "displayName": {
          "description": "Human-readable label that identifies the identity provider.",
          "type": "string"
        },
        "id": {
          "description": "Unique 24-hexadecimal digit string that identifies the identity provider.",
          "pattern": "^([a-f0-9]{24})$",
          "readOnly": true,
          "type": "string"
        },
        "idpType": {
          "description": "String enum that indicates the type of the identity provider. Default is WORKFORCE.",
          "enum": [
            "WORKFORCE",
            "WORKLOAD"
          ],
          "type": "string"
        },
        "issuerUri": {
          "description": "Unique string that identifies the issuer of the SAML Assertion or OIDC metadata/discovery document URL.",
          "type": "string"
        },
        "oktaIdpId": {
          "description": "Legacy 20-hexadecimal digit string that identifies the identity provider.",
          "pattern": "^([a-f0-9]{20})$",
          "type": "string"
        },
        "pemFileInfo": {
          "$ref": "#/$defs/PemFileInfo"
        },
        "protocol": {
          "description": "String enum that indicates the protocol of the identity provider. Either SAML or OIDC.",
          "enum": [
            "SAML",
            "OIDC"
          ],
          "type": "string"
        },
        "requestBinding": {
          "description": "SAML Authentication Request Protocol HTTP method binding (POST or REDIRECT) that Federated Authentication uses to send the authentication request.",
          "enum": [
            "HTTP-POST",
            "HTTP-REDIRECT"
          ],
          "type": "string"
        },
        "responseSignatureAlgorithm": {
          "description": "Signature algorithm that Federated Authentication uses to encrypt the identity provider signature.",
          "enum": [
            "SHA-1",
            "SHA-256"
          ],
          "type": "string"
        },
        "slug": {
          "description": "Custom SSO URL for the identity provider.",
          "type": "string"
        },
        "ssoDebugEnabled": {
          "description": "Flag that indicates whether the identity provider has SSO debug enabled.",
          "type": "boolean"
        },
        "ssoUrl": {
          "description": "URL that points to the receiver of the SAML authentication request.",
          "type": "string"
        },
        "status": {
          "description": "String enum that indicates whether the identity provider is active.",
          "enum": [
            "ACTIVE",
            "INACTIVE"
          ],
          "type": "string"
        },
        "updatedAt": {
          "description": "Date that the identity provider was last updated on. This parameter expresses its value in the ISO 8601 timestamp format in UTC.",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        }
      },
      "required": [
        "id",
        "oktaIdpId"
      ],
      "title": "SAML",
      "type": "object"
    },
    "PemFileInfo": {
      "description": "PEM file information for the identity provider's current certificates.",
      "properties": {
        "certificates": {
          "description": "List of certificates in the file.",
          "items": {
            "$ref": "#/$defs/X509Certificate"
          },
          "type": "array"
        },
        "fileName": {
          "description": "Human-readable label given to the file.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "X509Certificate": {
      "properties": {
        "notAfter": {
          "description": "Latest date that the certificate is valid. This parameter expresses its value in the ISO 8601 timestamp format in UTC.",
          "format": "date-time",
          "type": "string"
        },
        "notBefore": {
          "description": "Earliest date that the certificate is valid. This parameter expresses its value in the ISO 8601 timestamp format in UTC.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    }
  }
}