Microsoft Graph · Schema
cloudCommunications
Represents a container that exposes navigation properties for cloud communications resources.
Microsoft GraphAzure ADCollaborationContactsDocumentsEmailGraphIdentityMicrosoftOffice 365PresentationsProductivitySpreadsheetsT1Task
Properties
| Name | Type | Description |
|---|---|---|
| callRecords | array | |
| calls | array | |
| onlineMeetingConversations | array | A collection of structured question-and-answer (Q&A) threads in Teams directly associated with online meetings. |
| onlineMeetings | array | |
| presences | array | |
| @odata.type | string |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/microsoft-graph/json-schema/microsoft-graph-microsoft-graph-cloud-communications-schema.json",
"title": "cloudCommunications",
"description": "Represents a container that exposes navigation properties for cloud communications resources.",
"x-generated": "2026-11-04",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/microsoft-graph-communications-cloudcommunications-api-openapi.yml#/components/schemas/microsoft.graph.cloudCommunications",
"required": [
"@odata.type"
],
"type": "object",
"properties": {
"callRecords": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.callRecords.callRecord"
},
"x-ms-navigationProperty": true
},
"calls": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.call"
},
"x-ms-navigationProperty": true
},
"onlineMeetingConversations": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.onlineMeetingEngagementConversation"
},
"description": "A collection of structured question-and-answer (Q&A) threads in Teams directly associated with online meetings.",
"x-ms-navigationProperty": true
},
"onlineMeetings": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.onlineMeeting"
},
"x-ms-navigationProperty": true
},
"presences": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.presence"
},
"x-ms-navigationProperty": true
},
"@odata.type": {
"type": "string"
}
},
"$defs": {
"ReferenceNumeric": {
"enum": [
"-INF",
"INF",
"NaN"
],
"type": [
"string",
"null"
]
},
"microsoft.graph.allowedLobbyAdmitterRoles": {
"title": "allowedLobbyAdmitterRoles",
"enum": [
"organizerAndCoOrganizersAndPresenters",
"organizerAndCoOrganizers",
"unknownFutureValue"
],
"type": "string"
},
"microsoft.graph.attendanceInterval": {
"title": "attendanceInterval",
"required": [
"@odata.type"
],
"type": "object",
"properties": {
"durationInSeconds": {
"maximum": 2147483647,
"minimum": -2147483648,
"type": [
"number",
"null"
],
"description": "Duration of the meeting interval in seconds; that is, the difference between joinDateTime and leaveDateTime.",
"format": "int32"
},
"joinDateTime": {
"pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
"type": [
"string",
"null"
],
"description": "The time the attendee joined in UTC.",
"format": "date-time"
},
"leaveDateTime": {
"pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
"type": [
"string",
"null"
],
"description": "The time the attendee left in UTC.",
"format": "date-time"
},
"@odata.type": {
"type": "string"
}
}
},
"microsoft.graph.attendanceRecord": {
"allOf": [
{
"$ref": "#/$defs/microsoft.graph.entity"
},
{
"title": "attendanceRecord",
"required": [
"@odata.type"
],
"type": "object",
"properties": {
"attendanceIntervals": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.attendanceInterval"
},
"description": "List of time periods between joining and leaving a meeting."
},
"emailAddress": {
"type": [
"string",
"null"
],
"description": "Email address of the user associated with this attendance record."
},
"externalRegistrationInformation": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.virtualEventExternalRegistrationInformation"
},
{
"type": [
"object",
"null"
]
}
],
"description": "The external information for a virtualEventRegistration."
},
"identity": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.identity"
},
{
"type": [
"object",
"null"
]
}
],
"description": "The identity of the user associated with this attendance record. The specific type is one of the following derived types of identity, depending on the user type: communicationsUserIdentity, azureCommunicationServicesUserIdentity."
},
"registrationId": {
"type": [
"string",
"null"
],
"description": "Unique identifier of a virtualEventRegistration that is available to all participants registered for the virtualEventWebinar."
},
"role": {
"type": [
"string",
"null"
],
"description": "Role of the attendee. The possible values are: None, Attendee, Presenter, and Organizer."
},
"totalAttendanceInSeconds": {
"maximum": 2147483647,
"minimum": -2147483648,
"type": [
"number",
"null"
],
"description": "Total duration of the attendances in seconds.",
"format": "int32"
},
"@odata.type": {
"type": "string"
}
}
}
],
"x-ms-discriminator-value": "#microsoft.graph.attendanceRecord"
},
"microsoft.graph.audioConferencing": {
"title": "audioConferencing",
"required": [
"@odata.type"
],
"type": "object",
"properties": {
"conferenceId": {
"type": [
"string",
"null"
],
"description": "The conference id of the online meeting."
},
"dialinUrl": {
"type": [
"string",
"null"
],
"description": "A URL to the externally-accessible web page that contains dial-in information."
},
"tollFreeNumber": {
"type": [
"string",
"null"
],
"description": "The toll-free number that connects to the Audio Conference Provider."
},
"tollFreeNumbers": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "List of toll-free numbers that are displayed in the meeting invite."
},
"tollNumber": {
"type": [
"string",
"null"
],
"description": "The toll number that connects to the Audio Conference Provider."
},
"tollNumbers": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "List of toll numbers that are displayed in the meeting invite."
},
"@odata.type": {
"type": "string"
}
}
},
"microsoft.graph.audioRoutingGroup": {
"allOf": [
{
"$ref": "#/$defs/microsoft.graph.entity"
},
{
"title": "audioRoutingGroup",
"required": [
"@odata.type"
],
"type": "object",
"properties": {
"receivers": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "List of receiving participant ids."
},
"routingMode": {
"$ref": "#/$defs/microsoft.graph.routingMode"
},
"sources": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "List of source participant ids."
},
"@odata.type": {
"type": "string"
}
}
}
],
"x-ms-discriminator-value": "#microsoft.graph.audioRoutingGroup"
},
"microsoft.graph.bodyType": {
"title": "bodyType",
"enum": [
"text",
"html"
],
"type": "string"
},
"microsoft.graph.broadcastMeetingAudience": {
"title": "broadcastMeetingAudience",
"enum": [
"roleIsAttendee",
"organization",
"everyone",
"unknownFutureValue"
],
"type": "string"
},
"microsoft.graph.broadcastMeetingCaptionSettings": {
"title": "broadcastMeetingCaptionSettings",
"required": [
"@odata.type"
],
"type": "object",
"properties": {
"isCaptionEnabled": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether captions are enabled for this Teams live event."
},
"spokenLanguage": {
"type": [
"string",
"null"
],
"description": "The spoken language."
},
"translationLanguages": {
"type": "array",
"items": {
"type": [
"string",
"null"
]
},
"description": "The translation languages (choose up to 6)."
},
"@odata.type": {
"type": "string"
}
}
},
"microsoft.graph.broadcastMeetingSettings": {
"title": "broadcastMeetingSettings",
"required": [
"@odata.type"
],
"type": "object",
"properties": {
"allowedAudience": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.broadcastMeetingAudience"
},
{
"type": [
"object",
"null"
]
}
],
"description": "Defines who can join the Teams live event. Possible values are listed in the following table."
},
"captions": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.broadcastMeetingCaptionSettings"
},
{
"type": [
"object",
"null"
]
}
],
"description": "Caption settings of a Teams live event."
},
"isAttendeeReportEnabled": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether attendee report is enabled for this Teams live event. Default value is false."
},
"isQuestionAndAnswerEnabled": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether Q&A is enabled for this Teams live event. Default value is false."
},
"isRecordingEnabled": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether recording is enabled for this Teams live event. Default value is false."
},
"isVideoOnDemandEnabled": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether video on demand is enabled for this Teams live event. Default value is false."
},
"@odata.type": {
"type": "string"
}
}
},
"microsoft.graph.call": {
"allOf": [
{
"$ref": "#/$defs/microsoft.graph.entity"
},
{
"title": "call",
"required": [
"@odata.type"
],
"type": "object",
"properties": {
"callbackUri": {
"type": "string",
"description": "The callback URL on which callbacks are delivered. Must be an HTTPS URL."
},
"callChainId": {
"type": [
"string",
"null"
],
"description": "A unique identifier for all the participant calls in a conference or a unique identifier for two participant calls in a P2P call. This identifier must be copied over from Microsoft.Graph.Call.CallChainId."
},
"callOptions": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.callOptions"
},
{
"type": [
"object",
"null"
]
}
],
"description": "Contains the optional features for the call."
},
"callRoutes": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.callRoute"
},
"description": "The routing information on how the call was retargeted. Read-only."
},
"chatInfo": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.chatInfo"
},
{
"type": [
"object",
"null"
]
}
],
"description": "The chat information. Required information for joining a meeting."
},
"direction": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.callDirection"
},
{
"type": [
"object",
"null"
]
}
],
"description": "The direction of the call. The possible values are incoming or outgoing. Read-only."
},
"incomingContext": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.incomingContext"
},
{
"type": [
"object",
"null"
]
}
],
"description": "Call context associated with an incoming call."
},
"mediaConfig": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.mediaConfig"
},
{
"type": [
"object",
"null"
]
}
],
"description": "The media configuration. Required."
},
"mediaState": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.callMediaState"
},
{
"type": [
"object",
"null"
]
}
],
"description": "Read-only. The call media state."
},
"meetingInfo": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.meetingInfo"
},
{
"type": [
"object",
"null"
]
}
],
"description": "The meeting information. Required information for meeting scenarios."
},
"myParticipantId": {
"type": [
"string",
"null"
]
},
"requestedModalities": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.modality"
},
{
"type": [
"object",
"null"
]
}
]
},
"description": "The list of requested modalities. The possible values are: unknown, audio, video, videoBasedScreenSharing, data."
},
"resultInfo": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.resultInfo"
},
{
"type": [
"object",
"null"
]
}
],
"description": "The result information. For example, the result can hold termination reason. Read-only."
},
"source": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.participantInfo"
},
{
"type": [
"object",
"null"
]
}
],
"description": "The originator of the call."
},
"state": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.callState"
},
{
"type": [
"object",
"null"
]
}
],
"description": "The call state. The possible values are: incoming, establishing, ringing, established, hold, transferring, transferAccepted, redirecting, terminating, terminated. Read-only."
},
"subject": {
"type": [
"string",
"null"
],
"description": "The subject of the conversation."
},
"targets": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.invitationParticipantInfo"
},
"description": "The targets of the call. Required information for creating peer to peer call."
},
"tenantId": {
"type": [
"string",
"null"
]
},
"toneInfo": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.toneInfo"
},
{
"type": [
"object",
"null"
]
}
]
},
"transcription": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.callTranscriptionInfo"
},
{
"type": [
"object",
"null"
]
}
],
"description": "The transcription information for the call. Read-only."
},
"audioRoutingGroups": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.audioRoutingGroup"
},
"x-ms-navigationProperty": true
},
"contentSharingSessions": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.contentSharingSession"
},
"x-ms-navigationProperty": true
},
"operations": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.commsOperation"
},
"x-ms-navigationProperty": true
},
"participants": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.participant"
},
"x-ms-navigationProperty": true
},
"@odata.type": {
"type": "string"
}
}
}
],
"x-ms-discriminator-value": "#microsoft.graph.call"
},
"microsoft.graph.callDirection": {
"title": "callDirection",
"enum": [
"incoming",
"outgoing"
],
"type": "string"
},
"microsoft.graph.callMediaState": {
"title": "callMediaState",
"required": [
"@odata.type"
],
"type": "object",
"properties": {
"audio": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.mediaState"
},
{
"type": [
"object",
"null"
]
}
],
"description": "The audio media state. The possible values are: active, inactive, unknownFutureValue."
},
"@odata.type": {
"type": "string"
}
}
},
"microsoft.graph.callOptions": {
"title": "callOptions",
"required": [
"@odata.type"
],
"type": "object",
"properties": {
"hideBotAfterEscalation": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether to hide the app after the call is escalated."
},
"isContentSharingNotificationEnabled": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether content sharing notifications should be enabled for the call."
},
"isDeltaRosterEnabled": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether delta roster is enabled for the call."
},
"isInteractiveRosterEnabled": {
"type": [
"boolean",
"null"
],
"description": "Indicates whether delta roster filtering by participant interactivity is enabled."
},
"@odata.type": {
"type": "string"
}
}
},
"microsoft.graph.callRecording": {
"allOf": [
{
"$ref": "#/$defs/microsoft.graph.entity"
},
{
"title": "callRecording",
"required": [
"@odata.type"
],
"type": "object",
"properties": {
"callId": {
"type": [
"string",
"null"
],
"description": "The unique identifier for the call that is related to this recording. Read-only."
},
"content": {
"type": [
"string",
"null"
],
"description": "The content of the recording. Read-only.",
"format": "base64url"
},
"contentCorrelationId": {
"type": [
"string",
"null"
],
"description": "The unique identifier that links the transcript with its corresponding recording. Read-only."
},
"createdDateTime": {
"pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
"type": [
"string",
"null"
],
"description": "Date and time at which the recording was created. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.",
"format": "date-time"
},
"endDateTime": {
"pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
"type": [
"string",
"null"
],
"description": "Date and time at which the recording ends. The timestamp type represents date and time information using ISO 8601 format and is always in UTC. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z. Read-only.",
"format": "date-time"
},
"meetingId": {
"type": [
"string",
"null"
],
"description": "The unique identifier of the onlineMeeting related to this recording. Read-only."
},
"meetingOrganizer": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.identitySet"
},
{
"type": [
"object",
"null"
]
}
],
"description": "The identity information of the organizer of the onlineMeeting related to this recording. Read-only."
},
"recordingContentUrl": {
"type": [
"string",
"null"
],
"description": "The URL that can be used to access the content of the recording. Read-only."
},
"@odata.type": {
"type": "string"
}
}
}
],
"x-ms-discriminator-value": "#microsoft.graph.callRecording"
},
"microsoft.graph.callRecords.administrativeUnitInfo": {
"title": "administrativeUnitInfo",
"required": [
"@odata.type"
],
"type": "object",
"properties": {
"id": {
"type": [
"string",
"null"
],
"description": "Unique identifier for the administrative unit."
},
"@odata.type": {
"type": "string"
}
}
},
"microsoft.graph.callRecords.audioCodec": {
"title": "audioCodec",
"enum": [
"unknown",
"invalid",
"cn",
"pcma",
"pcmu",
"amrWide",
"g722",
"g7221",
"g7221c",
"g729",
"multiChannelAudio",
"muchv2",
"opus",
"satin",
"satinFullband",
"rtAudio8",
"rtAudio16",
"silk",
"silkNarrow",
"silkWide",
"siren",
"xmsRta",
"unknownFutureValue"
],
"type": "string"
},
"microsoft.graph.callRecords.callRecord": {
"allOf": [
{
"$ref": "#/$defs/microsoft.graph.entity"
},
{
"title": "callRecord",
"required": [
"@odata.type"
],
"type": "object",
"properties": {
"endDateTime": {
"pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
"type": "string",
"description": "UTC time when the last user left the call. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z",
"format": "date-time"
},
"joinWebUrl": {
"type": [
"string",
"null"
],
"description": "Meeting URL associated to the call. May not be available for a peerToPeer call record type."
},
"lastModifiedDateTime": {
"pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
"type": "string",
"description": "UTC time when the call record was created. The DatetimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z",
"format": "date-time"
},
"modalities": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.callRecords.modality"
},
"description": "List of all the modalities used in the call. The possible values are: unknown, audio, video, videoBasedScreenSharing, data, screenSharing, unknownFutureValue."
},
"organizer": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.identitySet"
},
{
"type": [
"object",
"null"
]
}
],
"description": "The organizing party's identity. The organizer property is deprecated and will stop returning data on June 30, 2026. Going forward, use the organizer_v2 relationship."
},
"participants": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.identitySet"
},
"description": "List of distinct identities involved in the call. Limited to 130 entries. The participants property is deprecated and will stop returning data on June 30, 2026. Going forward, use the participants_v2 relationship."
},
"startDateTime": {
"pattern": "^[0-9]{4,}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]([.][0-9]{1,12})?(Z|[+-][0-9][0-9]:[0-9][0-9])$",
"type": "string",
"description": "UTC time when the first user joined the call. The DatetimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is 2014-01-01T00:00:00Z.",
"format": "date-time"
},
"type": {
"$ref": "#/$defs/microsoft.graph.callRecords.callType"
},
"version": {
"type": "number",
"description": "Monotonically increasing version of the call record. Higher version call records with the same id includes additional data compared to the lower version.",
"format": "int64"
},
"organizer_v2": {
"anyOf": [
{
"$ref": "#/$defs/microsoft.graph.callRecords.organizer"
},
{
"type": [
"object",
"null"
]
}
],
"description": "Identity of the organizer of the call. This relationship is expanded by default in callRecord methods.",
"x-ms-navigationProperty": true
},
"participants_v2": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.callRecords.participant"
},
"description": "List of distinct participants in the call.",
"x-ms-navigationProperty": true
},
"sessions": {
"type": "array",
"items": {
"$ref": "#/$defs/microsoft.graph.callRecords.session"
},
"description": "List of sessions involved in the call. Peer-to-peer calls typically only have one session, whereas group calls typically have at least one session per participant. Read-only. Nullable.",
"x-ms-navigationProperty": true
},
"@odata.type": {
"type": "string"
}
}
}
],
"x-ms-discriminator-value": "#microsoft.graph.callRecords.callRecord"
},
"microsoft.graph.callRecords.callType": {
"title": "callType",
"enum"
# --- truncated at 32 KB (156 KB total) ---
# Full source: https://artifacts.apis.io/microsoft-graph/json-schema/microsoft-graph-microsoft-graph-cloud-communications-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/microsoft-graph-microsoft-graph-cloud-communications"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.