{"meta":{"title":"管理企业帐户","intro":"您可以使用 GraphQL API 管理企业帐户及其拥有的组织。","product":"GraphQL API","breadcrumbs":[{"href":"/zh/enterprise-cloud@latest/graphql","title":"GraphQL API"},{"href":"/zh/enterprise-cloud@latest/graphql/guides","title":"指南"},{"href":"/zh/enterprise-cloud@latest/graphql/guides/managing-enterprise-accounts","title":"管理企业帐户"}],"documentType":"article"},"body":"# 管理企业帐户\n\n您可以使用 GraphQL API 管理企业帐户及其拥有的组织。\n\n## 关于使用 GraphQL 管理企业帐户\n\n为帮助您监测和更改组织以保持合规性，可以使用企业帐户 API 和审核日志 API，这些 API 仅以 GraphQL API 的形式提供。\n\n企业帐户终结点适用于 GitHub Enterprise Cloud 和 GitHub Enterprise Server。\n\n使用 GraphQL 可以请求并仅返回指定的数据。 例如，可以创建 GraphQL 查询或请求信息，以查看添加到组织的所有新组织成员。 或者，您可以进行变更或修改，以便邀请管理员加入您的企业帐户。\n\n使用审核日志 API，您可以监视何时有人：\n\n* 访问您的组织或代码库设置。\n* 更改权限。\n* 在组织、存储库或团队中添加或删除用户。\n* 将用户提升为管理员。\n* 更改GitHub应用的权限。\n\n使用审核日志 API 可以保留审核日志数据的副本。 对于使用审核日志 API 执行的查询，GraphQL 响应最多可包含 90 至 120 天的数据。 有关审核日志 API 提供的字段列表，请参阅“[企业管理](/zh/enterprise-cloud@latest/graphql/reference/enterprise-admin#interface-auditentry)”。\n\n通过企业帐户 API，可以：\n\n* 列出并审查属于企业帐户的所有组织和仓库。\n* 更改企业帐户设置。\n* 配置企业帐户及其组织的设置策略。\n* 邀请管理员加入您的企业帐户。\n* 在企业帐户中创建新组织。\n\n有关企业帐户 API 可用的字段的列表，请参阅 [管理企业帐户](/zh/enterprise-cloud@latest/graphql/guides/managing-enterprise-accounts#graphql-fields-and-types-for-the-enterprise-accounts-api)。\n\n## 企业帐户 GraphQL 入门指南\n\n请参阅 [使用 GraphQL 客户端](/zh/enterprise-cloud@latest/graphql/guides/using-graphql-clients)，以开始使用 GraphQL 管理企业帐户。\n\n如需一些示例查询，请参阅[使用企业帐户 API 的示例查询](#an-example-query-using-the-enterprise-accounts-api)。\n\n### 1. 使用您的 personal access token 进行身份验证\n\n1. 要通过 GraphQL 进行身份验证，您需要在开发者设置中生成一个 personal access token。 有关详细信息，请参阅 [管理个人访问令牌](/zh/enterprise-cloud@latest/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)。\n\n2. 授予你的 personal access token 对你希望访问的企业区域的 admin 和完全控制权限。 若要获得对私有仓库、组织、团队、用户数据以及企业计费和个人资料数据的完整访问权限，我们建议为您的 personal access token 选择以下权限范围：\n\n   * `repo`\n   * `admin:org`\n   * `user`\n   * `admin:enterprise`\n\n   企业帐户特定作用域包括：\n\n   * `admin:enterprise`：全面控制企业（包括 `manage_runners:enterprise`、`manage_billing:enterprise` 和 `read:enterprise`）\n   * `manage_billing:enterprise`：读取和写入企业计费数据。\n   * `read:enterprise`：读取企业资料数据。\n\n3. 复制你的 personal access token，并在将其添加到 GraphQL 客户端之前，将其妥善保存在安全的地方。\n\n### 2. 选择 GraphQL 客户端\n\n建议您使用 GraphiQL 或可用于配置基准 URL 的其他独立 GraphQL 客户端。\n\n也可以考虑使用以下 GraphQL 客户端：\n\n* [Insomnia](https://support.insomnia.rest/article/176-graphql-queries)\n* [GraphiQL](https://www.gatsbyjs.org/docs/running-queries-with-graphiql/)\n* [Postman](https://learning.getpostman.com/docs/postman/sending_api_requests/graphql/)\n\n接下来将使用 Insomnia。\n\n### 3. 配置 Insomnia 以使用 GitHub GraphQL API 与企业帐户集成\n\n1. 将基 url 和 `POST` 方法添加至 GraphQL 客户端。 使用 GraphQL 请求信息（查询）、更改信息（突变）或使用 GitHub API 传输数据时，默认 HTTP 方法`POST`，基 URL 遵循以下语法：\n   * 针对您的企业实例：`https://<HOST>/api/graphql`\n   * 对于 GitHub Enterprise Cloud：`https://api.github.com/graphql`\n   * 对于具有数据驻留的 GitHub Enterprise Cloud：`https://api.SUBDOMAIN.ghe.com/graphql`\n\n2. 选择“身份验证”菜单，然后单击“持有者令牌”。 如果之前选择了其他身份验证方法，则菜单将改为使用该方法（例如“基本身份验证”）进行标记。\n\n![Insomnia 中展开的“身份验证”菜单的屏幕截图。 菜单标签“身份验证”和“持有者令牌”选项以深橙色框出。](/assets/images/developer/graphql/insomnia-bearer-token-option.png)\n\n1. 在“TOKEN”字段中，输入你在前一步中获得的 personal access token。\n\n![Insomnia 中“持有者”身份验证设置的屏幕截图。 “令牌”字段以深橙色框出。](/assets/images/developer/graphql/insomnia-base-url-and-pat.png)\n\n1. 单击“标头”。\n\n![Insomnia 中的“设置”选项卡的屏幕截图。 “标头”选项卡以深橙色框出。](/assets/images/developer/graphql/json-content-type-header.png)\n\n1. 在“标头”选项卡下，单击“添加”。\n2. 在“标头”字段中，输入 `Content-Type`。\n3. 在“值”字段中，输入 `application/json`。\n\n现在可以开始执行查询了。\n\n## 使用企业账户 API 的查询示例\n\n此 GraphQL 查询使用 Enterprise Accounts API 请求每个设备的组织中 `public` 存储库的总数。 要自定义此查询，请用企业帐户的标识替换 `<enterprise-account-name>`。 例如，如果企业帐户位于 `https://github.com/enterprises/octo-enterprise`，请将 `<enterprise-account-name>` 替换为 `octo-enterprise`。\n\n```graphql\nquery publicRepositoriesByOrganization($slug: String!) {\n  enterprise(slug: $slug) {\n    ...enterpriseFragment\n  }\n}\n\nfragment enterpriseFragment on Enterprise {\n  ... on Enterprise{\n    name\n    organizations(first: 100){\n      nodes{\n        name\n        ... on Organization{\n          name\n          repositories(privacy: PUBLIC){\n            totalCount\n          }\n        }\n      }\n    }\n  }\n}\n\n# Passing our Enterprise Account as a variable\nvariables {\n  \"slug\": \"<enterprise-account-name>\"\n}\n```\n\n下一个 GraphQL 查询示例显示了在不使用企业帐户 API 的情况下检索每个组织中的 `public` 存储库总数的难度。 请注意，GraphQL 企业账户 API 已使企业执行此任务变得更简单，因为您只需要自定义单个变量。 要自定义此查询，请将 `<name-of-organization-one>` 和 `<name-of-organization-two>` 等项替换为实例中的组织名称。\n\n```graphql\n# Each organization is queried separately\n{\n  organizationOneAlias: organization(login: \"nameOfOrganizationOne\") {\n    # How to use a fragment\n    ...repositories\n  }\n  organizationTwoAlias: organization(login: \"nameOfOrganizationTwo\") {\n    ...repositories\n  }\n  # organizationThreeAlias ... and so on up-to lets say 100\n}\n\n## How to define a fragment\nfragment repositories on Organization {\n  name\n  repositories(privacy: PUBLIC){\n    totalCount\n  }\n}\n```\n\n## 分别查询每个组织\n\n```graphql\nquery publicRepositoriesByOrganization {\n  organizationOneAlias: organization(login: \"<name-of-organization-one>\") {\n    # How to use a fragment\n    ...repositories\n  }\n  organizationTwoAlias: organization(login: \"<name-of-organization-two>\") {\n    ...repositories\n  }\n  # organizationThreeAlias ... and so on up-to lets say 100\n}\n# How to define a fragment\nfragment repositories on Organization {\n  name\n  repositories(privacy: PUBLIC){\n    totalCount\n  }\n}\n```\n\n此 GraphQL 查询用于请求企业组织的最后 5 个日志条目。 要自定义此查询，请替换 `<org-name>` 和 `<user-name>`。\n\n```graphql\n{\n  organization(login: \"<org-name>\") {\n    auditLog(last: 5, query: \"actor:<user-name>\") {\n      edges {\n        node {\n          ... on AuditEntry {\n# Get Audit Log Entry by 'Action'\n            action\n            actorLogin\n            createdAt\n# User 'Action' was performed on\n           user{\n              name\n                email\n            }\n          }\n        }\n      }\n    }\n  }\n}\n```\n\n有关开始使用 GraphQL 的详细信息，请参阅 [GraphQL 简介](/zh/enterprise-cloud@latest/graphql/guides/introduction-to-graphql) 和 [使用 GraphQL 建立调用](/zh/enterprise-cloud@latest/graphql/guides/forming-calls-with-graphql)。\n\n## 企业账户 API 的 GraphQL 字段和类型\n\n要获取有关可与企业帐户 API 一起使用的新查询、变更和架构定义类型的详细信息，请参见任何 [GraphQL 参考页面](/zh/enterprise-cloud@latest/graphql)上的边栏，其中包含详细的 GraphQL 定义。\n\n可以通过 GraphQL 客户端访问参考文档。 有关详细信息，请参阅 [使用 GraphQL 客户端](/zh/enterprise-cloud@latest/graphql/guides/using-graphql-clients)。\n有关身份验证和速率限制详细信息等其他信息，请查看 [guides](/zh/enterprise-cloud@latest/graphql/guides)。"}