Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Cada extensión tiene un archivo de manifiesto JSON que define información básica sobre la extensión. El archivo también define cómo puede ampliar y mejorar la experiencia. En este artículo se muestra cómo crear un manifiesto para la extensión en Azure DevOps.
Sugerencia
Consulte nuestra documentación más reciente sobre el desarrollo de extensiones mediante el SDK de extensión de Azure DevOps.
Cree un archivo denominado vss-extension.json en la raíz de la carpeta de extensión. Este archivo contiene atributos necesarios, como el identificador de la extensión y sus destinos de instalación, donde se puede ejecutar. También define las contribuciones que está realizando la extensión.
Consulte el ejemplo siguiente de un manifiesto típico:
{
"manifestVersion": 1,
"id": "tools",
"version": "0.1.0",
"name": "Fabrikam Tools",
"publisher": "fabrikam",
"description": "Awesome tools to help you and your team do great things everyday.",
"targets": [
{
"id": "Microsoft.VisualStudio.Services"
}
],
"icons": {
"default": "images/fabrikam-logo.png"
},
"scopes": [
"vso.work",
"vso.code_write",
"vso.build_execute"
],
"categories": [
"Azure Boards"
],
"branding": {
"color": "rgb(34, 34, 34)",
"theme": "dark"
},
"content": {
"details": {
"path": "readme.md"
},
"license": {
"path": "eula.md"
}
},
"links": {
"getstarted": {
"uri": "https://www.fabrikam-fiber-inc.com/help/getstarted"
},
"support": {
"uri": "https://www.fabrikam-fiber-inc.com/support"
}
},
"repository": {
"type": "git",
"uri": "https://github.com/fabrikam-fiber-inc/myextension"
},
"contributions": [
{
"id": "showCommits",
"type": "ms.vss-web.action",
"description": "Adds a menu action from builds grid to show associated items.",
"targets": [
"ms.vss-build-web.completed-build-menu"
],
"properties": {
"title": "View associated items",
"uri": "launch.html"
}
}
],
"files": [
{
"path": "launch.html",
"addressable": true
},
{
"path": "node_modules/vss-web-extension-sdk/lib",
"addressable": true,
"packagePath": "lib"
}
]
}
Para obtener información sobre las entradas, consulte ...
Atributos requeridos
Se requieren las siguientes propiedades:
| Propiedad | Descripción | Notas |
|---|---|---|
| manifestVersion | Número correspondiente a la versión del formato de manifiesto. | debe ser 1. |
| ID | Identificador de la extensión. | Th ID es una cadena que debe ser única entre las extensiones del mismo publicador. Debe comenzar con un carácter alfabético o numérico y contener "A" a "Z", "a" a "z", "0" a "9" y "-" (guion). Ejemplo: sample-extension. |
| Versión | Cadena que especifica la versión de una extensión. | Debe tener el formato major.minor.patch, por ejemplo 0.1.2 o 1.0.0. También puede agregar un cuarto número para el formato siguiente: 0.1.2.3 |
| nombre | Nombre corto y fácil de leer de la extensión. Limitado a 200 caracteres. | Ejemplo: "Fabrikam Agile Board Extension". |
| editora | Identificador del publicador. | Este identificador debe coincidir con el identificador en el que se publica la extensión. Consulte Creación y administración de un publicador. |
| Categorías | Matriz de cadenas que representan las categorías a las que pertenece la extensión. Se debe proporcionar al menos una categoría y no hay ningún límite para el número de categorías que puede incluir. | Valores válidos: Azure Repos, Azure Boards, Azure Pipelines, Azure Test Plansy Azure Artifacts.Notas:
- Si usa la extensión Azure DevOps Extension Tasks para publicar, asegúrese de que su versión es >= 1.2.8. Es posible que tenga que aprobar la actualización de la extensión debido a cambios recientes en el ámbito. : las categorías mencionadas anteriormente están presentes de forma nativa en Visual Studio Marketplace y Azure DevOps Server 2019 & anteriores. |
| Objetivos | Los productos y servicios compatibles con su integración o extensión. Para obtener más información, consulte Destinos de instalación. | Matriz de objetos, donde cada objeto tiene un id campo que indica uno de los siguientes:
Microsoft.VisualStudio.Services (extensiones que funcionan con Azure DevOps),- Microsoft.TeamFoundation.Server (extensión que funciona con Azure DevOps Server),- Microsoft.VisualStudio.Services.Integration, - Microsoft.TeamFoundation.Server.Integration (integraciones que funcionan con Azure DevOps Server) |
Ejemplos de atributos necesarios
{
"manifestVersion": 1,
"id": "tools",
"version": "0.1.0",
"name": "Fabrikam Tools",
"publisher": "fabrikam",
"targets": [
{
"id": "Microsoft.VisualStudio.Services"
}
]
}
Atributos opcionales
Atributos en tiempo de ejecución
| Propiedad | Descripción | Notas |
|---|---|---|
| Ámbitos | Matriz de ámbitos de autorización (cadenas) que enumera los permisos necesarios para la extensión. | Por ejemplo, vso.work y vs.code_write indican que la extensión necesita acceso de solo lectura a los elementos de trabajo y acceso de lectura y escritura al código fuente (y los recursos relacionados). Los ámbitos se presentan al usuario al instalar la extensión. Para obtener más información, consulte la lista completa de ámbitos. |
| Demandas | Matriz de demandas (cadenas) que enumera las funcionalidades necesarias para la extensión. | Por ejemplo, indica que la extensión usa las API de la versión 3.0 y, por tanto, api-version/3.0 no se puede ejecutar en productos anteriores que no admiten esta versión. Para obtener más información, consulte la lista completa de demandas. |
| baseUri | (Opcional) Dirección URL base para todas las direcciones URL relativas especificadas por las contribuciones de la extensión. | Por ejemplo: https://myapp.com/{{account.name}}/. Esta propiedad debe dejarse vacía si el contenido de la extensión se empaqueta con la extensión. |
| Contribuciones | Matriz de contribuciones al sistema. | |
| tiposDeContribución | Matriz de tipos de contribución definidos por la extensión |
{
"scopes": [
"vso.work",
"vso.code_write",
"vso.build_execute"
],
"demands": [
"api-version/3.0"
],
"contributions": [
{
"id": "showCommits",
"type": "ms.vss-web.action",
"description": "Adds a menu action from builds grid to show associated items.",
"targets": [
"ms.vss-build-web.completed-build-menu"
],
"properties": {
"title": "View associated items",
"uri": "launch.html"
}
}
]
}
Atributos de detección
Las siguientes propiedades opcionales ayudan a los usuarios a detectar y obtener información sobre la extensión:
| Propiedad | Descripción | Notas |
|---|---|---|
| descripción | Algunas oraciones que describen las extensiones. Limitado a 200 caracteres. | La descripción debe ser el "discurso de ascensor" de la extensión: un par de líneas para describir la extensión en el Marketplace y lograr que las personas quieran instalarla. Vea el ejemplo siguiente |
| Iconos | Diccionario de iconos que representan la extensión. | Claves válidas: default (128 x 128 píxeles) de tipo BMP, GIF, EXIF, JPG, PNG y TIFF). En el futuro se pueden admitir otras claves como large (512 x 512 píxeles). El valor de cada clave es la ruta de acceso al archivo de icono de la extensión. |
| Etiquetas | Arreglo de etiquetas de texto para ayudar a los usuarios a encontrar tu extensión. | Ejemplos: agile, project management, task timer, etc. |
| capturas de pantalla | Matriz de imágenes que no se pudieron incluir en el contenido. | Las capturas de pantalla son más valiosas cuando se incluyen en el contenido y deben usarse allí para ayudar a crear una página de detalles de mercado de calidad para la extensión. Use capturas de pantalla para imágenes menos importantes que no aparezcan en el contenido. Cada imagen debe ser de 1366 x 768 píxeles. El path de cada elemento es la ruta de acceso al archivo en la extensión. |
| contenido | Diccionario de archivos de contenido que describen la extensión a los usuarios. |
Cada extensión debe incluir contenido sólido. Así es como mostrará a los usuarios lo que puede hacer la extensión. Haga que sea rico, consumible e incluya capturas de pantalla cuando sea necesario. Incluya un overview.md archivo como elemento de contenido base. Se supone que cada archivo está en formato Markdown con sabor a GitHub . El path de cada elemento es la ruta de acceso al archivo Markdown de la extensión. Claves válidas: details. Es posible que se admitan otras claves en el futuro. |
| Enlaces | Diccionario de vínculos que ayudan a los usuarios a obtener más información sobre la extensión, obtener soporte técnico y mover. | Claves válidas: getstarted - Son los primeros pasos, cómo configurar o usar.
learn : contenido más profundo para ayudar a los usuarios a comprender mejor su extensión o servicio.
license - Contrato de licencia de usuario final.
privacypolicy - directiva de privacidad para una extensión.
support - obtener ayuda y soporte técnico para una extensión. El valor de cada clave es un objeto con un uri campo, que es la dirección URL absoluta del vínculo. |
| repositorio | Diccionario de propiedades que describen el repositorio de código fuente de la extensión | Claves válidas: type tipo de repositorio. Ejemplo: git.
uri - Dirección URL absoluta del repositorio. |
| Insignias | Matriz de vínculos a distintivos de metadatos externos, como TravisCI, Appveyor, etc., desde los sitios de distintivos aprobados | Claves válidas: href - Enlace al que el usuario navega al seleccionar el distintivo.
uri : la dirección URL absoluta de la imagen de distintivo que se va a mostrar.
description - Descripción del distintivo, que se mostrará al pasar el ratón por encima. |
| Marca | Diccionario de propiedades relacionadas con la marca. | Claves válidas: : color color principal de la extensión o publicador; puede ser un hexadecimal (#ff00ff), RGB (rgb(100,200,50)) o nombres de color HTML admitidos (azul).
theme - complementa el color; usa oscuro para colores oscuros de personalización de marca, o claro para colores más claros de personalización de marca. |
Hacer pública una extensión
De forma predeterminada, todas las extensiones de Marketplace de Azure DevOps son privadas. Están ocultos de la vista pública y solo son visibles para el publicador y las cuentas específicas compartidas por el publicador. Si su publicador está verificado, puede hacer que su extensión sea pública estableciendo la marca Public en el archivo manifiesto de la extensión.
{
"galleryFlags": [
"Public"
]
}
O:
{
"public": true
}
Para obtener más información, consulte Package/Publish/Install.
Marcar una extensión para que esté en versión preliminar
Si la extensión está lista para que los usuarios de Marketplace prueben, pero sigue trabajando con algunos errores o agregando función, puede marcarla como preview:
{
"galleryFlags": [
"Preview"
]
}
Marcar una extensión como versión preliminar de pago
Si tiene previsto vender la extensión en Marketplace, marque la versión preliminar de pago. Una extensión marcada como gratuita no se puede cambiar a pago.
{
"galleryFlags": [
"Paid",
"Preview"
]
}
Marcar una extensión como de pago
Si desea vender su extensión en el Marketplace, puede marcarla con la bandera Paid y la etiqueta __BYOLENFORCED (comienza con dos caracteres de subrayado):
{
"galleryFlags": [
"Paid"
],
"tags": [
"__BYOLENFORCED"
]
}
Tanto la bandera Paid como la etiqueta __BYOLENFORCED deben estar presentes para marcar una extensión como de pago en el Marketplace. Bring-Your-Own-License (BYOL) significa que el publicador de la extensión proporciona el mecanismo de facturación y licencias para la extensión, ya que Microsoft no proporciona este mecanismo para las extensiones de Azure DevOps. Todas las extensiones de pago son necesarias para definir la directiva de privacidad, la directiva de soporte técnico y un contrato de licencia de usuario final. Los publicadores deben proporcionar contenido para la pestaña de precios de Marketplace de la siguiente manera:
{
"content": {
"details": {
"path": "overview.md"
},
"pricing": {
"path": "pricing.md"
}
}
}
También debe agregar una nueva sección en el manifiesto de extensión para invalidar las licencias de pago. En el futuro, eliminamos la verificación de licencias de pago y ya no requerimos la anulación. Por ahora, asegúrate de que la extensión se muestre como esperas. Cada invalidación consta de un "identificador" y un "comportamiento". Haga que el "ID" coincida con el identificador de las contribuciones definidas en el manifiesto.
"licensing": {
"overrides": [
{ "id": "my-hub", "behavior": " AlwaysInclude" }
]
}
Si la extensión BYOL de pago ofrece un período de prueba (se recomienda, por lo tanto), puede especificar la duración de la versión de prueba en días:
{
"galleryproperties": {
"trialDays": "30"
}
}
Nota:
Si quiere tener como destino Azure DevOps, pero no desea exponer una opción Descargar para la extensión, agregue la __DoNotDownload etiqueta (comienza con dos caracteres de subrayado) al manifiesto de extensión.
Si va a mover una extensión del sistema de licencias de facturación & ofrecidas anteriormente por Microsoft al modelo BYOL, póngase en contacto con nosotros para conocer los procedimientos adecuados.
Ejemplo de más propiedades
{
"description": "Awesome tools to help you and your team do great things everyday.",
"icons": {
"default": "images/fabrikam-logo.png"
},
"categories": [
"Plan and track"
],
"tags": [
"working",
"people person",
"search"
],
"content": {
"details": {
"path": "overview.md"
},
"license": {
"path": "license-terms.md"
}
},
"links": {
"home": {
"uri": "https://www.fabrikam-fiber-inc.com"
},
"getstarted": {
"uri": "https://www.fabrikam-fiber-inc.com/help/getstarted"
},
"learn": {
"uri": "https://www.fabrikam-fiber-inc.com/features"
},
"support": {
"uri": "https://www.fabrikam-fiber-inc.com/support"
},
"repository": {
"uri": "https://github.com/fabrikam-fiber-inc/tools"
},
"issues": {
"uri": "https://github.com/fabrikam-fiber-inc/tools/issues"
}
},
"repository": {
"type": "git",
"uri": "https://github.com/fabrikam-fiber-inc/tools"
},
"badges": [
{
"href": "https://travis.ci/fabrikam-fiber-inc/myextension",
"uri": "https://travis.ci/fabrikam-fiber-inc/myextension.svg?branch=master",
"description": "TravisCI build for the project"
},
{
"href": "https://ci.appveyor.com/projects/fabrikam-fiber-inc/myextension",
"uri": "https://ci.appveyor.com/api/projects/status/vlg2sgs2y7tsdxpj4c?svg=true",
"description": "AppVeyor build for the project"
}
],
"branding": {
"color": "rgb(34, 34, 34)",
"theme": "dark"
},
"screenshots": [
{
"path": "screenshots/screen1.png"
},
{
"path": "screenshots/screen2.png"
}
]
}
Ejemplo de página de detalles
- 1 - descripción
- 2 - Icono
- 3 - Categorías
- 4- Capturas de pantalla
- 5 - contenido (detalles)
- 6 - enlaces
- 7 - Marca
Q & A de Marketplace: propiedad CustomerQnASupport
Todas las extensiones de Visual Studio Marketplace tienen una sección preguntas y respuestas (Q & A) para permitir conversaciones públicas uno a uno entre los usuarios de la extensión y los editores. Los publicadores pueden elegir entre Marketplace Q & A, problemas de GitHub o una URL personalizada de Q & A. Puede deshabilitar Q & A en Marketplace mediante la propiedad CustomerQnASupport en el manifiesto.
Experiencia predeterminada (no se requieren cambios en el manifiesto)
- En el caso de las extensiones con un repositorio de GitHub, Marketplace redirige a los usuarios de la sección de preguntas y respuestas a los problemas asociados de GitHub.
- En el caso de las extensiones sin un repositorio de GitHub, el Q&A de Marketplace está habilitado.
Para obtener una experiencia diferente a una de las opciones predeterminadas, use la propiedad CustomerQnASupport en el manifiesto.
{
"CustomerQnASupport": {
"enablemarketplaceqna": true,
"url": "http://uservoice.visualstudio.com"
}
}
Propiedades
Propiedades de la sección Customer Q & A Support ::
-
enablemarketplaceqna - campo booleano, configurado como
truepara marketplace, o como Q&A personalizado, false para deshabilitar Q&A - url : cadena, dirección URL para preguntas y respuestas personalizadas
Ejemplos que muestran el uso de soporte técnico de Q & A
Ejemplo: Extensión con preguntas y respuestas personalizadas
{
"CustomerQnASupport": {
"enablemarketplaceqna":"true",
"url": "http://uservoice.visualstudio.com"
}
}
Ejemplo: Extensión con repositorio de GitHub, pero utilizando preguntas y respuestas de Marketplace en lugar de incidencias de GitHub.
{
"CustomerQnASupport": {
"enablemarketplaceqna":"true"
}
}
Ejemplo: Extensión deshabilitando la sección Q & A
{
"CustomerQnASupport": {
"enablemarketplaceqna":"false"
}
}
Ámbitos
En la extensión, puede definir uno o varios ámbitos. Estos ámbitos determinan a qué recursos puede acceder la extensión y las operaciones que se pueden realizar en esos recursos. Los ámbitos que especifique en el manifiesto de extensión son los ámbitos establecidos en los tokens de acceso emitidos a la extensión. Para obtener más información, consulte Autenticación y seguridad.
Si no se especifican permisos, a las extensiones solo se les proporciona acceso a los datos de perfil de usuario y de extensión.
Ámbitos admitidos
| Categoría | Ámbito | Nombre | Privilegios elevados | Descripción | Hereda de |
|---|---|---|---|---|---|
| Seguridad avanzada | vso.advsec |
Seguridad avanzada (lectura) | Sí | Concede la capacidad de leer alertas, instancias de resultado y instancias de resultado de análisis. | |
vso.advsec_write |
Seguridad avanzada (lectura y escritura) | Sí | Concede la capacidad de cargar análisis en serif. | vso.advsec |
|
vso.advsec_manage |
Seguridad avanzada (lectura, escritura y administración) | Sí | Concede la capacidad de cargar análisis en serif. | vso.advsec_write |
|
| Grupos de agentes | vso.agentpools |
Grupos de agentes (lectura) | Concede la capacidad de ver tareas, grupos, colas, agentes y trabajos que los agentes están ejecutando actualmente o han completado recientemente. | ||
vso.agentpools_manage |
Grupos de agentes (leer y administrar) | Sí | Concede la capacidad de administrar grupos, colas y agentes. | vso.agentpools |
|
vso.environment_manage |
Entorno (lectura y administración) | Sí | Concede la capacidad de administrar grupos, colas, agentes y entornos. | vso.agentpools_manage |
|
| Análisis de datos | vso.analytics |
Análisis (ver datos) | Concede la capacidad de consultar datos de análisis. | ||
| Auditing | vso.auditlog |
Registro de auditoría (lectura) | Concede la capacidad de leer el registro de auditoría a los usuarios. | ||
vso.auditstreams_manage |
Flujos de auditoría (lectura) | Sí | Concede la capacidad de administrar flujos de auditoría a los usuarios. | vso.auditlog |
|
| Construir | vso.build |
Compilar (leer) | Concede la capacidad de acceder a los artefactos de compilación, incluidos los resultados de compilación, las definiciones y las solicitudes, y la capacidad de recibir notificaciones sobre eventos de compilación a través de enlaces de servicio. | vso.hooks_write |
|
vso.build_execute |
Compilar (lectura y ejecución) | Sí | Concede la capacidad de acceder a los artefactos de compilación, incluidos los resultados de compilación, las definiciones y las solicitudes. También concede la capacidad de poner en cola una compilación, actualizar las propiedades de compilación y recibir notificaciones sobre eventos de compilación a través de enlaces de servicio. | vso.build |
|
| Código | vso.code |
Código (leer) | Concede la capacidad de leer código fuente y metadatos sobre confirmaciones, conjuntos de cambios, ramas y otros artefactos de control de versiones. También concede la capacidad de buscar código y recibir notificaciones sobre eventos de control de versiones a través de enlaces de servicio. | vso.hooks_write |
|
vso.code_write |
Código (lectura y escritura) | Sí | Concede la capacidad de leer, actualizar y eliminar código fuente y acceder a metadatos sobre confirmaciones, conjuntos de cambios, ramas y otros artefactos de control de versiones. También concede la capacidad de crear y administrar solicitudes de incorporación de cambios y revisiones de código y recibir notificaciones sobre eventos de control de versiones a través de enlaces de servicio. | vso.code |
|
vso.code_manage |
Código (leer, escribir y administrar) | Sí | Concede la capacidad de leer, actualizar y eliminar código fuente, acceder a metadatos sobre confirmaciones, conjuntos de cambios, ramas y otros artefactos de control de versiones. También concede la capacidad de crear y administrar repositorios de código, crear y administrar solicitudes de incorporación de cambios y revisiones de código, y recibir notificaciones sobre eventos de control de versiones a través de enlaces de servicio. | vso.code_write |
|
vso.code_full |
Código (completo) | Sí | Concede acceso completo al código fuente, los metadatos sobre confirmaciones, conjuntos de cambios, ramas y otros artefactos de control de versiones. También concede la capacidad de crear y administrar repositorios de código, crear y administrar solicitudes de incorporación de cambios y revisiones de código, y recibir notificaciones sobre eventos de control de versiones a través de enlaces de servicio. También incluye compatibilidad limitada con las API de OM de cliente. | vso.code_manage |
|
vso.code_status |
Código (estado) | Concede la capacidad de leer y escribir el estado de confirmación y solicitud de incorporación de cambios. | |||
| Servidor conectado | vso.connected_server |
Servidor conectado | Concede la capacidad de acceder a los puntos de conexión necesarios desde un servidor conectado local. | ||
| Derechos | vso.entitlements |
Derechos (lectura) | Concede acceso de solo lectura a los puntos de conexión de derechos de licencia para obtener derechos de cuenta. | ||
vso.memberentitlementmanagement |
Administración de derechos de miembro (lectura) | Concede la capacidad de leer usuarios, sus licencias y los proyectos y extensiones a los que pueden acceder. | |||
vso.memberentitlementmanagement_write |
Administración de derechos de miembro (escritura) | Sí | Concede la capacidad de administrar usuarios y sus licencias y los proyectos y extensiones a los que pueden acceder. | vso.memberentitlementmanagement |
|
| Extensiones | vso.extension |
Extensiones (lectura) | Concede la capacidad de leer extensiones instaladas. | vso.profile |
|
vso.extension_manage |
Extensiones (leer y administrar) | Sí | Concede la capacidad de instalar, desinstalar y realizar otras acciones administrativas en las extensiones instaladas. | vso.extension |
|
vso.extension.data |
Datos de extensión (lectura) | Concede la capacidad de leer datos (configuración y documentos) almacenados por extensiones instaladas. | vso.profile |
||
vso.extension.data_write |
Datos de extensión (lectura y escritura) | Concede la capacidad de leer y escribir datos (configuración y documentos) almacenados por extensiones instaladas. | vso.extension.data |
||
| Conexiones de GitHub | vso.githubconnections |
Conexiones de GitHub (lectura) | Concede la capacidad de leer las conexiones de GitHub y los datos de repositorios de GitHub. | ||
vso.githubconnections_manage |
Conexiones de GitHub (leer y administrar) | Sí | Concede la capacidad de leer y administrar conexiones de GitHub y datos de repositorios de GitHub. | vso.githubconnections |
|
| Grafo e identidad | vso.graph |
Gráfico (leer) | Concede la capacidad de leer información de usuario, grupo, ámbito y pertenencia a grupos. | ||
vso.graph_manage |
Gráfico (gestionar) | Sí | Concede la capacidad de leer información de usuarios, grupos, ámbitos y pertenencia a grupos, agregar usuarios y grupos y administrar pertenencias a grupos. | vso.graph |
|
vso.identity |
Identidad (leer) | Concede la capacidad de leer identidades y grupos. | |||
vso.identity_manage |
Identidad (administrar) | Sí | Concede la capacidad de leer, escribir y administrar identidades y grupos. | vso.identity |
|
| Grupo de máquinas | vso.machinegroup_manage |
Grupo de implementación (lectura, administración) | Sí | Concede la capacidad de administrar grupos de agentes y grupos de implementación. | vso.agentpools_manage |
| Marketplace | vso.gallery |
Marketplace | Concede acceso de lectura a elementos públicos y privados y editores. | vso.profile |
|
vso.gallery_acquire |
Marketplace (adquirir) | Otorga acceso de lectura y la capacidad de adquirir artículos. | vso.gallery |
||
vso.gallery_publish |
Marketplace (Publicación) | Sí | Concede acceso de lectura y la capacidad de cargar, actualizar y compartir elementos. | vso.gallery |
|
vso.gallery_manage |
Marketplace (administrar) | Sí | Concede acceso de lectura y la capacidad de publicar y administrar elementos y publicadores. | vso.gallery_publish |
|
| Notifications | vso.notification |
Notificaciones (leídas) | Concede acceso de lectura a suscripciones y metadatos de eventos, incluidos los valores de campo filtrables. | vso.profile |
|
vso.notification_write |
Notificaciones (escribir) | Concede acceso de lectura y escritura a suscripciones y acceso de lectura a metadatos de eventos, incluidos los valores de campo filtrables. | vso.notification |
||
vso.notification_manage |
Notificaciones (administrar) | Concede acceso de lectura, escritura y administración a las suscripciones y acceso de lectura a los metadatos de eventos, incluidos los valores de campo filtrables. | vso.notification_write |
||
vso.notification_diagnostics |
Notificaciones (diagnósticos) | Concede acceso a los registros de diagnóstico relacionados con la notificación y concede la capacidad de habilitar diagnósticos para suscripciones individuales. | vso.notification |
||
| Embalaje | vso.packaging |
Empaquetado (lectura) | Otorga la capacidad de leer fuentes y paquetes. | vso.profile |
|
vso.packaging_write |
Empaquetado (lectura y escritura) | Sí | Otorga la capacidad de crear y leer flujos y paquetes. | vso.packaging |
|
vso.packaging_manage |
Empaquetado (leer, escribir y administrar) | Sí | Concede la capacidad de crear, leer, actualizar y eliminar feeds y paquetes. | vso.packaging_write |
|
| Recursos de canalización | vso.pipelineresources_use |
Recursos de canalización (uso) | Sí | Concede la capacidad de aprobar la solicitud de una canalización para usar un recurso protegido: grupo de agentes, entorno, cola, repositorio, archivos seguros, conexión de servicio y grupo de variables. | |
vso.pipelineresources_manage |
Recursos de canalización (uso y administración) | Sí | Concede la capacidad de administrar un recurso protegido o la solicitud de una canalización para usar un recurso protegido: grupo de agentes, entorno, cola, repositorio, archivos seguros, conexión de servicio y grupo de variables. | vso.pipelineresources_use |
|
| Proyecto y equipo | vso.project |
Proyecto y equipo (leer) | Otorga la capacidad de leer proyectos y equipos. | ||
vso.project_write |
Proyecto y equipo (lectura y escritura) | Concede la capacidad de leer y actualizar proyectos y equipos. | vso.project |
||
vso.project_manage |
Proyecto y equipo (lectura, escritura y administración) | Sí | Concede la capacidad de crear, leer, actualizar y eliminar proyectos y equipos. | vso.project_write |
|
| Versión | vso.release |
Versión (leer) | Concede la capacidad de leer artefactos de versión, incluidas las versiones, las definiciones de versión y el entorno de versión. | vso.profile |
|
vso.release_execute |
Versión (lectura, escritura y ejecución) | Sí | Concede la capacidad de leer y actualizar artefactos de versión, incluidas las versiones, las definiciones de versión y el entorno de versión. También concede la capacidad de poner en cola una nueva versión. | vso.release |
|
vso.release_manage |
Versión (lectura, escritura, ejecución y administración) | Sí | Concede la capacidad de leer, actualizar y eliminar artefactos de versión, incluidas las versiones, las definiciones de versión y el entorno de versión. También concede la capacidad de poner en cola y aprobar una nueva versión. | vso.release_execute |
|
| Proteger archivos | vso.securefiles_read |
Protección de archivos (lectura) | Sí | Concede la capacidad de leer archivos seguros. | |
vso.securefiles_write |
Proteger archivos (leer y crear) | Sí | Concede la capacidad de leer y crear archivos seguros. | vso.securefiles_read |
|
vso.securefiles_manage |
Proteger archivos (leer, crear y administrar) | Sí | Concede la capacidad de leer, crear y administrar archivos seguros. | vso.securefiles_write |
|
| Security | vso.security_manage |
Seguridad (administrar) | Sí | Concede la capacidad de leer, escribir y administrar permisos de seguridad. | |
| Conexiones de servicio | vso.serviceendpoint |
Puntos de conexión de servicio (lectura) | Otorga la capacidad de leer puntos de conexión del servicio. | vso.profile |
|
vso.serviceendpoint_query |
Puntos de conexión de servicio (lectura y consulta) | Concede la capacidad de leer y consultar puntos de conexión de servicio. | vso.serviceendpoint |
||
vso.serviceendpoint_manage |
Puntos de conexión de servicio (lectura, consulta y administración) | Sí | Otorga la capacidad de leer, consultar y administrar puntos de conexión de servicio. | vso.serviceendpoint_query |
|
| Enlaces de servicio | vso.hooks |
Enlaces de servicio (lectura) | Concede la capacidad de leer suscripciones y metadatos de enlace de servicio, incluidos eventos admitidos, consumidores y acciones. (Ya no es público). | vso.profile |
|
vso.hooks_write |
Enlace de servicio (lectura y escritura) | Concede la capacidad de crear y actualizar suscripciones de enlace de servicio y leer metadatos, incluidos eventos admitidos, consumidores y acciones. (Ya no es público). | vso.hooks |
||
vso.hooks_interact |
Enlaces de servicio (interacción) | Concede la capacidad de interactuar y realizar acciones en eventos recibidos a través de enlaces de servicio. (Ya no es público). | vso.profile |
||
| Configuración | vso.settings |
Ajustes (lectura) | Concede la capacidad de leer la configuración. | ||
vso.settings_write |
Ajustes (lectura y escritura) | Concede la capacidad de leer y escribir la configuración. | vso.settings |
||
| Símbolos | vso.symbols |
Símbolos (lectura) | Concede la capacidad de leer símbolos. | vso.profile |
|
vso.symbols_write |
Símbolos (lectura y escritura) | Concede la capacidad de leer y escribir símbolos. | vso.symbols |
||
vso.symbols_manage |
Símbolos (lectura, escritura y administración) | Concede la capacidad de leer, escribir y administrar símbolos. | vso.symbols_write |
||
| Grupos de tareas | vso.taskgroups_read |
Grupos de tareas (lectura) | Concede la capacidad de leer grupos de tareas. | ||
vso.taskgroups_write |
Grupos de tareas (leer y crear) | Concede la capacidad de leer y crear grupos de tareas. | vso.taskgroups_read |
||
vso.taskgroups_manage |
Grupos de tareas (leer, crear y administrar) | Sí | Concede la capacidad de leer, crear y administrar grupos de tareas. | vso.taskgroups_write |
|
| Panel del equipo | vso.dashboards |
Paneles del equipo (solo lectura) | Otorga la capacidad de acceder a la información del panel del equipo. | ||
vso.dashboards_manage |
Paneles de equipo (gestión) | Otorga la capacidad de administrar la información del panel de control del equipo. | vso.dashboards |
||
| Administración de pruebas | vso.test |
Administración de pruebas (lectura) | Concede la capacidad de leer planes de prueba, casos, resultados y otros artefactos relacionados con la administración de pruebas. | vso.profile |
|
vso.test_write |
Administración de pruebas (lectura y escritura) | Concede la capacidad de leer, crear y actualizar planes de prueba, casos, resultados y otros artefactos relacionados con la administración de pruebas. | vso.test |
||
| Threads | vso.threads_full |
Hilos de PR | Confiere la capacidad de leer y escribir en hilos de comentarios de solicitudes de pull. | ||
| Tokens | vso.tokens |
Tokens de autorización delegados | Sí | Concede a los usuarios la capacidad de administrar tokens de autorización delegados. | |
vso.tokenadministration |
Administración de tokens | Sí | Concede la capacidad de administrar (ver y revocar) tokens existentes a los administradores de la organización. | ||
| Perfil de usuario | vso.profile |
Perfil de usuario (leer) | Otorga la capacidad de leer el perfil, las cuentas, las colecciones, los proyectos, los equipos y otros artefactos organizativos de nivel superior. | ||
vso.profile_write |
Perfil de usuario (editar) | Otorga el permiso para escribir en tu perfil. | vso.profile |
||
| Grupos de variables | vso.variablegroups_read |
Grupos de variables (lectura) | Concede la capacidad de leer grupos de variables. | ||
vso.variablegroups_write |
Grupos de variables (leer y crear) | Concede la capacidad de leer y crear grupos de variables. | vso.variablegroups_read |
||
vso.variablegroups_manage |
Grupos de variables (leer, crear y administrar) | Sí | Concede la capacidad de leer, crear y administrar grupos de variables. | vso.variablegroups_write |
|
| Wiki | vso.wiki |
Wiki (lectura) | Concede la capacidad de leer wikis, páginas wiki y datos adjuntos wiki. También concede la capacidad de buscar páginas wiki. | ||
vso.wiki_write |
Wiki (lectura y escritura) | Concede la capacidad de leer, crear y actualizar wikis, páginas wiki y datos adjuntos wiki. | vso.wiki |
||
| Elementos de trabajo | vso.work |
Elementos de trabajo (leer) | Concede la capacidad de leer elementos de trabajo, consultas, paneles, rutas de acceso de área e iteraciones y otros metadatos relacionados con el seguimiento de elementos de trabajo. También concede la capacidad de ejecutar consultas, buscar elementos de trabajo y recibir notificaciones sobre eventos de elementos de trabajo a través de enlaces de servicio. | vso.hooks_write |
|
vso.work_write |
Elementos de trabajo (leer y escribir) | Concede la capacidad de leer, crear y actualizar elementos de trabajo y consultas, actualizar metadatos del panel, rutas de acceso de área de lectura e iteraciones y otros metadatos relacionados con el seguimiento de elementos de trabajo, ejecutar consultas y recibir notificaciones sobre eventos de elementos de trabajo a través de enlaces de servicio. | vso.work |
||
vso.work_full |
Elementos de trabajo (completos) | Concede acceso total a elementos de trabajo, consultas, trabajos pendientes, planes y metadatos de seguimiento de elementos de trabajo. También concede la capacidad de recibir notificaciones sobre eventos de elementos de trabajo a través de enlaces de servicio. | vso.work_write |
||
| Suplantación de usuario | user_impersonation |
Suplantación de usuario | Sí | Concede acceso total a las API REST de Visual Studio Team Services. Solicite o dé su consentimiento a este ámbito con precaución porque es muy eficaz. |
Cambio del ámbito de la extensión publicada
Puede cambiar el ámbito de una extensión publicada. Si instaló previamente la extensión (y autorizó el conjunto anterior de ámbitos), autorice los nuevos ámbitos antes de actualizar a la versión más reciente.
La sección Acción requerida del centro de configuración de extensiones muestra si las extensiones instaladas requieren autorización.
A continuación, un administrador puede revisar y autorizar el nuevo conjunto de ámbitos:
Destinos de instalación
Como indica el nombre, los destinos de instalación definen los productos y servicios en los que puede instalar la extensión.
Microsoft.VisualStudio.Services es el destino de instalación más común e indica que la extensión se puede instalar en Azure DevOps.
Los destinos de instalación de una extensión o integración se especifican a través del targets campo del manifiesto.
Identificadores admitidos para extensiones:
-
Microsoft.VisualStudio.Services.Cloud: se instala en Azure DevOps Services. -
Microsoft.TeamFoundation.Server: se instala en Azure DevOps Server. -
Microsoft.VisualStudio.Services: se instala en ambos. Acceso directo paraMicrosoft.VisualStudio.Services.CloudyMicrosoft.TeamFoundation.Serverversión[14.2,)
Identificadores admitidos para integraciones:
-
Microsoft.VisualStudio.Services.Cloud.Integration: se integra con Azure DevOps Services -
Microsoft.TeamFoundation.Server.Integration: se integra con Azure DevOps Server -
Microsoft.VisualStudio.Services.Integration: se integra con ambos. Acceso directo paraMicrosoft.VisualStudio.Services.Cloud.IntegrationyMicrosoft.TeamFoundation.Server.Integration
Para obtener más información, vea Puntos de extensibilidad.
Ejemplos de destinos de instalación
Ejemplo: extensión que funciona con Azure DevOps
{
"targets": [
{
"id": "Microsoft.VisualStudio.Services"
}
]
}
Ejemplo: Extensión que solo funciona con Azure DevOps Services
{
"targets": [
{
"id": "Microsoft.VisualStudio.Services.Cloud"
}
]
}
Los destinos de instalación también se pueden usar en el manifiesto de integraciones. Por ejemplo, productos, aplicaciones o herramientas con las que funcionan, pero no se instalan en Azure DevOps.
Ejemplo: Integración que funciona con Azure DevOps
{
"targets": [
{
"id": "Microsoft.VisualStudio.Services.Integration"
}
]
}
Ejemplo: Integración que solo funciona con Azure DevOps Server
{
"targets": [
{
"id": "Microsoft.TeamFoundation.Server.Integration"
}
]
}
Versiones de destino de instalación
Algunos identificadores de destino de instalación, como Microsoft.TeamFoundation.Server y Microsoft.TeamFoundation.Server.Integration, admiten un intervalo de versiones opcional. Este intervalo de versiones opcional aclara aún más las versiones admitidas en las que se admite la extensión o la integración.
La versión o el intervalo de versiones se especifica a través del version campo en el objeto de destino de instalación. Este valor puede ser:
- Una versión específica, por ejemplo:
15.0(solo 2017 RTM) - Una gama de versiones compatibles, por ejemplo:
[14.0)(2015 RTM y versiones posteriores),[14.3,15.1](actualización 3 hasta la actualización 1 de 2017). Los valores de rango se refinan mediante:-
[: versión mínima inclusiva -
]: Versión máxima, incluida -
(: versión mínima exclusiva -
): versión máxima exclusiva
-
Números de versión para Azure DevOps Server:
| Versión | Lanzamientos | Versión |
|---|---|---|
| 2010 | Todas las versiones | 10.0 |
| 2012 | Todas las versiones | 11.0 |
| 2013 | RTM y actualizaciones | 12.0, 12.1, 12.2, 12.3, 12.4 |
| 2015 | RTM y actualizaciones | 14.0, 14.1, 14.2, 14.3 |
| 2017 | RTM y actualizaciones | 15.0, 15.1 |
| 2018 | RTM y actualizaciones | 16.0 |
| 2019 | RTM y actualizaciones | 17.0 |
| 2020 | RTM y actualizaciones | 18.0 |
Ejemplos que muestran versiones
Ejemplo: extensión que funciona con Azure DevOps
{
"targets": [
{
"id": "Microsoft.VisualStudio.Services.Cloud"
},
{
"id": "Microsoft.TeamFoundation.Server",
"version": "[15.0,)"
}
]
}
Accesos directos
Microsoft.VisualStudio.Services es un acceso directo para Azure DevOps.
{
"targets": [
{
"id": "Microsoft.VisualStudio.Services"
}
]
}
equivale a:
{
"targets": [
{
"id": "Microsoft.VisualStudio.Services.Cloud"
},
{
"id": "Microsoft.TeamFoundation.Server",
"version": "[14.2,)"
}
]
}
Uso de destinos y requisitos de instalación
Los objetivos de instalación y las demandas se usan conjuntamente para presentar a los usuarios una vista correcta de los productos y servicios con los que la extensión o la integración son compatibles. Por ejemplo, especificar un destino de instalación de Microsoft.VisualStudio.Services con una demanda de api-version/3.0 significa que la extensión funciona con Azure DevOps.
Sugerencia
Para obtener más información sobre las API REST, consulte la referencia de la API REST.
Ejemplo: Extensión que usa las API de la versión 3.0
{
"targets": [
{
"id": "Microsoft.VisualStudio.Services"
}
],
"demands": [
"api-version/3.0"
]
}
Corresponde a los siguientes destinos de instalación.
Microsoft.VisualStudio.Services.Cloud-
Microsoft.TeamFoundation.ServerVersión:[15.0,)
Ejemplo: Integración que usa las API de la versión 2.0
{
"targets": [
{
"id": "Microsoft.VisualStudio.Services.Integration"
}
],
"demands": [
"api-version/2.0"
]
}
Corresponde a los siguientes destinos de instalación.
Microsoft.VisualStudio.Services.Cloud.Integration-
Microsoft.TeamFoundation.Server.IntegrationVersión:[14.0,)
Peticiones
Las demandas permiten especificar funcionalidades y otras características necesarias para la extensión. Puede usar estas demandas para limitar dónde se puede publicar o instalar la extensión.
Las demandas se usan en Visual Studio Marketplace para enumerar los productos y entornos con los que la extensión es compatible, lo que ayuda a los clientes a comprender si la extensión funciona con su versión de Azure DevOps, por ejemplo.
Consulte el ejemplo siguiente de cómo se especifican las demandas en el manifiesto de extensión.
{
"demands": [
"api-version/3.0",
"contribution/ms.vss-dashboards-web.widget-catalog"
]
}
En este ejemplo, la extensión exige la versión 3.0 de las API, lo que significa que solo se puede instalar en Azure DevOps. También requiere que la ms.vss-dashboards-web extensión (y su widget-catalog contribución) se instale (y se habilite) en la colección para poder instalar la extensión.
Solicitudes admitidas
| Tipo | Descripción | ¿Se comprueba al publicar? | ¿Se comprueba en la instalación? |
|---|---|---|---|
environment/cloud |
Requiere la ejecución en un entorno de nube | Sí | Sí |
environment/onprem |
Requiere la ejecución en un entorno local | Sí | Sí |
api-version/{version} |
Requiere una versión de API específica (mínimo) | No | Sí |
extension/{id} |
Requiere que se instale o habilite una extensión específica. | No | Sí |
contribution/{id} |
Requiere que haya disponible una contribución específica. | No | Sí |
contributionType/{id} |
Requiere que haya disponible un tipo de contribución específico. | No | Sí |
Nota:
- Use
environment/cloudyenvironment/onpremsolo cuando la extensión tenga requisitos relacionados con la topología que requieren la ejecución en ese entorno determinado. - Los requisitos
extension,contributionycontributionTypese evalúan durante la instalación y requieren que la extensión especificada ya esté instalada y habilitada en la organización o colección.
Archivos
La files sección es donde hace referencia a los archivos que quiera incluir en la extensión. Puede agregar carpetas y archivos individuales:
{
"files": [
{
"path": "hello-world.html", "addressable": true
},
{
"path": "scripts", "addressable": true
},
{
"path": "images/logo.png", "addressable": true, "packagePath": "/"
}
]
}
Propiedades
Propiedades de la sección Archivos:
- path : ruta de acceso al recurso en el disco, que puede ser relativa al directorio raíz.
- direccionable : (opcional) Se establece en true si desea que el archivo sea direccionable con dirección URL. El valor predeterminado es false.
- packagePath : (opcional) Ruta de acceso al recurso dentro del paquete. El valor predeterminado es la ruta de acceso relativa en el disco desde el directorio raíz.
- contentType : tipo MIME (opcional) del archivo. El valor predeterminado se establece como una mejor estimación en función de la extensión del archivo y la configuración del sistema operativo.
- assetType : (opcional) Especifique el valor del atributo Type de la entrada de recurso en el manifiesto VSIX. También puede ser una matriz de cadenas, en cuyo caso se agregan varias entradas de recursos para este archivo. El valor predeterminado es "packagePath".
- lang : (opcional) Idioma de este recurso. Los archivos localizados se sirven en función del encabezado Accept-Language. Deje en blanco para indicar que este archivo está en el idioma predeterminado (o alternativo). Las versiones localizadas del mismo archivo deben tener el mismo assetType.
Contribuciones
Cada entrada de contribución tiene las siguientes propiedades:
- id : identificador de referencia (cadena) para la contribución. Haga que cada identificador de contribución sea único dentro de una extensión. Consulte referencias sobre contribuciones y tipos.
- type - El ID del tipo de contribución de esta contribución.
- description : (opcional) Cadena que describe lo que proporciona la contribución.
- targets - Un array de identificadores de contribución a los que está destinada la contribución. Consulte Contribuciones enfocadas.
- properties : (Opcional) Objeto que incluye propiedades para la contribución tal y como se define en el tipo de contribución.
Para obtener más información, consulte la introducción al modelo de contribución.
Tipos de contribución
Cada entrada de contribución tiene las siguientes propiedades:
- id : identificador de referencia (cadena) para el tipo de contribución. Haga que cada identificador de tipo de contribución sea único dentro de una extensión. Consulte referencias sobre contribuciones y tipos.
- name - Nombre amigable del tipo de contribución.
- description : (opcional) Cadena que describe con más detalle el tipo de contribución.
- properties : (Opcional) Diccionario que asigna nombres de propiedad a descripciones de propiedades. Estas propiedades describen las propiedades necesarias y opcionales que pueden usar las contribuciones de este tipo.
Las descripciones de propiedades tienen las siguientes propiedades:
- description : (opcional) Cadena que describe para qué se usa la propiedad.
- required : (Opcional) Valor booleano, que si es true indica que la propiedad es necesaria para todas las contribuciones de este tipo.
- type : el tipo de valor que la propiedad puede tener, que podría ser string, uri, guid, boolean, integer, double, dateTime, array o object.
Para obtener más información, consulte la introducción al modelo de contribución.
Hacer referencia a contribuciones y tipos
Use identificadores únicos para hacer referencia a contribuciones y tipos de contribución. Refiera los tipos con la type propiedad, y refiera otras contribuciones con la targets propiedad.
- Una referencia de contribución completa incluye el identificador del publicador, el identificador de extensión y el identificador de contribución/tipo, separados por un punto (.). Por ejemplo,
ms.vss-web.hubes el identificador completo de la contribución con el identificadorhuben la extensiónvss-webpublicada por el editor "ms" (Microsoft). - Es posible que las referencias de contribución relativas se usen dentro de un manifiesto de extensión para la referencia de una contribución a otro tipo de contribución o contribución dentro de esa misma extensión. En este caso, no se incluyen los identificadores de editor y extensión, y el identificador es un punto (
.) seguido del identificador de contribución. Por ejemplo,.hubse puede usar dentro de la extensiónvss-webmencionada anteriormente como atajo params.vss-web.hub.
Contribuciones enfocadas
Algunas contribuciones actúan como contenedores destinados a otras contribuciones.
- Las contribuciones del Hub pueden dirigirse a grupos de Hub. Cuando se representa una página, la interfaz de usuario web muestra todas las contribuciones del hub dirigidas al grupo de hub seleccionado. Los grupos concentradores tienen como destino una colección de grupos concentradores, que define un conjunto de grupos concentradores que aparecen en un área de navegación determinada, por ejemplo, páginas de administración de nivel de proyecto.
- Los distintos tipos de contribuciones pueden dirigirse a menús: acción, acción de hipervínculo y proveedor de acciones. Las acciones y los hipervínculos proporcionan entradas individuales de elementos de menú. Un proveedor de acciones puede proporcionar varios elementos de menú dinámicos. Para un menú determinado, los elementos se agregan en todas las contribuciones (de cualquiera de estos tipos) que tienen como destino esa contribución de menú específica.
Adición de un icono de concentrador
Para obtener información sobre cómo agregar un icono al centro, consulte la guía del icono del centro.
Servicios de insignias compatibles
Marketplace solo admite distintivos de los siguientes servicios de confianza:
- api.travis-ci.org/
- badge.fury.io/
- badges.frapsoft.com/
- badges.gitter.im/
- badges.greenkeeper.io/
- cdn.travis-ci.org/
- ci.appveyor.com/
- codeclimate.com/
- codecov.io/
- coveralls.io/
- david-dm.org/
- gemnasium.com/
- img.shields.io/
- isitmaintained.com/
- marketplace.visualstudio.com/
- snyk.io/
- travis-ci.com/
- travis-ci.org/
- vsmarketplacebadges.dev/
- bithound.io/
- deepscan.io/
- githost.io/
- gitlab.com/
- opencollective.co/
Nota:
Reemplace vsmarketplacebadge.apphb.com por vsmarketplacebadges.dev.
Para mostrar un distintivo de otro servicio, póngase en contacto con el servicio de atención al cliente en la Comunidad de desarrolladores.
Manifiesto de ejemplo
La siguiente extensión agrega una acción al menú contextual de las compilaciones completadas y un hub al grupo de hubs de compilación.
{
"manifestVersion": 1,
"id": "tools",
"version": "0.1.0",
"name": "Fabrikam Tools",
"publisher": "fabrikam",
"description": "Awesome tools to help you and your team do great things everyday.",
"targets": [
{
"id": "Microsoft.VisualStudio.Services"
}
],
"demands": [
"api-version/3.0"
],
"icons": {
"default": "images/fabrikam-logo.png"
},
"scopes": [
"vso.work",
"vso.code_write"
],
"categories": [
"Plan and track"
],
"tags": [
"working",
"people person",
"search"
],
"branding": {
"color": "rgb(34, 34, 34)",
"theme": "dark"
},
"screenshots": [
{
"path": "screenshots/screen1.png"
},
{
"path": "screenshots/screen2.png"
}
],
"content": {
"details": {
"path": "overview.md"
},
"license": {
"path": "eula.md"
}
},
"links": {
"home": {
"uri": "https://www.fabrikam-fiber-inc.com"
},
"getstarted": {
"uri": "https://www.fabrikam-fiber-inc.com/help/getstarted"
},
"learn": {
"uri": "https://www.fabrikam-fiber-inc.com/features"
},
"support": {
"uri": "https://www.fabrikam-fiber-inc.com/support"
},
"repository": {
"uri": "https://github.com/fabrikam-fiber-inc/tools"
},
"issues": {
"uri": "https://github.com/fabrikam-fiber-inc/tools/issues"
}
},
"repository": {
"type": "git",
"uri": "https://github.com/fabrikam-fiber-inc/myextension"
},
"badges": [
{
"href": "https://travis.ci/fabrikam-fiber-inc/myextension",
"uri": "https://travis.ci/fabrikam-fiber-inc/myextension.svg?branch=master",
"description": "TravisCI build for the project"
},
{
"href": "https://ci.appveyor.com/projects/fabrikam-fiber-inc/myextension",
"uri": "https://ci.appveyor.com/api/projects/status/vlg2sgs2y7tsdxpj4c?svg=true",
"description": "AppVeyor build for the project"
}
],
"contributions": [
{
"id": "showCommits",
"type": "ms.vss-web.action",
"description": "Adds a menu action from builds grid to show associated items.",
"targets": [
"ms.vss-build-web.completed-build-menu"
],
"properties": {
"title": "View associated items",
"uri": "launch.html"
}
}
]
}