Claude Platform Docs

Создать правило федерации

$client->beta->organization->federation->rules->create(string issuerID, BetaFederationRuleMatch match, string name, string oauthScope, BetaServiceAccountTarget target, ?bool appliesToAllWorkspaces, ?array<string,string> attributes, ?string description, ?int tokenLifetimeSeconds, ?string workspaceID, ?list<AnthropicBeta> betas): BetaFederationRule
POST/v1/organizations/federation_rules

Требуется токен доступа OAuth с областью org:admin, полученный через ant auth login --scope org:admin или правило федерации удостоверений рабочих нагрузок; ключи Admin API не принимаются. См. Управление WIF с помощью Admin API.

Создать правило федерации, принадлежащее вашей организации.

Указанный издатель и целевой сервисный аккаунт должны уже существовать в той же организации; недействительные ссылки отклоняются с ошибкой 400. Ссылка на рабочее пространство проверяется. Членство не проверяется при создании правила: обмен токенов определяет одно включённое рабочее пространство на вызов и отклоняется, если целевой сервисный аккаунт не является участником этого рабочего пространства (он неявно является участником рабочего пространства по умолчанию). Правила для общеизвестных общих издателей (GitHub Actions, GitLab, Buildkite, Terraform Cloud, Google) должны ограничивать идентичность арендатора с помощью утверждения, несущего идентичность, префикса субъекта, привязывающего к арендатору (например, repo:YOUR_ORG/...), или условия CEL, ссылающегося на одно из этих утверждений идентичности (например, claims.repository_owner). Вызывающие стороны OAuth могут управлять только правилами, у которых oauth_scope равен workspace:developer или workspace:inference; для других областей требуется сеанс Console.

Parameters
issuerID: string

Tagged ID of the federation issuer.

Conditions the verified JWT must satisfy for this rule to apply. At least one of subject_prefix (other than a wildcard-only value like *), claims, or condition is required; audience alone is not sufficient.

name: string

Slug identifier (lowercase, digits, hyphens). Unique within the organization; a duplicate name returns 409.

oauthScope: string

Space-separated OAuth scopes. OAuth callers may only set workspace:developer or workspace:inference; other scopes (such as org:admin) require a Console session.

Identity that tokens minted via this rule act as. Currently always a service_account target.

appliesToAllWorkspaces?:optional bool

When true, enable this rule for every workspace in the org (including workspaces created later).

attributes?:optional array<string,string>

CEL expressions {name: expr} extracting named values from claims. Not yet supported; any non-empty value is rejected with 400.

description?:optional string

Optional free-text description.

tokenLifetimeSeconds?:optional int

Lifetime in seconds for access tokens minted via this rule (60-86400). Defaults to 3600 (1h). Minted tokens are capped at max(60, min(this value, 2 × remaining assertion validity)) seconds.

workspaceID?:optional string

Tagged ID of the workspace to enable this rule for. Required unless applies_to_all_workspaces is true. Additional workspaces can be added via the /federation_rules/{federation_rule_id}/workspaces sub-resource.

betas?:optional list<AnthropicBeta>

Optional header to specify the beta version(s) you want to use.

Returns
class BetaFederationRule { $type = 'federation_rule'; $id; $appliesToAllWorkspaces; /* 17 more */ }
Создать правило федерации
<?php

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

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

$betaFederationRule = $client->beta->organization->federation->rules->create(
  issuerID: 'issuer_id',
  match: [
    'audience' => 'audience',
    'claims' => ['foo' => 'string'],
    'condition' => 'condition',
    'subjectPrefix' => 'subject_prefix',
  ],
  name: 'x',
  oauthScope: 'x',
  target: [
    'serviceAccountID' => 'svac_01SDCCSbTxrXDpWc1phhtcfK',
    'type' => 'service_account',
    'serviceAccountName' => 'service_account_name',
  ],
  appliesToAllWorkspaces: true,
  attributes: ['foo' => 'string'],
  description: 'description',
  tokenLifetimeSeconds: 60,
  workspaceID: 'workspace_id',
  betas: [AnthropicBeta::MESSAGE_BATCHES_2024_09_24],
);

var_dump($betaFederationRule);
Returns Examples
Response 200
{
  "id": "fdrl_01SDCCSbTxrXDpWc1phhtcfK",
  "applies_to_all_workspaces": true,
  "archived_at": "2019-12-27T18:11:19.117Z",
  "archived_by_actor_id": "archived_by_actor_id",
  "attributes": {
    "foo": "string"
  },
  "created_at": "2024-10-30T23:58:27.427722Z",
  "created_by_actor_id": "created_by_actor_id",
  "description": "description",
  "issuer_id": "issuer_id",
  "issuer_name": "issuer_name",
  "match": {
    "audience": "audience",
    "claims": {
      "foo": "string"
    },
    "condition": "condition",
    "subject_prefix": "subject_prefix"
  },
  "name": "prod-deploy-pipeline",
  "oauth_scope": "oauth_scope",
  "target": {
    "service_account_id": "svac_01SDCCSbTxrXDpWc1phhtcfK",
    "type": "service_account",
    "service_account_name": "service_account_name"
  },
  "token_lifetime_seconds": 0,
  "type": "federation_rule",
  "updated_at": "2024-10-30T23:58:27.427722Z",
  "updated_by_actor_id": "updated_by_actor_id",
  "workspace_id": "workspace_id",
  "workspace_ids": [
    "string"
  ]
}