Claude Platform Docs

驗證外掛程式市集儲存庫

$client->beta->organization->pluginMarketplaces->validateRepository(string repositoryURL, ?string ref, ?list<AnthropicBeta> betas): PluginMarketplaceValidationReport
POST/v1/organizations/plugin_marketplaces/validate_repository
Requires anthropic-beta: ce-plugins-2026-09-01. How to send beta headers

檢查存放於公開 GitHub 儲存庫中的外掛程式市集是否能同步至 claude.ai,而不會連接或儲存該市集。

若要改為檢查市集目錄的 .zip,請使用「驗證外掛程式市集封存檔」。

報告會說明 marketplace.json 的格式是否正確、同步時會略過哪些外掛程式及其原因,以及哪些外掛程式只會部分同步(部分檔案會被排除)。不存在、為私人或沒有指定分支或提交的儲存庫會被回報而非拒絕:回應會是一份 valid: false 的報告。市集以外的外掛程式來源會以匿名方式從 GitHub 擷取,因此私人來源會被回報為找不到或需要登入 GitHub;位於其他主機上的來源不會在此擷取,報告會註明將在市集實際同步時進行檢查。

不會在 Compliance API 活動摘要中記錄任何內容。

如需實際範例,請參閱外掛程式 API 指南中的驗證市集內容。

接受的憑證:具有 read:plugins 或 write:plugins 範圍的 Admin API 金鑰;read:org_audit 和 read:compliance_org_data 不授予此權限。

每個請求都必須包含 beta 標頭 anthropic-beta: ce-plugins-2026-09-01。缺少此標頭的請求會傳回 404,與端點不存在時完全相同。外掛程式 API 目前為 beta 版,僅供 Claude Enterprise 組織使用。Claude Platform(Claude Console)組織或已啟用 HIPAA 就緒功能的組織無法使用。

Parameters
repositoryURL: string

The https:// URL of a public repository on github.com that holds the marketplace. A URL longer than 2,048 characters, on any other host or scheme, with a port other than 443 or 80, with credentials in it, or that does not name exactly owner/repo (a trailing .git or / is accepted) is a 400. A private or missing repository is reported in the response, not refused.

ref?: optional string

The branch to validate the tip of, or the full 40-character SHA of the commit to validate. When omitted, the branch a synchronization would read (usually the repository's default branch); if that is not the default branch, the report's ref says which branch was read. An empty string, a value longer than 255 characters, or one that contains .. or a character other than ASCII letters, digits, ., _, -, +, and /, is a 400. Any other value that is not a 40-character SHA is read as a branch name; if the repository has no such branch, the response is a report with valid: false, not a 400.

betas?: optional list<AnthropicBeta>⁠Header parameter

This endpoint is in beta: requests must send ce-plugins-2026-09-01 in this header.

Returns
class PluginMarketplaceValidationReport { $type = 'plugin_marketplace_validation_report'; $commitSha; $manifestError; /* 6 more */ }
"plugin_marketplace_validation_report" type

Always plugin_marketplace_validation_report.

?string commitSha

The full SHA of the commit that was validated: for a repository, the commit that was read; for an uploaded archive, the commit recorded in the archive's comment (as a Git host's download writes it; not verified), else null.

?string manifestError

Set when nothing could be validated: the repository or archive could not be read, or marketplace.json is missing, malformed or over a limit. Null otherwise.

?string manifestErrorCode

A stable identifier for manifest_error; null when that is.

One entry per plugin a synchronization would skip entirely, keyed by the plugin's name in marketplace.json.

One entry per plugin that would synchronize with some of its contents left out, keyed by the plugin's name in marketplace.json.

?string ref

For a repository, the branch that was read by name: the one requested, or else the branch a synchronization of this repository is set to read. Null when no branch is named or set and the repository's default branch was read, for a request by commit SHA, and for an uploaded archive.

int totalPluginCount

How many plugins marketplace.json declares; 0 when it could not be read.

bool valid

True when marketplace.json is well-formed and no plugin would be skipped; warnings never make it false.

驗證外掛程式市集儲存庫
<?php

require_once dirname(__DIR__) . '/vendor/autoload.php';

use Anthropic\Client;
use Anthropic\Beta\AnthropicBeta;

$client = new Client(apiKey: 'my-anthropic-api-key');

$betaPluginMarketplaceValidationReport = $client
  ->beta
  ->organization
  ->pluginMarketplaces
  ->validateRepository(
  repositoryURL: 'https://github.com/example-org/example-marketplace',
  ref: 'main',
  betas: [AnthropicBeta::MESSAGE_BATCHES_2024_09_24],
);

var_dump($betaPluginMarketplaceValidationReport);
Returns Examples
Response 200
{
  "commit_sha": "9fceb02d0ae598e95dc970b74767f19372d61af8",
  "manifest_error": "manifest_error",
  "manifest_error_code": "marketplace_sync_manifest_not_found",
  "plugin_errors": [
    {
      "error": "error",
      "error_code": "marketplace_sync_plugin_missing_manifest",
      "name": "name"
    }
  ],
  "plugin_warnings": [
    {
      "name": "name",
      "warnings": [
        {
          "error_code": "marketplace_sync_zipball_symlink_dangling",
          "message": "message"
        }
      ]
    }
  ],
  "ref": "main",
  "total_plugin_count": 0,
  "type": "plugin_marketplace_validation_report",
  "valid": false
}