借助 Admin Settings API,Google Workspace 网域的管理员可以以 Google Data API Feed 的形式检索和更改网域的设置。
这些域名设置包括 Google Workspace 管理控制台中提供的许多功能。此 API 的示例用途包括创建自定义控制台或将 Google Workspace 网域集成到现有的旧环境中。
Admin Settings API 实现了 Google Data API 协议。Google 数据 API 遵循 Atom 发布协议 (AtomPub) 发布和修改模型。AtomPub HTTP 请求使用表征设置传输 (RESTful) 设计方法来设计网络服务。如需了解详情,请参阅 Google 数据开发者指南。
受众群体
如果开发者想要编写可修改和检索 Google Workspace 网域相关信息的客户端应用,请参阅本文档。它提供了使用原始 XML 和 HTTP 进行基本管理设置 API 交互的示例。
本文档假定您已大致了解 Google Data API 协议,并且熟悉 Google Workspace 管理控制台。要详细了解管理控制台,请参阅使用您的管理控制台。
使用入门
创建账号
Google Workspace 账号启用了 Admin Settings API。请注册 Google Workspace 账号以进行测试。管理设置服务使用的是 Google 账号,因此如果您已经有 Google Workspace 网域的账号,就大功告成了。
关于管理设置 API 供稿类型
通过管理设置 API,您可以管理以下类别的域名设置:
- 单点登录设置
借助基于 SAML 的单点登录 (SSO),用户可以使用相同的登录名和密码登录 Google Workspace 托管服务以及贵组织中可能托管的其他服务。尤其是在使用 SSO 时,托管 Web 应用(例如 Google Workspace)会将用户重定向到贵组织的身份提供方,以便在用户登录时对其进行身份验证。如需了解详情,请参阅了解 Google Workspace 基于 SAML 的单点登录。
配置单点登录时需要输入必要信息,以便 Google Workspace 服务与存储用户信息的身份提供方进行通信登录信息,以及设置用户登录、退出和更改密码应转到的链接。通过管理设置 API,您可以通过编程方式更新和检索这些设置。Google 会使用您生成的公钥向身份提供方验证此单点登录请求,以及私钥 SAML 响应在网络传输过程中是否未被修改。
如需关于单点登录设置的 API 专属简短摘要,请从身份提供方处获取公钥证书,向 Google 注册公钥,然后设置基于 SAML 的单点登录查询设置。如需了解错误消息,请参阅排查单点登录问题:- 生成密钥 - 通过身份提供者,使用 DSA 或 RSA 算法生成一组公钥和私钥。公钥为 X.509 格式的证书。如需详细了解基于 SAML 的单点登录签名密钥,请参阅为 Google Workspace 单点登录服务生成密钥和证书。
- 向 Google 注册 -- 使用管理设置 API 的单点登录设置向 Google 注册您的公钥证书。
- 设置 SSO 设置 -- 使用 Admin Settings API 的单一登录设置来配置与域身份提供者的服务器进行通信的设置。
- 网关和路由设置
此 Feed 可让域管理员控制其域的电子邮件路由。
管理员可以通过电子邮件路由操作指定域级别的电子邮件路由设置。此功能类似于管理控制台中 Gmail 设置的电子邮件转送功能。有关详情,请参阅电子邮件路由和电子邮件路由功能的双递交配置。
管理设置 API XML 请求和响应示例
本文档提供了使用原始 XML 和 HTTP 的基本管理设置 API 请求和响应的代码示例。以下域默认语言示例展示了每个操作通用的请求和响应条目正文的完整 XML 和 HTTP 语法:
要更改域的出站电子邮件网关设置,请向网关供稿网址发送 HTTP PUT
:
https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/email/gateway
域默认语言 PUT
请求 AtomPub entry
XML 为:
<atom:entry xmlns:atom='http://www.w3.org/2005/Atom'
xmlns:apps='http://schemas.google.com/apps/2006'>
<apps:property name='smartHost' value='smtp.out.domain.com' />
<apps:property name='smtpMode' value='SMTP' />
</atom:entry>
atom:property
元素表示单个键值对,其中包含要检索或更新的属性的相关信息,操作专用属性和值除外。这些是所有管理设置 API 请求正文通用的。
域默认语言响应 entry
元素会返回 smartHost
和 smtpMode
属性,以及所有管理设置 API 响应正文通用的 XML 语法:
<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
<id>https://apps-apis.google.com/a/feeds/domain/2.0/domainName/email/gateway</id>
<updated>2008-12-17T23:59:23.887Z</updated>
<link rel='self' type='application/atom xml' href='https://apps-apis.google.com/a/feeds/domain/
2.0/domainName/email/gateway'/>
<link rel='edit' type='application/atom xml' href='https://apps-apis.google.com/a/feeds/domain/
2.0/domainName/email/gateway'/>
<apps:property name='smartHost' value='smtp.out.domain.com' />
<apps:property name='smtpMode' value='SMTP' />
</entry>
管理单点登录设置
借助 Google Workspace 单点登录功能 (SSO),用户只需输入一次登录名和密码,即可登录多项服务。此密码由域名的身份提供方(而非 Google Workspace)存储。有关详情,请参阅帮助中心的单点登录页面。以下各部分介绍了用于单点登录设置的 XML 格式。
检索单一登录设置
要检索单点登录设置,请将 HTTP GET
发送到 SSO 常规 Feed 网址并包含 Authorization
标头,如向管理设置服务进行身份验证中所述。此外,对于错误消息,请参阅排查单点登录问题:
https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/sso/general
此操作在请求正文中没有任何参数。
成功的响应将返回一个 HTTP 200 OK
状态代码以及具有域 SSO 设置的 AtomPub 供稿。
GET 响应 XML 会返回 samlSignonUri
、samlLogoutUri
、changePasswordUri
、enableSSO
、ssoWhitelist
和 useDomainSpecificIssuer
属性:
<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
<apps:property name='samlSignonUri' value='http://www.example.com/sso/signon'/>
...
<apps:property name='samlLogoutUri' value='http://www.example.com/sso/logout'/>
<apps:property name='changePasswordUri' value='http://www.example.com/sso/changepassword'/>
<apps:property name='enableSSO' value='true'/>
<apps:property name='ssoWhitelist' value='CIDR formatted IP address'/>
<apps:property name='useDomainSpecificIssuer' value='false'/>
</entry>
这些属性包括:
- samlSignonUri
- 身份提供方的网址,Google Workspace 将 SAML 请求发送到这个网址,以进行用户身份验证。
- samlLogoutUri
- 用户退出 Web 应用时将转到的地址。
- changePasswordUri
- 当用户想要更改 Web 应用的单点登录密码时,系统会将其发送到此地址。
- enableSSO
- 为此网域启用基于 SAML 的单点登录。如果您之前配置了 SSO 设置,并随后将
enableSSO
设为enableSSO=false
,则您之前输入的设置仍会保存。 - ssoWhitelist
- ssowhite 是采用无类别域间路由 (CIDR) 格式的网络掩码 IP 地址。ssoWhitelist 决定了哪些用户使用单点登录登录,哪些用户使用 Google Workspace 账号身份验证页面登录。如果未指定掩码,则所有用户都将使用 SSO 登录。如需了解详情,请参阅网络掩码的工作原理。
- useDomainSpecificIssuer
- 在发送给身份提供方的 SAML 请求中,可以使用网域特有的颁发者。尽管大多数 SSO 部署都不需要该功能,但对于使用单个身份提供者对具有多个子网域的整个组织进行身份验证的大型公司来说,此功能非常有用。通过指定特定域名的颁发者可确定与请求关联的子域名。有关详情,请参阅 SAML 请求中的颁发者元素如何工作?
如果您的请求由于某种原因失败,则会返回不同的状态代码。有关 Google Data API 状态代码的详细信息,请参阅 HTTP 状态代码。
更新单点登录设置
要更新网域的 SSO 设置,请先使用检索单点登录设置操作检索 SSO 设置,对其进行修改,然后将 PUT
请求发送到 SSO Feed 网址。请确保更新后的条目中的 <id>
值与现有条目的 <id>
完全匹配。添加 Authorization
标头,如向 Admin Settings API 服务进行身份验证中所述。对于错误消息,请参阅排查单点登录问题。
更新单一登录设置时,请将 HTTP PUT 发送到 SSO 常规供稿网址:
https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/sso/general
PUT
请求的 XML 正文为:
<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
<apps:property name='enableSSO' value='false' />
<apps:property name='samlSignonUri' value='http://www.example.com/sso/signon' />
<apps:property name='samlLogoutUri' value='http://www.example.com/sso/logout' />
<apps:property name='changePasswordUri' value='http://www.example.com/sso/changepassword' />
<apps:property name='ssoWhitelist' value='127.0.0.1/32' />
<apps:property name='useDomainSpecificIssuer' value='false'/>
</atom:entry>
成功的响应将返回一个 HTTP 200 OK
状态代码以及具有 SSO 设置的 AtomPub 供稿。
PUT
响应 XML 为:
<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
...
<apps:property name='samlSignonUri' value='http://www.example.com/sso/signon'/>
<apps:property name='samlLogoutUri' value='http://www.example.com/sso/logout'/>
<apps:property name='changePasswordUri' value='http://www.example.com/sso/changepassword'/>
<apps:property name='enableSSO' value='false'/>
<apps:property name='ssoWhitelist' value='127.0.0.1/32'/>
<apps:property name='useDomainSpecificIssuer' value='false'/>
</entry>
如果您的请求由于某种原因失败,则会返回不同的状态代码。有关 Google Data API 状态代码的详细信息,请参阅 HTTP 状态代码。
检索单点登录签名密钥
要检索单点登录签名密钥,请将 HTTP GET
发送到 SSO 签名密钥 Feed 网址,并包含 Authorization
标头,如在管理设置服务中进行身份验证中所述。此外,对于错误消息,请参阅排查单点登录问题:
https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/sso/signingkey
此操作在请求正文中没有任何参数。
成功的响应将返回一个 HTTP 200 OK
状态代码以及具有签名密钥的 AtomPub 供稿。
GET
响应 XML 会返回 signingKey
属性:
<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
...
<apps:property name='signingKey' value='yourBase64EncodedPublicKey'/>
</entry>
如果您的请求由于某种原因失败,则会返回不同的状态代码。有关 Google Data API 状态代码的详细信息,请参阅 HTTP 状态代码。
更新单点登录签名密钥
要更新网域的 SSO 签名密钥,请先使用检索单点登录签名密钥操作检索签名密钥,对其进行修改,然后将 PUT
请求发送到 SSO 签名密钥 Feed 网址。请确保更新后的条目中的 <id>
值与现有条目的 <id>
完全匹配。如需详细了解基于 SAML 的单点登录签名密钥,请参阅为 Google Workspace 单点登录服务生成密钥和证书。
更新单点登录签名密钥时,请将 HTTP PUT
发送到 SSO 签名密钥 Feed 网址:
https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/sso/signingkey
PUT
请求 XML 为:
<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps="http://schemas.google.com/apps/2006">
<apps:property name='signingKey' value='yourBase64EncodedPublicKey'/>
</atom:entry>
管理电子邮件网关和路由
出站电子邮件网关部分显示 Admin Settings API 如何支持您网域中用户的邮件的出站路由。电子邮件路由部分介绍了如何将邮件路由到其他邮件服务器。
检索出站电子邮件网关设置
要检索出站电子邮件网关设置,请将 HTTP GET
发送到网关 Feed 网址并包含 Authorization
标头,如向管理设置服务进行身份验证中所述:
https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/email/gateway
此操作在请求正文中没有任何参数。
成功的响应将返回一个 HTTP 200 OK 状态代码以及具有电子邮件网关状态信息的 AtomPub 供稿。
GET
响应会返回 smartHost
和 smtpMode
属性。要详细了解这些属性,请参阅更新出站电子邮件网关设置。
一个可能的响应示例如下:
<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
...
<apps:property name='smartHost' value='smtpout.domain.com'/>
<apps:property name='smtpMode' value='SMTP'/>
</entry>
如果您的请求由于某种原因失败,则会返回不同的状态代码。有关 Google Data API 状态代码的详细信息,请参阅 HTTP 状态代码。
更新出站电子邮件网关设置
要更新某个域的出站电子邮件网关设置,请向该网关供稿网址发送 HTTP PUT
请求:
https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/email/gateway
PUT
请求 XML 为:
<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps="http://schemas.google.com/apps/2006">
<apps:property name='smartHost' value='smtp.out.domain.com' />
<apps:property name='smtpMode' value='SMTP' />
</atom:entry>
请求属性为:
- smartHost
- SMTP 服务器的 IP 地址或主机名。Google Workspace 会将外发邮件转送到此服务器。
- smtpMode
- 默认值为 SMTP。另一个值是 SMTP_TLS,它在递送邮件时保护与 TLS 的连接。 。
成功的响应将返回一个 HTTP 200 OK
状态代码以及具有电子邮件网关设置状态的 AtomPub 供稿。
如果您的请求由于某种原因失败,则会返回不同的状态代码。有关 Google Data API 状态代码的详细信息,请参阅 HTTP 状态代码。
管理电子邮件路由设置
首先,创建一个 XML 请求:
<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps="http://schemas.google.com/apps/2006">
<apps:property name='routeDestination' value='route-smtp.domain.com'/>
<apps:property name='routeRewriteTo' value='true'/>
<apps:property name='routeEnabled' value='true'/>
<apps:property name='bounceNotifications' value='true'/>
<apps:property name='accountHandling' value='can be either allAccounts | provisionedAccounts | unknownAccounts'/>
</atom:entry>
请求属性为:
- routeDestination
- 此目的地是邮件要转送到的 SMTP-In 邮件服务器的主机名或 IP 地址。必须为 Google 解析主机名或 IP 地址。如需详细了解如何解析邮件主机名,请参阅试用 Google Workspace 的电子邮件转送功能。
- routeRewriteTo
- 如果为 true,邮件 SMTP 信包的
to:
字段会更改为目标主机名(user@destination 的主机名),并且邮件会递送到目标邮件服务器上的此用户地址。如果为false
,则电子邮件将递送到目标邮件服务器上原始邮件的to:
电子邮件地址(user@原始主机名)。这类似于管理控制台的“更改 SMTP 信包”设置。有关详情,请参阅电子邮件转送的网域设置。 - routeEnabled
- 如果为
true
,则系统会启用电子邮件路由功能。如果为false
,则系统会停用该功能。 - bounceNotifications
- 如果设为
true
,Google Workspace 将启用在递送失败时向发件人发送退信通知的功能。 - accountHandling
此设置用于确定网域中不同类型的用户会受到电子邮件路由的影响:
allAccounts
-- 将所有电子邮件递送到该目标。provisionedAccounts
-- 如果 Google Workspace 中存在用户,则将邮件递送到此目标。unknownAccounts
-- 如果 Google Workspace 中不存在该用户,则将邮件递送到此目的地。 这类似于管理控制台的“电子邮件递送对象”设置。要详细了解前提条件以及如何使用邮件路由,请参阅电子邮件路由的网域设置。 ~ 要发布此请求,请将 HTTPPOST
发送到电子邮件路由 Feed 网址,并包含Authorization
标头,如在管理设置服务中进行身份验证中所述:
https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/emailrouting
成功的响应将返回一个 HTTP 200 OK
状态代码以及具有存档信息的 AtomPub 供稿。
如果您的请求由于某种原因失败,则会返回不同的状态代码。有关 Google Data API 状态代码的详细信息,请参阅 HTTP 状态代码。
Endpoints 将于 2018 年 10 月 31 日停用
我们在此公告中废弃了以下端点。 它们已于 2018 年 10 月 31 日停用,现已不再可用。
- https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/general/defaultLanguage
- https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/general/organizationName
- https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/general/currentNumberOfUsers
- https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/general/maximumNumberOfUsers
- https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/accountInformation/supportPIN
- https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/accountInformation/customerPIN
- https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/accountInformation/adminSecondaryEmail
- https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/accountInformation/edition
- https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/accountInformation/creationTime
- https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/accountInformation/countryCode
- https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/appearance/customLogo
- https://apps-apis.google.com/a/feeds/domain/2.0/{domainName}/verification/mx