Service Principal Entitlements - Add

Добавьте субъект-службу, назначьте лицензии и расширения и сделайте их участником группы проектов в учетной записи.

ПРИМЕЧАНИЕ. Если вы работаете с регистрацией приложения AAD, вы можете найти субъект-службу приложения в корпоративных приложениях и обязательно использовать идентификатор объекта субъекта-службы в качестве параметра originId в тексте запроса.

POST https://vsaex.dev.azure.com/{organization}/_apis/serviceprincipalentitlements?api-version=7.1-preview.1

Параметры URI

Имя В Обязательно Тип Описание
organization
path True

string

Название организации Azure DevOps.

api-version
query True

string

Используемая версия API. Для использования этой версии API необходимо задать значение 7.1-preview.1.

Текст запроса

Имя Тип Описание
accessLevel

AccessLevel

Уровень доступа участника, обозначаемый лицензией.

dateCreated

string

[Только для чтения] Дата добавления элемента в коллекцию.

groupAssignments

GroupEntitlement[]

[Только для чтения] GroupEntitlements, к которым принадлежит данный член.

id

string

Уникальный идентификатор, соответствующий идентификатору идентификатора, связанного с GraphMember.

lastAccessedDate

string

[Только для чтения] Дата последнего доступа члена к коллекции.

projectEntitlements

ProjectEntitlement[]

Связь между проектом и действующими разрешениями участника в этом проекте.

servicePrincipal

GraphServicePrincipal

Справочник по ServicePrincipal.

Ответы

Имя Тип Описание
200 OK

ServicePrincipalEntitlementsPostResponse

успешная операция

Безопасность

oauth2

Type: oauth2
Flow: accessCode
Authorization URL: https://app.vssps.visualstudio.com/oauth2/authorize&response_type=Assertion
Token URL: https://app.vssps.visualstudio.com/oauth2/token?client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer

Scopes

Имя Описание
vso.memberentitlementmanagement_write Предоставляет возможность управлять пользователями, их лицензиями, а также проектами и расширениями, к которым они могут получить доступ.

Примеры

Sample Request

POST https://vsaex.dev.azure.com/{organization}/_apis/serviceprincipalentitlements?api-version=7.1-preview.1

{
  "accessLevel": {
    "accountLicenseType": "stakeholder"
  },
  "projectEntitlements": [
    {
      "group": {
        "groupType": "projectReader"
      },
      "projectRef": {
        "id": "c944c983-e90b-4499-938a-5897ea954ace"
      }
    }
  ],
  "servicePrincipal": {
    "origin": "aad",
    "originId": "92e26ce8-8e7c-4555-bdab-813b34b8e53a",
    "subjectKind": "servicePrincipal"
  }
}

Sample Response

{
  "operationResult": {
    "servicePrincipalId": "b34cdbfd-1f2d-60c6-b04a-8a99d301a6cd",
    "isSuccess": true,
    "errors": [],
    "result": {
      "servicePrincipal": {
        "subjectKind": "servicePrincipal",
        "applicationId": "a9a6a563-c4c6-42cd-8bd6-90259e8f99f4",
        "metaType": "application",
        "directoryAlias": "92e26ce8-8e7c-4555-bdab-813b34b8e53a",
        "domain": "5e46c442-89f0-4452-b132-3336eaeec3fc",
        "principalName": "a9a6a563-c4c6-42cd-8bd6-90259e8f99f4",
        "mailAddress": null,
        "origin": "aad",
        "originId": "92e26ce8-8e7c-4555-bdab-813b34b8e53a",
        "displayName": "Service principal",
        "_links": {
          "self": {
            "href": "https://vssps.dev.azure.com/fabrikam/_apis/Graph/ServicePrincipals/aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk"
          },
          "memberships": {
            "href": "https://vssps.dev.azure.com/fabrikam/_apis/Graph/Memberships/aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk"
          },
          "membershipState": {
            "href": "https://vssps.dev.azure.com/fabrikam/_apis/Graph/MembershipStates/aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk"
          },
          "storageKey": {
            "href": "https://vssps.dev.azure.com/fabrikam/_apis/Graph/StorageKeys/aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk"
          },
          "avatar": {
            "href": "https://dev.azure.com/fabrikam/_apis/GraphProfile/MemberAvatars/aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk"
          }
        },
        "url": "https://vssps.dev.azure.com/fabrikam/_apis/Graph/ServicePrincipals/aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk",
        "descriptor": "aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk"
      },
      "id": "b34cdbfd-1f2d-60c6-b04a-8a99d301a6cd",
      "accessLevel": {
        "licensingSource": "account",
        "accountLicenseType": "earlyAdopter",
        "msdnLicenseType": "none",
        "licenseDisplayName": "Early Adopter",
        "status": "pending",
        "statusMessage": "",
        "assignmentSource": "unknown"
      },
      "lastAccessedDate": "0001-01-01T00:00:00Z",
      "dateCreated": "2023-03-27T11:32:45.7401972Z",
      "projectEntitlements": [],
      "groupAssignments": []
    }
  },
  "isSuccess": true,
  "servicePrincipalEntitlement": {
    "servicePrincipal": {
      "subjectKind": "servicePrincipal",
      "applicationId": "a9a6a563-c4c6-42cd-8bd6-90259e8f99f4",
      "metaType": "application",
      "directoryAlias": "92e26ce8-8e7c-4555-bdab-813b34b8e53a",
      "domain": "5e46c442-89f0-4452-b132-3336eaeec3fc",
      "principalName": "a9a6a563-c4c6-42cd-8bd6-90259e8f99f4",
      "mailAddress": null,
      "origin": "aad",
      "originId": "92e26ce8-8e7c-4555-bdab-813b34b8e53a",
      "displayName": "Service principal",
      "_links": {
        "self": {
          "href": "https://vssps.dev.azure.com/fabrikam/_apis/Graph/ServicePrincipals/aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk"
        },
        "memberships": {
          "href": "https://vssps.dev.azure.com/fabrikam/_apis/Graph/Memberships/aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk"
        },
        "membershipState": {
          "href": "https://vssps.dev.azure.com/fabrikam/_apis/Graph/MembershipStates/aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk"
        },
        "storageKey": {
          "href": "https://vssps.dev.azure.com/fabrikam/_apis/Graph/StorageKeys/aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk"
        },
        "avatar": {
          "href": "https://dev.azure.com/fabrikam/_apis/GraphProfile/MemberAvatars/aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk"
        }
      },
      "url": "https://vssps.dev.azure.com/fabrikam/_apis/Graph/ServicePrincipals/aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk",
      "descriptor": "aadsp.YjM0Y2RiZmQtMWYyZC03MGM2LWIwNGEtOGE5OWQzMDFhNmNk"
    },
    "id": "b34cdbfd-1f2d-60c6-b04a-8a99d301a6cd",
    "accessLevel": {
      "licensingSource": "account",
      "accountLicenseType": "earlyAdopter",
      "msdnLicenseType": "none",
      "licenseDisplayName": "Early Adopter",
      "status": "pending",
      "statusMessage": "",
      "assignmentSource": "unknown"
    },
    "lastAccessedDate": "0001-01-01T00:00:00Z",
    "dateCreated": "2023-03-27T11:32:45.7401972Z",
    "projectEntitlements": [],
    "groupAssignments": []
  }
}

Определения

Имя Описание
AccessLevel

Лицензия, назначенная пользователю

AccountLicenseType

Тип лицензии учетной записи (например, Express, Заинтересованные лица и т. д.). Чтобы использовать AccountLicenseType, LicensingSource должен быть определен как account в тексте запроса.

AccountUserStatus

Состояние пользователя в учетной записи

AssignmentSource

Источник назначения лицензии (например, Group, Unknown и т. д.

GraphGroup

Сущность группы графов

GraphServicePrincipal
GraphUser
Group

Группа проекта (например, участник, читатель и т. д.)

GroupEntitlement

Сущность группы с дополнительными свойствами, включая лицензию, расширения и членство в проекте

GroupLicensingRuleStatus

Состояние правила группы.

GroupType

Тип группы

LicensingSource

Источник лицензирования (например, учетная запись. MSDN и т. д.)

MsdnLicenseType

Тип лицензии MSDN (например, Visual Studio Professional, Visual Studio Enterprise и т. д.). Чтобы использовать MsdnLicenseType, LicensingSource должен быть определен как "msdn" в тексте запроса.

ProjectEntitlement

Связь между проектом и действующими разрешениями пользователя в этом проекте.

ProjectPermissionInherited

Наследует ли пользователь разрешения для проекта через членство в группе Azure DevOps или AAD.

ProjectRef

Ссылка на проект

ReferenceLinks

Класс, представляющий коллекцию ссылок REST.

ServicePrincipalEntitlement
ServicePrincipalEntitlementOperationResult
ServicePrincipalEntitlementsPostResponse
TeamRef

Ссылка на команду

UserEntitlement

Сущность пользователя с дополнительными свойствами, включая лицензию, расширения и членство в проекте.

AccessLevel

Лицензия, назначенная пользователю

Имя Тип Описание
accountLicenseType

AccountLicenseType

Тип лицензии учетной записи (например, Express, Заинтересованные лица и т. д.). Чтобы использовать AccountLicenseType, LicensingSource должен быть определен как account в тексте запроса.

assignmentSource

AssignmentSource

Источник назначения лицензии (например, Group, Unknown и т. д.

licenseDisplayName

string

Отображаемое имя лицензии

licensingSource

LicensingSource

Источник лицензирования (например, учетная запись. MSDN и т. д.)

msdnLicenseType

MsdnLicenseType

Тип лицензии MSDN (например, Visual Studio Professional, Visual Studio Enterprise и т. д.). Чтобы использовать MsdnLicenseType, LicensingSource должен быть определен как "msdn" в тексте запроса.

status

AccountUserStatus

Состояние пользователя в учетной записи

statusMessage

string

Сообщение о состоянии.

AccountLicenseType

Тип лицензии учетной записи (например, Express, Заинтересованные лица и т. д.). Чтобы использовать AccountLicenseType, LicensingSource должен быть определен как account в тексте запроса.

Имя Тип Описание
advanced

string

earlyAdopter

string

express

string

none

string

professional

string

stakeholder

string

AccountUserStatus

Состояние пользователя в учетной записи

Имя Тип Описание
active

string

Пользователь выполнил вход в учетную запись VSTS хотя бы один раз.

deleted

string

Пользователь удаляется из учетной записи VSTS администратором учетной записи VSTS

disabled

string

Пользователь не может войти в систему; в основном используется администратором для временного удаления пользователя из-за отсутствия или перераспределения лицензий

expired

string

Пользователь может войти в систему; в основном используется, когда срок действия лицензии истек, и мы предоставляем льготный период

none

string

pending

string

Администратор учетной записи VSTS приглашает пользователя присоединиться к учетной записи VSTS, но он еще не зарегистрировался или не вошел в систему.

pendingDisabled

string

Пользователь отключен; При повторном входе они по-прежнему будут находиться в состоянии Ожидание

AssignmentSource

Источник назначения лицензии (например, Group, Unknown и т. д.

Имя Тип Описание
groupRule

string

none

string

unknown

string

GraphGroup

Сущность группы графов

Имя Тип Описание
_links

ReferenceLinks

Это поле содержит ноль или более интересных ссылок на тему графа. Эти ссылки можно вызвать для получения дополнительных связей или более подробных сведений об этой теме графа.

description

string

Короткая фраза, чтобы помочь читателям-людьми устранить неоднозначности групп с похожими именами

descriptor

string

Дескриптор является основным способом ссылки на субъект графа во время работы системы. Это поле однозначно идентифицирует одну и ту же тему графа как в учетных записях, так и в организациях.

displayName

string

Это неуникальное отображаемое имя субъекта графа. Чтобы изменить это поле, необходимо изменить его значение в поставщике источника.

domain

string

Представляет имя контейнера источника для элемента графа. (Для MSA это "Идентификатор Windows Live ID", для AD — имя домена, для AAD — идентификатор клиента каталога, для групп VSTS — ScopeId и т. д.)

legacyDescriptor

string

[Только для внутреннего использования] Устаревший дескриптор доступен на случай, если вам потребуется получить доступ к старой версии IMS с помощью дескриптора удостоверения.

mailAddress

string

Адрес электронной почты записи для данного элемента графа. Это может отличаться от имени участника.

origin

string

Тип поставщика источника для идентификатора источника (например, AD, AAD, MSA).

originId

string

Уникальный идентификатор из системы источника. Обычно это идентификатор sid, идентификатор объекта или guid. Операции связывания и отмены связи могут привести к изменению этого значения для пользователя, так как пользователь не поддерживается другим поставщиком и имеет другой уникальный идентификатор в новом поставщике.

principalName

string

Это principalName этого элемента графа из поставщика источника. Поставщик источника может изменять это поле со временем, и VSTS не гарантирует его неизменность в течение срока жизни члена графа.

subjectKind

string

Это поле определяет тип субъекта графа (например, "Группа", "Область", "Пользователь").

url

string

Этот URL-адрес является полным маршрутом к исходному ресурсу этого субъекта графа.

GraphServicePrincipal

Имя Тип Описание
_links

ReferenceLinks

Это поле содержит ноль или более интересных ссылок на тему графа. Эти ссылки можно вызвать для получения дополнительных связей или более подробных сведений об этой теме графа.

applicationId

string

descriptor

string

Дескриптор является основным способом ссылки на субъект графа во время работы системы. Это поле однозначно идентифицирует одну и ту же тему графа как в учетных записях, так и в организациях.

directoryAlias

string

Короткое, обычно уникальное имя пользователя в резервном каталоге. Для пользователей AAD это соответствует почтовому псевдониму, который часто, но не обязательно похож на часть почтового адреса пользователя перед знаком @. Для пользователей GitHub это соответствует дескриптору пользователя GitHub.

displayName

string

Это неуникальное отображаемое имя субъекта графа. Чтобы изменить это поле, необходимо изменить его значение в поставщике источника.

domain

string

Представляет имя контейнера источника для элемента графа. (Для MSA это "Идентификатор Windows Live ID", для AD — имя домена, для AAD — идентификатор клиента каталога, для групп VSTS — ScopeId и т. д.)

isDeletedInOrigin

boolean

Если значение равно true, группа была удалена в поставщике удостоверений.

legacyDescriptor

string

[Только для внутреннего использования] Устаревший дескриптор доступен на случай, если вам потребуется получить доступ к старой версии IMS с помощью дескриптора удостоверения.

mailAddress

string

Адрес электронной почты записи для данного элемента графа. Это может отличаться от имени участника.

metaType

string

Тип метаданных пользователя в источнике, например "member", "guest" и т. д. Набор возможных значений см. в разделе UserMetaType.

origin

string

Тип поставщика источника для идентификатора источника (например, AD, AAD, MSA).

originId

string

Уникальный идентификатор из системы источника. Обычно это идентификатор sid, идентификатор объекта или guid. Операции связывания и отмены связи могут привести к изменению этого значения для пользователя, так как пользователь не поддерживается другим поставщиком и имеет другой уникальный идентификатор в новом поставщике.

principalName

string

Это principalName этого элемента графа из поставщика источника. Поставщик источника может изменять это поле со временем, и VSTS не гарантирует его неизменность в течение срока жизни члена графа.

subjectKind

string

Это поле определяет тип субъекта графа (например, "Группа", "Область", "Пользователь").

url

string

Этот URL-адрес является полным маршрутом к исходному ресурсу этого субъекта графа.

GraphUser

Имя Тип Описание
_links

ReferenceLinks

Это поле содержит ноль или более интересных ссылок на тему графа. Эти ссылки можно вызвать для получения дополнительных связей или более подробных сведений об этой теме графа.

descriptor

string

Дескриптор является основным способом ссылки на субъект графа во время работы системы. Это поле однозначно идентифицирует одну и ту же тему графа как в учетных записях, так и в организациях.

directoryAlias

string

Короткое, обычно уникальное имя пользователя в резервном каталоге. Для пользователей AAD это соответствует почтовому псевдониму, который часто, но не обязательно похож на часть почтового адреса пользователя перед знаком @. Для пользователей GitHub это соответствует дескриптору пользователя GitHub.

displayName

string

Это неуникальное отображаемое имя субъекта графа. Чтобы изменить это поле, необходимо изменить его значение в поставщике источника.

domain

string

Представляет имя контейнера источника для элемента графа. (Для MSA это "Идентификатор Windows Live ID", для AD — имя домена, для AAD — идентификатор клиента каталога, для групп VSTS — ScopeId и т. д.)

isDeletedInOrigin

boolean

Если значение равно true, группа была удалена в поставщике удостоверений.

legacyDescriptor

string

[Только для внутреннего использования] Устаревший дескриптор доступен на случай, если вам потребуется получить доступ к старой версии IMS с помощью дескриптора удостоверения.

mailAddress

string

Адрес электронной почты записи для данного элемента графа. Это может отличаться от имени участника.

metaType

string

Тип метаданных пользователя в источнике, например "member", "guest" и т. д. Набор возможных значений см. в разделе UserMetaType.

origin

string

Тип поставщика источника для идентификатора источника (например, AD, AAD, MSA).

originId

string

Уникальный идентификатор из системы источника. Обычно это идентификатор sid, идентификатор объекта или guid. Операции связывания и отмены связи могут привести к изменению этого значения для пользователя, так как пользователь не поддерживается другим поставщиком и имеет другой уникальный идентификатор в новом поставщике.

principalName

string

Это principalName этого элемента графа из поставщика источника. Поставщик источника может изменять это поле со временем, и VSTS не гарантирует его неизменность в течение срока жизни члена графа.

subjectKind

string

Это поле определяет тип субъекта графа (например, "Группа", "Область", "Пользователь").

url

string

Этот URL-адрес является полным маршрутом к исходному ресурсу этого субъекта графа.

Group

Группа проекта (например, участник, читатель и т. д.)

Имя Тип Описание
displayName

string

Отображаемое имя группы

groupType

GroupType

Тип группы

GroupEntitlement

Сущность группы с дополнительными свойствами, включая лицензию, расширения и членство в проекте

Имя Тип Описание
group

GraphGroup

Ссылка на член.

id

string

Уникальный идентификатор, соответствующий идентификатору GraphMember.

lastExecuted

string

[Только для чтения] Время последнего выполнения правила группового лицензирования (независимо от того, были ли внесены какие-либо изменения).

licenseRule

AccessLevel

Правило лицензии.

members

UserEntitlement[]

Участники группы. Используется только при создании новой группы.

projectEntitlements

ProjectEntitlement[]

Связь между проектом и действующими разрешениями участника в этом проекте.

status

GroupLicensingRuleStatus

Состояние правила группы.

GroupLicensingRuleStatus

Состояние правила группы.

Имя Тип Описание
applied

string

Применяется правило

applyPending

string

Правило создано или обновлено, но применение ожидается

incompatible

string

Правило группы было несовместимо

unableToApply

string

Правило не удалось применить неожиданно, и его следует повторить

GroupType

Тип группы

Имя Тип Описание
custom

string

projectAdministrator

string

projectContributor

string

projectReader

string

projectStakeholder

string

LicensingSource

Источник лицензирования (например, учетная запись. MSDN и т. д.)

Имя Тип Описание
account

string

auto

string

msdn

string

none

string

profile

string

trial

string

MsdnLicenseType

Тип лицензии MSDN (например, Visual Studio Professional, Visual Studio Enterprise и т. д.). Чтобы использовать MsdnLicenseType, LicensingSource должен быть определен как "msdn" в тексте запроса.

Имя Тип Описание
eligible

string

enterprise

string

none

string

platforms

string

premium

string

professional

string

testProfessional

string

ultimate

string

ProjectEntitlement

Связь между проектом и действующими разрешениями пользователя в этом проекте.

Имя Тип Описание
assignmentSource

AssignmentSource

Источник назначения (например, Group или Unknown).

group

Group

Группа проекта (например, участник, читатель и т. д.)

projectPermissionInherited

ProjectPermissionInherited

Наследует ли пользователь разрешения для проекта через членство в группе Azure DevOps или AAD.

projectRef

ProjectRef

Ссылка на проект

teamRefs

TeamRef[]

Ссылка на команду

ProjectPermissionInherited

Наследует ли пользователь разрешения для проекта через членство в группе Azure DevOps или AAD.

Имя Тип Описание
inherited

string

notInherited

string

notSet

string

ProjectRef

Ссылка на проект

Имя Тип Описание
id

string

Идентификатор проекта.

name

string

Имя проекта.

Класс, представляющий коллекцию ссылок REST.

Имя Тип Описание
links

object

Представление ссылок только для чтения. Так как ссылочные ссылки доступны только для чтения, мы хотим предоставить их только для чтения.

ServicePrincipalEntitlement

Имя Тип Описание
accessLevel

AccessLevel

Уровень доступа участника, обозначаемый лицензией.

dateCreated

string

[Только для чтения] Дата добавления элемента в коллекцию.

groupAssignments

GroupEntitlement[]

[Только для чтения] GroupEntitlements, к которым принадлежит данный член.

id

string

Уникальный идентификатор, соответствующий идентификатору идентификатора, связанного с GraphMember.

lastAccessedDate

string

[Только для чтения] Дата последнего доступа члена к коллекции.

projectEntitlements

ProjectEntitlement[]

Связь между проектом и действующими разрешениями участника в этом проекте.

servicePrincipal

GraphServicePrincipal

Справочник по ServicePrincipal.

ServicePrincipalEntitlementOperationResult

Имя Тип Описание
errors

object[]

Список кодов ошибок, сопряженных с соответствующими сообщениями об ошибках.

isSuccess

boolean

Состояние успешного выполнения операции.

result

string

Результирующее свойство прав. Конкретные реализации см. также в разделе:

servicePrincipalId

string

Идентификатор объекта ServicePrincipal, с которой выполняется действие.

ServicePrincipalEntitlementsPostResponse

Имя Тип Описание
isSuccess

boolean

operationResult

ServicePrincipalEntitlementOperationResult

servicePrincipalEntitlement

ServicePrincipalEntitlement

TeamRef

Ссылка на команду

Имя Тип Описание
id

string

Идентификатор команды

name

string

Имя команды

UserEntitlement

Сущность пользователя с дополнительными свойствами, включая лицензию, расширения и членство в проекте.

Имя Тип Описание
accessLevel

AccessLevel

Уровень доступа участника, обозначаемый лицензией.

dateCreated

string

[Только для чтения] Дата добавления элемента в коллекцию.

groupAssignments

GroupEntitlement[]

[Только для чтения] GroupEntitlements, к которым принадлежит данный член.

id

string

Уникальный идентификатор, соответствующий идентификатору идентификатора, связанного с GraphMember.

lastAccessedDate

string

[Только для чтения] Дата последнего доступа члена к коллекции.

projectEntitlements

ProjectEntitlement[]

Связь между проектом и действующими разрешениями участника в этом проекте.

user

GraphUser

Справочник пользователя.