Referencia del manifiesto de extensión
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
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 los datos de entrada, consulte ...
Atributos requeridos
Estas propiedades son necesarias:
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 |
name | Nombre corto y fácil de leer de la extensión. Limitado a 200 caracteres. | Ejemplo: "Fabrikam Agile Board Extension" . |
publisher | 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 Plans y 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 |
---|---|---|
Ambitos | 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
Estas 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 | Conjunto de etiquetas de cadenas 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. |
content | 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. |
vínculos | 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. |
branding | 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 de personalización de marca oscuros o claro para colores de personalización de marca más claros. |
Hacer pública una extensión
De forma predeterminada, todas las extensiones de Marketplace de Azure DevOps son privadas. Solo son visibles para el publicador y las cuentas 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
true
para 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 | Alto riesgo | Descripción | Se hereda de |
---|---|---|---|---|---|
Seguridad avanzada | vso.advsec |
AdvancedSecurity (lectura) | Sí | Concede la capacidad de leer alertas, instancias de resultado, instancias de resultado de análisis. | |
vso.advsec_write |
AdvancedSecurity (lectura y escritura) | Sí | Concede la capacidad de cargar análisis en formato SARIF | vso.advsec |
|
vso.advsec_manage |
AdvancedSecurity (lectura, escritura y administración) | Sí | Otorga la posibilidad de subir análisis en formato SARIF. | 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 (lectura y administración) | Sí | Concede la capacidad de administrar grupos, colas y agentes. | vso.agentpools |
|
vso.environment_manage |
Entorno (leer, administrar) | Sí | Concede la capacidad de administrar grupos, colas, agentes y entornos. | vso.agentpools_manage |
|
Análisis | vso.analytics |
Análisis (ver datos) | Concede la capacidad de consultar datos de análisis. | ||
Auditoría | 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 |
|
Compilación | 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, y la capacidad de poner en cola una compilación, actualizar las propiedades de compilación y la capacidad de 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, 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 la confirmación y el estado de la 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) | Proporciona acceso de solo lectura al punto final de derechos de licencia para obtener los derechos de la cuenta. | ||
vso.memberentitlementmanagement |
Administración de MemberEntitlement (lectura) | Otorga la capacidad de leer los usuarios, sus licencias, así como los proyectos y extensiones a los que tienen acceso. | |||
vso.memberentitlementmanagement_write |
Administración de Derechos de los Miembros (escribir) | Sí | Concede la capacidad de administrar usuarios, sus licencias, así como 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 | 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 los datos de repositorios de GitHub. | vso.githubconnections |
|
Graph & identity | 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, ámbito y pertenencia a grupos, y para agregar usuarios, 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í | Proporciona la capacidad para administrar grupos de implementación y grupos de agentes. | 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 |
|
Notificaciones | vso.notification |
Notificaciones (leídas) | Proporciona acceso de lectura a suscripciones y metadatos de eventos, incluidos los valores de campo filtrables. | vso.profile |
|
vso.notification_write |
Notificaciones (escribir) | Proporciona acceso de lectura y escritura a las suscripciones, y acceso de solo lectura a los metadatos de los eventos, incluidos los valores de campo que se pueden filtrar. | vso.notification |
||
vso.notification_manage |
Notificaciones (administrar) | Proporciona acceso de lectura, escritura y gestión a las suscripciones, así como acceso de lectura a los metadatos de eventos, incluidos los valores de campo filtrables. | vso.notification_write |
||
vso.notification_diagnostics |
Notificaciones (diagnósticos) | Proporciona acceso a los registros de diagnóstico relacionados con la notificación y proporciona la capacidad de habilitar diagnósticos para suscripciones individuales. | vso.notification |
||
Empaquetado | 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_manage |
|
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 (leer, escribir y gestionar) | Sí | Concede la capacidad de crear, leer, actualizar y eliminar proyectos y equipos. | vso.project_write |
|
Lanzamiento | vso.release |
Versión (leer) | Otorga la capacidad de leer artefactos de lanzamiento, incluidos los lanzamientos, las definiciones de lanzamiento y el entorno de lanzamiento. | vso.profile |
|
vso.release_execute |
Lanzamiento (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, y 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, y la capacidad de poner en cola y aprobar una nueva versión. | vso.release_manage |
|
Archivos seguros | vso.securefiles_read |
Archivos protegidos (acceso de lectura) | Sí | Concede la capacidad de leer archivos seguros. | |
vso.securefiles_write |
Archivos seguros (leer, crear) | Sí | Concede la capacidad de leer y crear archivos seguros. | vso.securefiles_read |
|
vso.securefiles_manage |
Archivos seguros (leer, crear y administrar) | Sí | Concede la capacidad de leer, crear y administrar archivos seguros. | vso.securefiles_write |
|
Seguridad | 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 del 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 crear y leer configuraciones. | |||
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, 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 de 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 |
||
Subprocesos | 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, 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) | Otorga la capacidad de leer wikis, páginas wiki y archivos adjuntos de 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 adjuntos wiki. | vso.wiki |
||
Elementos de trabajo | vso.work |
Elementos de trabajo (leer) | Otorga la habilidad de leer elementos de trabajo, consultas, paneles, rutas de área, rutas de 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 los metadatos del panel, leer las rutas de acceso de áreas 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 proporciona 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í | Tener acceso completo a las API REST de Visual Studio Team Services. Solicitar y/o dar su consentimiento para este alcance con precaución, ¡ya que es muy potente! |
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 las extensiones muestra a un usuario 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.Cloud
yMicrosoft.TeamFoundation.Server
versión[14.2,)
Identificadores admitidos para integraciones:
Microsoft.VisualStudio.Services.Cloud.Integration
: se integra con Azure DevOps ServicesMicrosoft.TeamFoundation.Server.Integration
: se integra con Azure DevOps ServerMicrosoft.VisualStudio.Services.Integration
: se integra con ambos. Acceso directo paraMicrosoft.VisualStudio.Services.Cloud.Integration
yMicrosoft.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.Server
Versió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.Integration
Versió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/cloud
yenvironment/onprem
solo cuando la extensión tenga requisitos relacionados con la topología que requieren la ejecución en ese entorno determinado. - Los requisitos
extension
,contribution
ycontributionType
se 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 de contributionType 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 dirigidas.
- 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 - El 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.hub
es el identificador completo de la contribución con el identificadorhub
en la extensiónvss-web
publicada 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,.hub
se puede usar dentro de la extensiónvss-web
mencionada 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"
}
}
]
}