outboundConnectors
Outbound Connectors. Connectors that route mail out to partner or on-prem hosts. The outboundConnectors entity set lives under /exchange/v1.0/outboundConnectors in the Mail flow category.
| Fact | Value |
|---|---|
| Path | /exchange/v1.0/outboundConnectors |
| Category | Mail flow |
| Tier | Tier 3, Mail flow |
| Read role | MailFlow.Read.All (Community) |
| Write role | MailFlow.ReadWrite.All (Pro) |
| Backing cmdlets | Get-OutboundConnector, Set-OutboundConnector, New-OutboundConnector, Remove-OutboundConnector |
Routes
Section titled “Routes”| Method | Path | Synopsis | Role | Plan |
|---|---|---|---|---|
| GET | /exchange/v1.0/outboundConnectors |
List outboundConnectors entries. | MailFlow.Read |
Community |
| POST | /exchange/v1.0/outboundConnectors |
POST /outboundConnectors - creates an outbound connector via New-OutboundConnector. Body must include name. Recipient scope (allAcceptedDomains or recipientDomains) is strongly recommended - the cmdlet allows omission at create time but the connector will not actually route any mail without it. | MailFlow.ReadWrite |
Pro |
| GET | /exchange/v1.0/outboundConnectors/{key} |
Get a single outboundConnectors entry by Identity. | MailFlow.Read |
Community |
| PATCH | /exchange/v1.0/outboundConnectors/{key} |
PATCH /outboundConnectors/{key} - partial update via Set-OutboundConnector. Known issue (slice 8a): after Set-OutboundConnector the runspace’s session can’t see the connector by Identity for the immediate re-fetch (EXO DC-stickiness). The Set landed; we return 200 + stub + X-Refetch-Skipped header instead of misleading 404. | MailFlow.ReadWrite |
Pro |
| DELETE | /exchange/v1.0/outboundConnectors/{key} |
DELETE /outboundConnectors/{key} - destructive, no soft-delete. | MailFlow.ReadWrite |
Pro |
GET /exchange/v1.0/outboundConnectors
Section titled “GET /exchange/v1.0/outboundConnectors”List outboundConnectors entries.
Backing cmdlet: Get-OutboundConnector. Role: MailFlow.Read (Community).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
all |
query | bool (switch) | Return all results instead of the EXO default of 1000. Maps -ResultSize Unlimited on Get-OutboundConnector; prevents silent truncation in large tenants. | |
isTransportRuleScoped |
query | bool (switch) | Filter results to outbound connectors that are scoped to transport rules (mail flow rules). Maps -IsTransportRuleScoped. | |
includeTestModeConnectors |
query | bool (switch) | Include connectors that are in test mode. Maps -IncludeTestModeConnectors on Get-OutboundConnector. |
List outboundConnectors
Section titled “List outboundConnectors”Stub auto-generated example for the outboundConnectors collection. Backing cmdlet: Get-OutboundConnector. Live-verify with ?$top=3&$select=Id,Name and replace the synthetic body before promoting to Tier 1.
GET /exchange/v1.0/outboundConnectors?$top=3 HTTP/1.1Authorization: Bearer {token}HTTP/1.1 200 OK
{ "@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#outboundConnectors", "value": []}Notes: Illustrative example derived from the cmdlet documentation, not a live capture: field names are real, values are placeholders.
Related: GET /exchange/v1.0/outboundConnectors/{key}
POST /exchange/v1.0/outboundConnectors
Section titled “POST /exchange/v1.0/outboundConnectors”POST /outboundConnectors - creates an outbound connector via New-OutboundConnector. Body must include name. Recipient scope (allAcceptedDomains or recipientDomains) is strongly recommended - the cmdlet allows omission at create time but the connector will not actually route any mail without it.
Backing cmdlet: New-OutboundConnector. Role: MailFlow.ReadWrite (Pro).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
name |
body | yes | ||
allAcceptedDomains |
body | |||
cloudServicesMailEnabled |
body | |||
comment |
body | |||
connectorSource |
body | |||
connectorType |
body | |||
enabled |
body | |||
isTransportRuleScoped |
body | |||
linkForModifiedConnector |
body | |||
mtaStsMode |
body | |||
recipientDomains |
body | |||
routeAllMessagesViaOnPremises |
body | |||
senderRewritingEnabled |
body | |||
smartHosts |
body | |||
smtpDaneMode |
body | |||
testMode |
body | |||
tlsDomain |
body | |||
tlsSettings |
body | |||
useMXRecord |
body | |||
dryRun |
query | bool (switch) |
Create rejected - missing required name
Section titled “Create rejected - missing required name”New-OutboundConnector requires the name field. Omitting it returns a 400 BadRequest with the canonical error envelope before the cmdlet is invoked.
POST /exchange/v1.0/outboundConnectors HTTP/1.1Authorization: Bearer {token}Content-Type: application/json
{ "connectorType": "Partner", "recipientDomains": [ "contoso.com" ]}HTTP/1.1 400 Bad RequestContent-Type: application/json
{ "error": { "code": "BadRequest", "message": "The required field 'name' is missing from the request body.", "target": "name" }, "correlationId": "0HN7K2QZ9X4ABC"}Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.
Related: GET /exchange/v1.0/outboundConnectors
Create an outbound connector
Section titled “Create an outbound connector”Creates an outbound mail-flow connector via New-OutboundConnector. Only name is required; recipient scope (allAcceptedDomains or recipientDomains) is strongly recommended so the connector actually routes mail.
POST /exchange/v1.0/outboundConnectors HTTP/1.1Authorization: Bearer {token}Content-Type: application/json
{ "name": "exonaut-sample-outboundConnectors", "connectorType": "Partner", "recipientDomains": [ "contoso.com" ], "smartHosts": [ "mail.contoso.com" ], "tlsSettings": "EncryptionOnly", "comment": "EXONAUT sample outbound connector", "enabled": true}HTTP/1.1 201 CreatedLocation: /exchange/v1.0/outboundConnectors/exonaut-sample-outboundConnectors
{ "Id": "exonaut-sample-outboundConnectors", "Identity": "exonaut-sample-outboundConnectors", "Name": "exonaut-sample-outboundConnectors", "ConnectorType": "Partner", "RecipientDomains": [ "contoso.com" ], "SmartHosts": [ "mail.contoso.com" ], "TlsSettings": "EncryptionOnly", "Comment": "EXONAUT sample outbound connector", "Enabled": true}Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.
Related: GET /exchange/v1.0/outboundConnectors
GET /exchange/v1.0/outboundConnectors/{key}
Section titled “GET /exchange/v1.0/outboundConnectors/{key}”Get a single outboundConnectors entry by Identity.
Backing cmdlet: Get-OutboundConnector. Role: MailFlow.Read (Community).
Get a single outboundConnectors entry
Section titled “Get a single outboundConnectors entry”Stub auto-generated example for GET /outboundConnectors/{key}. Backing cmdlet: Get-OutboundConnector with -Identity {key}. Returns the full entity body; 404 if the identity doesn’t resolve.
GET /exchange/v1.0/outboundConnectors/{key} HTTP/1.1Authorization: Bearer {token}HTTP/1.1 200 OK
{ "@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#outboundConnectors/$entity"}Notes: Illustrative example derived from the cmdlet documentation, not a live capture: field names are real, values are placeholders.
Related: GET /exchange/v1.0/outboundConnectors
PATCH /exchange/v1.0/outboundConnectors/{key}
Section titled “PATCH /exchange/v1.0/outboundConnectors/{key}”PATCH /outboundConnectors/{key} - partial update via Set-OutboundConnector. Known issue (slice 8a): after Set-OutboundConnector the runspace’s session can’t see the connector by Identity for the immediate re-fetch (EXO DC-stickiness). The Set landed; we return 200 + stub + X-Refetch-Skipped header instead of misleading 404.
Backing cmdlet: Set-OutboundConnector. Role: MailFlow.ReadWrite (Pro).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
allAcceptedDomains |
body | |||
cloudServicesMailEnabled |
body | |||
comment |
body | |||
connectorSource |
body | |||
connectorType |
body | |||
enabled |
body | |||
isTransportRuleScoped |
body | |||
mtaStsMode |
body | |||
name |
body | |||
recipientDomains |
body | |||
routeAllMessagesViaOnPremises |
body | |||
senderRewritingEnabled |
body | |||
smartHosts |
body | |||
smtpDaneMode |
body | |||
testMode |
body | |||
tlsDomain |
body | |||
tlsSettings |
body | |||
useMXRecord |
body | |||
validationRecipients |
body | |||
dryRun |
query | bool (switch) |
Update an outbound connector
Section titled “Update an outbound connector”Partially updates an outbound connector via Set-OutboundConnector. The body carries only the SetWritable fields being changed; Identity comes from the URL key.
PATCH /exchange/v1.0/outboundConnectors/{key} HTTP/1.1Authorization: Bearer {token}Content-Type: application/json
{ "comment": "Updated EXONAUT sample outbound connector", "recipientDomains": [ "contoso.com", "fabrikam.com" ], "enabled": false}HTTP/1.1 200 OKContent-Type: application/json
{ "Id": "exonaut-sample-outboundConnectors", "Identity": "exonaut-sample-outboundConnectors", "Name": "exonaut-sample-outboundConnectors", "Comment": "Updated EXONAUT sample outbound connector", "RecipientDomains": [ "contoso.com", "fabrikam.com" ], "Enabled": false}Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative. Note: Set-OutboundConnector has a known post-write DC-affinity quirk; the API may return a 200 stub with an X-Refetch-Skipped header instead of the freshly re-fetched entity.
Related: GET /exchange/v1.0/outboundConnectors
DELETE /exchange/v1.0/outboundConnectors/{key}
Section titled “DELETE /exchange/v1.0/outboundConnectors/{key}”DELETE /outboundConnectors/{key} - destructive, no soft-delete.
Backing cmdlet: Remove-OutboundConnector. Role: MailFlow.ReadWrite (Pro).
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
dryRun |
query | bool (switch) |
Delete an outbound connector
Section titled “Delete an outbound connector”Permanently removes an outbound connector via Remove-OutboundConnector. This is destructive with no soft-delete.
DELETE /exchange/v1.0/outboundConnectors/{key} HTTP/1.1Authorization: Bearer {token}Content-Type: application/jsonHTTP/1.1 204 No ContentNotes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.
Related: GET /exchange/v1.0/outboundConnectors
?dryRun=true previews of any write stay on Community.

