Informations de référence sur le manifeste d’extension

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Chaque extension a un fichier manifeste JSON qui définit des informations de base sur l’extension. Le fichier définit également comment il peut étendre et améliorer l’expérience. Cet article explique comment créer un manifeste pour votre extension à Azure DevOps.

Conseil

Consultez notre documentation la plus récente sur le développement d’extensions à l’aide du Kit de développement logiciel (SDK) d’extension Azure DevOps.

Créez un fichier nommé vss-extension.json à la racine de votre dossier d’extension. Ce fichier contient des attributs requis, tels que l’ID de l’extension et ses cibles d’installation, où il peut s’exécuter. Il définit également les contributions effectuées par votre extension.

Consultez l’exemple suivant d’un manifeste classique :

{
    "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"
        }
    ]
}

Pour plus d’informations sur les entrées, consultez ...

Attributs requis

Ces propriétés sont requises :

Propriété Description Notes
manifestVersion Nombre correspondant à la version du format manifeste. doit être 1.
Identifiant Identificateur de l’extension. Th ID est une chaîne qui doit être unique parmi les extensions du même éditeur. Il doit commencer par un caractère alphabétique ou numérique et contenir « A » à « Z », « a » à « z », « 0 » à « 9 » et « - » (trait d’union). Exemple : sample-extension.
version Chaîne spécifiant la version d’une extension. Doit être au format major.minor.patch, par exemple 0.1.2 ou 1.0.0. Vous pouvez également ajouter un quatrième nombre pour le format suivant : 0.1.2.3
nom Nom court et lisible par l’homme de l’extension. Limité à 200 caractères. Exemple : "Fabrikam Agile Board Extension".
publisher Identificateur de l’éditeur. Cet identificateur doit correspondre à l’identificateur sous lequel l’extension est publiée. Consultez Créer et gérer un éditeur.
Catégories Tableau de chaînes représentant les catégories auxquelles appartient votre extension. Au moins une catégorie doit être fournie et il n’existe aucune limite au nombre de catégories que vous pouvez inclure. Valeurs valides : Azure Repos, , Azure BoardsAzure Pipelines, Azure Test Plans, et Azure Artifacts.

Remarques :
    - Utilisez la version >=0.6.3 de tfx-cli si vous publiez l’extension par programmation.
    - Si vous utilisez l’extension Tâches d’extension Azure DevOps pour publier, vérifiez que sa version est >= 1.2.8. Vous devrez peut-être approuver la mise à jour de l’extension en raison des modifications d’étendue récentes.
    - Les catégories mentionnées précédemment sont présentes en mode natif dans Visual Studio Marketplace et Azure DevOps Server 2019 & ci-dessus. Pour les extensions ciblant des versions antérieures de TFS :
      - Si les clients TFS acquièrent votre extension via Visual Studio Marketplace (pas la galerie locale) dans le contexte connecté, utilisez les catégories précédemment indiquées.
      - Si vous allez partager directement l’extension (autrement dit, pas via Visual Studio Marketplace) avec un client utilisant TFS <=2018, utilisez les catégories suivantes à la place : Code, Planifier et suivre, Générer et publier, Tester, Collaborer et Intégrer. Si vous devez partager les deux via Visual Studio Marketplace et directement avec un client TFS <= 2018, vous devez disposer de 2 packages d’extension.
Cibles Produits et services pris en charge par votre intégration ou extension. Pour plus d’informations, consultez les cibles d’installation. Tableau d’objets, où chaque objet a un id champ indiquant l’un des éléments suivants :
    - Microsoft.VisualStudio.Services(extensions qui fonctionnent avec Azure DevOps ou TFS),
    Microsoft.TeamFoundation.Server- (extension qui fonctionne avec TFS),-
    Microsoft.VisualStudio.Services.Integration (intégrations qui fonctionnent avec Azure DevOps ou TFS),
    - Microsoft.TeamFoundation.Server.Integration (intégrations qui fonctionnent avec TFS)

Exemples d’attributs requis

{
    "manifestVersion": 1,
    "id": "tools",
    "version": "0.1.0",
    "name": "Fabrikam Tools",
    "publisher": "fabrikam",
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ]
}

Attributs facultatifs

Attributs runtime

Propriété Description Notes
étendues Tableau d’étendues d’autorisation (chaînes) répertoriant les autorisations requises par votre extension. Par exemple, vso.work et vs.code_write indique que votre extension a besoin d’un accès en lecture seule aux éléments de travail et à l’accès en lecture/écriture au code source (et à la ressource associée). Les étendues sont présentées à l’utilisateur lors de l’installation de votre extension. Pour plus d’informations, consultez la liste complète des étendues.
Demandes Tableau de demandes (chaînes) répertoriant les fonctionnalités requises par votre extension. Par exemple, api-version/3.0 indique que votre extension utilise les API version 3.0 et ne peut donc pas s’exécuter dans des produits plus anciens qui ne prennent pas en charge cette version. Pour plus d’informations, consultez la liste complète des demandes.
baseUri (Facultatif) URL de base pour toutes les URL relatives spécifiées par les contributions de l’extension. Par exemple : https://myapp.com/{{account.name}}/. Cette propriété doit être laissée vide si le contenu de votre extension est empaqueté avec votre extension.
Contributions Tableau de contributions au système.
contributionTypes Tableau de types de contributions définis par l’extension
{
    "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"
            }
        }
    ]
}

Attributs de découverte

Ces propriétés facultatives permettent aux utilisateurs de découvrir et d’en savoir plus sur votre extension :

Propriété Description Notes
description Quelques phrases décrivant les extensions. Limité à 200 caractères. La description doit être la « hauteur de l’ascenseur » de votre extension : quelques lignes pour décrire votre extension dans la Place de marché et rendre les personnes qui veulent l’installer. Consulter l’exemple ci-dessous
Icônes Dictionnaire d’icônes représentant l’extension. Clés valides : default (128 x 128 pixels) de type BMP, GIF, EXIF, JPG, PNG et TIFF). D’autres clés telles que large (512 x 512 pixels) peuvent être prises en charge ultérieurement. La valeur de chaque clé est le chemin d’accès au fichier d’icône dans l’extension
balises Tableau de balises de chaîne pour aider les utilisateurs à trouver votre extension. Exemples : agile, , task timerproject management, et ainsi de suite.
captures d’écran Tableau d’images qui n’ont pas pu être incluses dans votre contenu. Les captures d’écran sont plus précieuses lorsqu’elles sont proposées dans votre contenu et doivent être utilisées pour vous aider à créer une page de détails de marché de qualité pour votre extension. Utilisez des captures d’écran pour les images moins importantes non proposées dans votre contenu. Chaque image doit être de 1366 x 768 pixels. Chaque path élément est le chemin d’accès au fichier dans l’extension.
content Dictionnaire de fichiers de contenu qui décrivent votre extension aux utilisateurs. Chaque extension doit inclure du contenu solide. C’est ainsi que vous allez montrer aux utilisateurs ce que votre extension peut faire. Faites-le en sorte qu’il soit riche, consommable et incluez des captures d’écran si nécessaire. Incluez un overview.md fichier comme élément de contenu de base. Chaque fichier est supposé être au format GitHub Flavored Markdown . Chaque path élément est le chemin d’accès au fichier Markdown dans l’extension. Clés valides : details. D’autres clés peuvent être prises en charge à l’avenir.
links Dictionnaire de liens qui aident les utilisateurs à en savoir plus sur votre extension, obtenir du support et déplacer. Clés valides : getstarted - premières étapes, configuration ou utilisation. learn - contenu plus approfondi pour aider les utilisateurs à mieux comprendre votre extension ou service. license - Contrat de licence de l’utilisateur final. privacypolicy - Politique de confidentialité pour une extension. support - obtenir de l’aide et du support pour une extension. La valeur de chaque clé est un objet avec un uri champ, qui est l’URL absolue du lien
référentiel Dictionnaire de propriétés décrivant le référentiel de code source pour l’extension Clés valides : type - Type de référentiel. Exemple : git. uri - URL absolue du référentiel.
Badges Tableau de liens vers des badges de métadonnées externes comme TravisCI, Appveyor, et ainsi de suite, à partir des sites de badges approuvés Clés valides : href - Liez l’utilisateur à la sélection du badge. uri - URL absolue de l’image de badge à afficher. description - Description du badge à afficher au pointage.
Marque Dictionnaire des propriétés liées à la marque. Clés valides : color - couleur primaire de l’extension ou du serveur de publication ; peut être un hexadécimal (#ff00ff), RVB (rvb(100 200 50)) ou des noms de couleurs HTML pris en charge (bleu). theme - complète la couleur ; utilisez l’obscurité pour les couleurs de personnalisation foncées ou la lumière pour les couleurs de personnalisation plus claires .

Marquer une extension publique

Par défaut, toutes les extensions de la Place de marché Azure DevOps sont privées. Elles sont visibles uniquement par l’éditeur et les comptes partagés par l’éditeur. Si votre éditeur est vérifié, vous pouvez rendre votre extension publique en définissant l’indicateur Public dans votre manifeste d’extension :

{
    "galleryFlags": [
        "Public"
    ]
}            

Ou :

{
    "public": true
}            

Pour plus d’informations, consultez Package/Publish/Install.

Marquer une extension pour qu’elle soit en préversion

Si votre extension est prête pour les utilisateurs de la Place de marché à essayer, mais que vous travaillez toujours à quelques bogues ou à ajouter une fonction, vous pouvez la marquer comme preview:

{
    "galleryFlags": [
        "Preview"
    ]
}            

Marquer une extension comme préversion payante

Si vous envisagez de vendre votre extension sur la Place de marché, marquez-la comme préversion payante. Une extension marquée comme gratuite ne peut pas être modifiée en paiement.

{
    "galleryFlags": [
        "Paid",
        "Preview"
    ]
}            

Marquer une extension comme étant payante

Si vous souhaitez vendre votre extension sur la Place de marché, vous pouvez la marquer avec l’indicateur et __BYOLENFORCED la Paid balise (commence par deux traits de soulignement) :

{
    "galleryFlags": [
        "Paid"        
    ],
     "tags": [        
        "__BYOLENFORCED"
    ]
}            

L’indicateur et __BYOLENFORCED la Paid balise doivent être présents pour marquer une extension comme payante sur la Place de marché. ByOL (Bring-Your-Own-License) signifie que l’éditeur de l’extension fournit le mécanisme de facturation et de licence de l’extension, car il n’est pas fourni par Microsoft pour les extensions Azure DevOps. Toutes les extensions payantes sont requises pour définir la stratégie de confidentialité, la stratégie de support et un contrat de licence utilisateur final. Les éditeurs doivent fournir du contenu pour l’onglet tarification de la Place de marché comme suit :

{
    "content": {
        "details": {
            "path": "overview.md"
        }, 
        "pricing": {
            "path": "pricing.md"
        }
    }
}          

Vous devez également ajouter une nouvelle section dans votre manifeste d’extension pour remplacer les licences payantes. À l’avenir, nous supprimons la vérification des licences payantes et n’avons plus besoin du remplacement. Pour l’instant, vérifiez que votre extension s’affiche comme prévu. Chaque remplacement se compose d’un « ID » et d’un « comportement ». Faites correspondre l’ID des contributions définies dans le manifeste.

"licensing": {

      "overrides": [

        { "id": "my-hub", "behavior": " AlwaysInclude" }
      ]
    }

Si votre extension BYOL payante offre une période d’essai (nous vous recommandons donc), vous pouvez spécifier la durée de l’essai en jours :

{
    "galleryproperties": {
        "trialDays": "30"
    } 
}          

Remarque

Si vous souhaitez cibler Azure DevOps, mais que vous ne souhaitez pas exposer d’option de téléchargement pour votre extension, ajoutez la __DoNotDownload balise (commence par deux traits de soulignement) au manifeste d’extension. Si vous déplacez une extension de la facturation et des licences précédemment proposées de Microsoft vers le modèle BYOL, contactez-nous pour connaître les étapes appropriées.

Exemple de propriétés supplémentaires

{
    "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"
        }
    ]
}

Exemple de page Détails

  • 1 - description
  • 2 - icône
  • 3 - catégories
  • 4 - Captures d’écran
  • 5 - contenu (détails)
  • 6 - liens
  • 7 - Personnalisation

carte

Place de marché Q &A - Propriété CustomerQnASupport

Toutes les extensions de la Place de marché Visual Studio ont une section Questions et réponses (Q&A) pour autoriser les conversations publiques un-à-un entre les utilisateurs d’extension et les éditeurs. Les éditeurs peuvent choisir entre les questions et réponses de la Place de marché (Q&A), les problèmes GitHub ou une URL Q&A personnalisée. Vous pouvez désactiver Q&A dans la Place de marché à l’aide de la propriété CustomerQnASupport dans le manifeste.

Expérience par défaut (aucune modification du manifeste n’est requise)

  • Pour les extensions avec un dépôt GitHub, Marketplace redirige les utilisateurs dans la section Q&A vers les problèmes GitHub associés.
  • Pour les extensions sans dépôt GitHub, la Place de marché Q&A est activée.

Pour une expérience différente de l’une des options par défaut, utilisez la propriété CustomerQnASupport dans le manifeste.

{
    "CustomerQnASupport": {
        "enablemarketplaceqna": true,
        "url": "http://uservoice.visualstudio.com"
    } 
}

Propriétés

Propriétés de la section Customer Q &A Support :

  • enablemarketplaceqna - champ booléen, défini sur true la place de marché ou false pour la valeur Q&A personnalisée pour désactiver Q&A
  • URL - chaîne, URL pour Q&A personnalisé

Exemples montrant l’utilisation de la prise en charge de Q &A

Exemple : Extension à l’aide de Q &A personnalisés

{
     "CustomerQnASupport": {
        "enablemarketplaceqna":"true",
        "url": "http://uservoice.visualstudio.com"
    } 
}

Exemple : Extension avec dépôt GitHub, mais utilisation de la Place de marché Q &A au lieu de problèmes GitHub

{
     "CustomerQnASupport": {
        "enablemarketplaceqna":"true"
    } 
}

Exemple : Extension désactivant la section Q &A

{
     "CustomerQnASupport": {
        "enablemarketplaceqna":"false"
    } 
}

Étendues

Dans votre extension, vous pouvez définir une ou plusieurs étendues. Ces étendues déterminent les ressources auxquelles votre extension peut accéder et les opérations autorisées à effectuer sur ces ressources. Les étendues que vous spécifiez dans votre manifeste d’extension sont les étendues définies sur les jetons d’accès émis à votre extension. Pour plus d’informations, consultez Authentification et sécurité.

Si aucune étendue n’est spécifiée, les extensions ne sont fournies qu’à l’accès aux données de profil utilisateur et d’extension.

Étendues prises en charge

Catégorie Étendue Nom Description Hérite de
Sécurité avancée vso.advsec AdvancedSecurity (lecture) Accorde la possibilité de lire des alertes, des instances de résultats, des instances de résultat d’analyse.
vso.advsec_write AdvancedSecurity (lecture et écriture) Accorde la possibilité de charger des analyses dans sarif vso.advsec
vso.advsec_manage AdvancedSecurity (lecture, écriture et gestion) Accorde la possibilité de charger des analyses dans sarif vso.advsec_write
Pools d’agents vso.agentpools Pools d’agents (lecture) Accorde la possibilité d’afficher des tâches, des pools, des files d’attente, des agents et des travaux en cours d’exécution ou récemment terminés pour les agents.
vso.agentpools_manage Pools d'agents (lire, gérer). Accorde la possibilité de gérer des pools, des files d’attente et des agents. vso.agentpools
vso.environment_manage Environnement (lecture, gestion) Accorde la possibilité de gérer des pools, des files d’attente, des agents et des environnements. vso.agentpools_manage
Analyse vso.analytics Analytique (lecture) Accorde la possibilité d’interroger des données d’analyse.
Audit vso.auditlog Journal d’audit (lecture) Accorde la possibilité de lire le journal d’audit aux utilisateurs.
vso.auditstreams_manage Flux d’audit (lecture) Accorde la possibilité de gérer les flux d’audit aux utilisateurs. vso.auditlog
Créer vso.build Build (lire) Accorde la possibilité d’accéder aux artefacts de build, notamment les résultats de build, les définitions et les demandes, et la possibilité de recevoir des notifications sur les événements de génération via des hooks de service. vso.hooks_write
vso.build_execute Build (lecture et exécution) Accorde la possibilité d’accéder aux artefacts de build, notamment les résultats de build, les définitions et les demandes, ainsi que la possibilité de mettre en file d’attente une build, de mettre à jour les propriétés de build et de recevoir des notifications sur les événements de génération via des hooks de service. vso.build
Code vso.code Code (lire) Accorde la possibilité de lire le code source et les métadonnées sur les validations, les ensembles de modifications, les branches et d’autres artefacts de contrôle de version. Accorde également la possibilité de rechercher du code et d’être averti des événements de contrôle de version via des hooks de service. vso.hooks_write
vso.code_write Code (lecture et écriture) Accorde la possibilité de lire, de mettre à jour et de supprimer du code source, d’accéder aux métadonnées relatives aux validations, aux ensembles de modifications, aux branches et à d’autres artefacts de contrôle de version. Accorde également la possibilité de créer et de gérer des demandes de tirage et des révisions de code et de recevoir des notifications sur les événements de contrôle de version via des hooks de service. vso.code
vso.code_manage Code (lecture, écriture et gestion) Accorde la possibilité de lire, de mettre à jour et de supprimer du code source, d’accéder aux métadonnées relatives aux validations, aux ensembles de modifications, aux branches et à d’autres artefacts de contrôle de version. Accorde également la possibilité de créer et de gérer des référentiels de code, de créer et de gérer des demandes de tirage et des révisions de code, et de recevoir des notifications sur les événements de contrôle de version via des hooks de service. vso.code_write
vso.code_full Code (complet) Octroie un accès complet au code source, aux métadonnées sur les validations, les ensembles de modifications, les branches et d’autres artefacts de contrôle de version. Accorde également la possibilité de créer et de gérer des référentiels de code, de créer et de gérer des demandes de tirage et des révisions de code, et de recevoir des notifications sur les événements de contrôle de version via des hooks de service. Inclut également une prise en charge limitée des API d’om client. vso.code_manage
vso.code_status Code (état) Accorde la possibilité de lire et d’écrire l’état de la validation et de la demande de tirage.
Serveur connecté vso.connected_server Serveur connecté Accorde la possibilité d’accéder aux points de terminaison nécessaires à partir d’un serveur connecté local.
Droits vso.entitlements Droits d’utilisation (lecture) Fournit un accès en lecture seule au point de terminaison des droits de licence pour obtenir les droits de compte.
vso.memberentitlementmanagement MemberEntitlement Management (lecture) Accorde la possibilité de lire les utilisateurs, leurs licences ainsi que les projets et extensions auxquels ils peuvent accéder.
vso.memberentitlementmanagement_write MemberEntitlement Management (écriture) Accorde la possibilité de gérer les utilisateurs, leurs licences ainsi que les projets et extensions auxquels ils peuvent accéder. vso.memberentitlementmanagement
Extensions vso.extension Extensions (lecture) Accorde la possibilité de lire les extensions installées. vso.profile
vso.extension_manage Extensions (lecture et gestion) Accorde la possibilité d’installer, de désinstaller et d’effectuer d’autres actions administratives sur les extensions installées. vso.extension
vso.extension.data Données d’extension (lecture) Accorde la possibilité de lire des données (paramètres et documents) stockées par des extensions installées. vso.profile
vso.extension.data_write Données d’extension (lecture et écriture) Accorde la possibilité de lire et d’écrire des données (paramètres et documents) stockées par les extensions installées. vso.extension.data
Connexions Github vso.githubconnections Connexions GitHub (lecture) Accorde la possibilité de lire les connexions GitHub et les données de référentiels GitHub.
vso.githubconnections_manage Connexions GitHub (lecture et gestion) Accorde la possibilité de lire et de gérer des connexions GitHub et des données de référentiels GitHub vso.githubconnections
Graph &identity vso.graph Graphe (lecture) Accorde la possibilité de lire les informations d’appartenance à l’utilisateur, au groupe, à l’étendue et au groupe.
vso.graph_manage Graph (gérer) Accorde la possibilité de lire les informations d’appartenance des utilisateurs, des groupes, de l’étendue et du groupe, et d’ajouter des utilisateurs, des groupes et de gérer les appartenances aux groupes. vso.graph
vso.identity Identité (lire) Accorde la possibilité de lire des identités et des groupes.
vso.identity_manage Identité (gérer) Accorde la possibilité de lire, d’écrire et de gérer des identités et des groupes. vso.identity
Groupe d’ordinateurs vso.machinegroup_manage Groupe de déploiement (lecture, gestion) Permet de gérer les pools de groupes de déploiement et d’agents. vso.agentpools_manage
Place de marché vso.gallery Marketplace Accorde l’accès en lecture aux éléments publics et privés et aux éditeurs. vso.profile
vso.gallery_acquire Place de marché (acquisition) Accorde l’accès en lecture et la possibilité d’acquérir des éléments. vso.gallery
vso.gallery_publish Place de marché (publication) Accorde l’accès en lecture et la possibilité de charger, mettre à jour et partager des éléments. vso.gallery
vso.gallery_manage Place de marché (gérer) Accorde l’accès en lecture et la possibilité de publier et de gérer des éléments et des éditeurs. vso.gallery_publish
Notifications vso.notification Notifications (lecture) Fournit un accès en lecture aux abonnements et aux métadonnées d’événement, y compris les valeurs de champ filtrables. vso.profile
vso.notification_write Notifications (écriture) Fournit un accès en lecture et en écriture aux abonnements et un accès en lecture aux métadonnées d’événement, y compris les valeurs de champ filtrables. vso.notification
vso.notification_manage Notifications (gérer) Fournit un accès en lecture, en écriture et en gestion aux abonnements et l’accès en lecture aux métadonnées d’événement, y compris les valeurs de champ filtrables. vso.notification_write
vso.notification_diagnostics Notifications (diagnostics) Fournit l’accès aux journaux de diagnostic liés aux notifications et offre la possibilité d’activer les diagnostics pour des abonnements individuels. vso.notification
Emballage vso.packaging Empaquetage (lecture) Accorde la possibilité de lire des flux et des packages. vso.profile
vso.packaging_write Empaquetage (lecture et écriture) Accorde la possibilité de créer et lire des flux et des packages. vso.packaging
vso.packaging_manage Empaquetage (lecture, écriture et gestion) Accorde la possibilité de créer, lire, mettre à jour et supprimer des flux et des packages. vso.packaging_write
Ressources de pipeline vso.pipelineresources_use Ressources de pipeline (utilisation) Accorde la possibilité d’approuver la demande d’un pipeline pour utiliser une ressource protégée : pool d’agents, environnement, file d’attente, référentiel, fichiers sécurisés, connexion de service et groupe de variables.
vso.pipelineresources_manage Ressources de pipeline (utilisation et gestion) Accorde la possibilité de gérer une ressource protégée ou la demande d’un pipeline pour utiliser une ressource protégée : pool d’agents, environnement, file d’attente, référentiel, fichiers sécurisés, connexion de service et groupe de variables. vso.pipelineresources_manage
Projet et équipe vso.project Projet et équipe (lire) Accorde la possibilité de lire des projets et des équipes.
vso.project_write Projet et équipe (lecture et écriture) Accorde la possibilité de lire et de mettre à jour des projets et des équipes. vso.project
vso.project_manage Projet et équipe (lecture, écriture et gestion) Accorde la possibilité de créer, lire, mettre à jour et supprimer des projets et des équipes. vso.project_write
Version release vso.release Mise en production (lecture) Accorde la possibilité de lire les artefacts de mise en production, notamment les versions, les définitions de mise en production et l’environnement de mise en production. vso.profile
vso.release_execute Mise en production (lecture, écriture et exécution) Accorde la possibilité de lire et de mettre à jour les artefacts de mise en production, notamment les versions, les définitions de mise en production et l’environnement de mise en production, ainsi que la possibilité de mettre en file d’attente une nouvelle version. vso.release
vso.release_manage Release (lecture, écriture, exécution et gestion) Accorde la possibilité de lire, de mettre à jour et de supprimer des artefacts de mise en production, notamment les versions, les définitions de mise en production et l’environnement de mise en production, ainsi que la possibilité de mettre en file d’attente et d’approuver une nouvelle version. vso.release_manage
Fichiers sécurisés vso.securefiles_read Fichiers sécurisés (lecture) Accorde la possibilité de lire des fichiers sécurisés.
vso.securefiles_write Fichiers sécurisés (lecture, création) Accorde la possibilité de lire et de créer des fichiers sécurisés. vso.securefiles_read
vso.securefiles_manage Fichiers sécurisés (lecture, création et gestion) Accorde la possibilité de lire, de créer et de gérer des fichiers sécurisés. vso.securefiles_write
Sécurité vso.security_manage Sécurité (gérer) Accorde la possibilité de lire, d’écrire et de gérer les autorisations de sécurité.
Connexions de service vso.serviceendpoint Points de terminaison de service (lecture) Accorde la possibilité de lire les points de terminaison de service. vso.profile
vso.serviceendpoint_query Points de terminaison de service (lecture et requête) Accorde la possibilité de lire et d’interroger des points de terminaison de service. vso.serviceendpoint
vso.serviceendpoint_manage Points de terminaison de service (lecture, requête et gestion) Accorde la possibilité de lire, d’interroger et de gérer les points de terminaison de service. vso.serviceendpoint_query
Service Hooks vso.hooks Hooks de service (lecture) Accorde la possibilité de lire des abonnements et des métadonnées de hook de service, notamment les événements pris en charge, les consommateurs et les actions. (Plus public.) vso.profile
vso.hooks_write Crochets de service (lecture et écriture) Accorde la possibilité de créer et de mettre à jour des abonnements de hook de service et de lire les métadonnées, notamment les événements pris en charge, les consommateurs et les actions. (Plus public.) vso.hooks
vso.hooks_interact Hooks de service (interagir) Accorde la possibilité d’interagir et d’effectuer des actions sur les événements reçus via des hooks de service. (Plus public.) vso.profile
Paramètres vso.settings Paramètres (lecture) Accorde la possibilité de lire les paramètres.
vso.settings_write Paramètres (lecture et écriture) Accorde la possibilité de créer et de lire des paramètres.
Symboles vso.symbols Symboles (lecture) Accorde la possibilité de lire des symboles. vso.profile
vso.symbols_write Symboles (lecture et écriture) Accorde la possibilité de lire et d’écrire des symboles. vso.symbols
vso.symbols_manage Symboles (lecture, écriture et gestion) Accorde la possibilité de lire, d’écrire et de gérer des symboles. vso.symbols_write
Groupes de tâches vso.taskgroups_read Groupes de tâches (lecture) Accorde la possibilité de lire des groupes de tâches.
vso.taskgroups_write Groupes de tâches (lecture, création) Accorde la possibilité de lire et de créer des groupes de tâches. vso.taskgroups_read
vso.taskgroups_manage Groupes de tâches (lecture, création et gestion) Accorde la possibilité de lire, de créer et de gérer des groupes de tâches. vso.taskgroups_write
Tableau de bord de l’équipe vso.dashboards Tableaux de bord d’équipe (lecture) Accorde la possibilité de lire les informations du tableau de bord de l’équipe.
vso.dashboards_manage Tableaux de bord d’équipe (gérer) Accorde la possibilité de gérer les informations du tableau de bord de l’équipe. vso.dashboards
Gestion des tests vso.test Gestion des tests (lecture) Accorde la possibilité de lire des plans de test, des cas, des résultats et d’autres artefacts associés à la gestion des tests. vso.profile
vso.test_write Gestion des tests (lecture et écriture) Accorde la possibilité de lire, de créer et de mettre à jour des plans de test, des cas, des résultats et d’autres artefacts associés à la gestion des tests. vso.test
Threads vso.threads_full Threads de demande de tirage Accorde la possibilité de lire et d’écrire pour extraire des threads de commentaires de demande.
Jetons vso.tokens Jetons d’autorisation délégués Accorde la possibilité de gérer les jetons d’autorisation délégués aux utilisateurs.
vso.tokenadministration Administration des jetons Accorde la possibilité de gérer (afficher et révoquer) des jetons existants aux administrateurs de l’organisation.
Profil utilisateur vso.profile Profil utilisateur (lire) Accorde la possibilité de lire votre profil, comptes, collections, projets, équipes et autres artefacts organisationnels de niveau supérieur.
vso.profile_write Profil utilisateur (écriture) Accorde la possibilité d’écrire dans votre profil. vso.profile
Groupes de variables vso.variablegroups_read Groupes de variables (lecture) Accorde la possibilité de lire des groupes de variables.
vso.variablegroups_write Groupes de variables (lecture, création) Accorde la possibilité de lire et de créer des groupes de variables. vso.variablegroups_read
vso.variablegroups_manage Groupes de variables (lecture, création et gestion) Accorde la possibilité de lire, de créer et de gérer des groupes de variables. vso.variablegroups_write
Wiki vso.wiki Wiki (lecture) Accorde la possibilité de lire des wikis, des pages wiki et des pièces jointes wiki. Accorde également la possibilité de rechercher des pages wiki.
vso.wiki_write Wiki (lecture et écriture) Accorde la possibilité de lire, de créer et de mettre à jour des wikis, des pages wiki et des pièces jointes wiki. vso.wiki
Éléments de travail vso.work Éléments de travail (lire) Octroie la possibilité de lire des éléments de travail, des requêtes, des tableaux, des zones et des itérations, ainsi que d’autres métadonnées associées au suivi des éléments de travail. Accorde également la possibilité d’exécuter des requêtes, de rechercher des éléments de travail et de recevoir des notifications sur les événements d’élément de travail via des hooks de service. vso.hooks_write
vso.work_write Éléments de travail (lire et écrire) Octroie la possibilité de lire, de créer et de mettre à jour des éléments de travail et des requêtes, de mettre à jour des métadonnées de carte, de lire des zones de lecture et des itérations chemins d’accès à d’autres métadonnées associées au suivi des éléments de travail, d’exécuter des requêtes et de recevoir des notifications sur les événements d’élément de travail via des hooks de service. vso.work
vso.work_full Éléments de travail (complet) Octroie un accès complet aux éléments de travail, aux requêtes, aux backlogs, aux plans et aux métadonnées de suivi des éléments de travail. Fournit également la possibilité de recevoir des notifications sur les événements d’élément de travail via des hooks de service. vso.work_write
Emprunt d’identité utilisateur user_impersonation Emprunt d’identité utilisateur Disposez d’un accès complet aux API REST Visual Studio Team Services. Demandez et/ou donnez votre consentement à cette étendue avec précaution, car elle est très puissante !

Modification de l’étendue de l’extension publiée

Vous pouvez modifier l’étendue d’une extension publiée. Si vous avez précédemment installé votre extension (et autorisé l’ensemble précédent d’étendues), autorisez les nouvelles étendues avant de pouvoir effectuer une mise à niveau vers la dernière version.

La section Action requise du hub des paramètres d’extension affiche un utilisateur qui, le cas échéant, nécessite une autorisation :

modification de portée

Un administrateur peut ensuite passer en revue et autoriser le nouvel ensemble d’étendues :

scope-change-dialog

Cibles d’installation

Comme le nom l’indique, les cibles d’installation définissent les produits et services où vous pouvez installer votre extension. Microsoft.VisualStudio.Services est la cible d’installation la plus courante et indique que l’extension peut être installée dans Azure DevOps.

Les cibles d’installation d’une extension ou d’une intégration sont spécifiées via le targets champ du manifeste.

Identificateurs pris en charge pour les extensions :

  • Microsoft.VisualStudio.Services.Cloud: installe dans Azure DevOps Services
  • Microsoft.TeamFoundation.Server: installe dans Azure DevOps Server
  • Microsoft.VisualStudio.Services: s’installe dans les deux. Raccourci pour Microsoft.VisualStudio.Services.Cloud et Microsoft.TeamFoundation.Server version [14.2,)

Identificateurs pris en charge pour les intégrations :

  • Microsoft.VisualStudio.Services.Cloud.Integration: s’intègre à Azure DevOps Services
  • Microsoft.TeamFoundation.Server.Integration: s’intègre à Azure DevOps Server
  • Microsoft.VisualStudio.Services.Integration: s’intègre avec les deux. Raccourci pour Microsoft.VisualStudio.Services.Cloud.Integration et Microsoft.TeamFoundation.Server.Integration

Pour plus d’informations, consultez les points d’extensibilité.

Exemples de cibles d’installation

Exemple : Extension qui fonctionne avec Azure DevOps

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ]
}

Exemple : Extension qui fonctionne uniquement avec Azure DevOps Services

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services.Cloud"
        }
    ]
}

Les cibles d’installation peuvent également être utilisées dans le manifeste des intégrations. Par exemple, les produits, les applications ou les outils qui fonctionnent avec, mais qui ne s’installent pas dans Azure DevOps.

Exemple : Intégration qui fonctionne avec Azure DevOps

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services.Integration"
        }
    ]
}

Exemple : Intégration qui fonctionne uniquement avec Azure DevOps Server

{
    "targets": [
        {
            "id": "Microsoft.TeamFoundation.Server.Integration"
        }
    ]
}

Versions cibles d’installation

Certains identificateurs cibles d’installation, tels Microsoft.TeamFoundation.Server que et Microsoft.TeamFoundation.Server.Integration, prennent en charge une plage de versions facultative. Cette plage de versions facultative précise davantage les versions prises en charge sur laquelle l’extension ou l’intégration est prise en charge.

La version ou la plage de versions est spécifiée via le version champ sur l’objet cible d’installation. Cette valeur peut être :

  • Une version spécifique, par exemple : 15.0 (2017 RTM uniquement)
  • Plage de versions prises en charge, par exemple : [14.0) (2015 RTM et versions ultérieures), [14.3,15.1] (2015 Update 3 à 2017 Update 1). Les valeurs de plage sont affinées à l’aide de :
    • [: version minimale inclusive
    • ]: version maximale inclusive
    • (: version minimale exclusive
    • ): version maximale exclusive

Numéros de version pour Azure DevOps Server :

Version release Publications Version
2010 Toutes les mises en production 10.0
2012 Toutes les mises en production 11.0
2013 RTM et mises à jour 12.0, 12.1, 12.2, 12.3, 12.4
2015 RTM et mises à jour 14.0, 14.1, 14.2, 14.3
2017 RTM et mises à jour 15.0, 15.1
2018 RTM et mises à jour 16,0
2019 RTM et mises à jour 17,0
2020 RTM et mises à jour 18.0

Exemples montrant les versions

Exemple : Extension qui fonctionne avec Azure DevOps

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services.Cloud"
        },
        {
            "id": "Microsoft.TeamFoundation.Server",
            "version": "[15.0,)"
        }
    ]
}

Raccourcis

Microsoft.VisualStudio.Services est un raccourci pour Azure DevOps.

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ]
}

équivaut à :

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services.Cloud"
        },
        {
            "id": "Microsoft.TeamFoundation.Server",
            "version": "[14.2,)"
        }
    ]
}

Utilisation des cibles et des demandes d’installation

Les cibles et demandes d’installation sont utilisées ensemble pour présenter aux utilisateurs une vue correcte des produits/services avec lesquels votre extension ou intégration est compatible. Par exemple, en spécifiant une cible d’installation avec Microsoft.VisualStudio.Services une demande de api-version/3.0 moyens, l’extension fonctionne avec Azure DevOps.

Conseil

Pour plus d’informations sur les API REST, consultez la référence de l’API REST.

Exemple : Extension qui utilise les API version 3.0

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ],
    "demands": [
        "api-version/3.0"
    ]
}

Résout les cibles d’installation suivantes :

  1. Microsoft.VisualStudio.Services.Cloud
  2. Microsoft.TeamFoundation.ServerVersion: [15.0,)

Exemple : Intégration qui utilise les API version 2.0

{
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services.Integration"
        }
    ],
    "demands": [
        "api-version/2.0"
    ]
}

Résout les cibles d’installation suivantes :

  1. Microsoft.VisualStudio.Services.Cloud.Integration
  2. Microsoft.TeamFoundation.Server.IntegrationVersion: [14.0,)

Demandes

Les demandes vous permettent de spécifier des fonctionnalités et d’autres fonctionnalités requises par votre extension. Vous pouvez utiliser ces demandes pour limiter l’emplacement où votre extension peut être publiée ou installée.

Les demandes sont utilisées par visual Studio Marketplace pour répertorier les produits et les environnements avec lesquels votre extension est compatible, ce qui permet aux clients de comprendre si votre extension fonctionne avec leur version d’Azure DevOps, par exemple.

Consultez l’exemple suivant de la façon dont les demandes sont spécifiées dans le manifeste d’extension.

{
    "demands": [
        "api-version/3.0",
        "contribution/ms.vss-dashboards-web.widget-catalog"
    ]
}

Dans cet exemple, l’extension exige la version 3.0 des API, ce qui signifie qu’elle ne peut être installée que sur Azure DevOps. L’extension (et sa widget-catalog contribution) doivent également ms.vss-dashboards-web être installées (et activées) dans le regroupement avant que votre extension puisse être installée.

Demandes prises en charge

Type Description Vérifié lors de la publication ? Activé lors de l’installation ?
environment/cloud Nécessite une exécution dans un environnement cloud Oui Oui
environment/onprem Nécessite l’exécution dans un environnement local Oui Oui
api-version/{version} Nécessite une version d’API spécifique (minimum) Non Oui
extension/{id} Nécessite l’installation/l’activation d’une extension spécifique Non Oui
contribution/{id} Nécessite la disponibilité d’une contribution spécifique Non Oui
contributionType/{id} Nécessite qu’un type de contribution spécifique soit disponible Non Oui

Remarque

  • Utilisez environment/cloud et environment/onprem uniquement lorsque votre extension a des exigences liées à la topologie qui nécessitent l’exécution dans cet environnement particulier.
  • extension, contributionet contributionType les demandes sont évaluées au moment de l’installation et nécessitent que l’extension spécifiée soit déjà installée et activée dans l’organisation/le regroupement.

Fichiers

La files section est l’endroit où vous référencez tous les fichiers que vous souhaitez inclure dans votre extension. Vous pouvez ajouter des dossiers et des fichiers individuels :

{
    "files": [
        {
            "path": "hello-world.html", "addressable": true
        },
        {
            "path": "scripts", "addressable": true
        },
        {
            "path": "images/logo.png", "addressable": true, "packagePath": "/"
        }
    ]
}

Propriétés

Propriétés de la section Fichiers :

  • chemin d’accès : chemin d’accès à la ressource sur le disque, qui peut être relatif à votre répertoire racine.
  • adressable : (facultatif) Défini sur true si vous souhaitez que votre fichier soit adressable à l’URL. La valeur par défaut est false.
  • packagePath : (facultatif) Chemin d’accès à la ressource dans le package. La valeur par défaut est le chemin relatif sur le disque à partir de votre répertoire racine.
  • contentType – (facultatif) type MIME du fichier. La valeur par défaut est la meilleure estimation en fonction des paramètres de l’extension de fichier et du système d’exploitation.
  • assetType : (facultatif) Spécifiez la valeur de l’attribut Type de l’entrée de ressource dans le manifeste VSIX. Il peut également s’agir d’un tableau de chaînes, auquel cas plusieurs entrées de ressources sont ajoutées pour ce fichier. Valeur par défaut du packagePath.
  • lang – (facultatif) Langue de cette ressource. Les fichiers localisés sont servis en fonction de l’en-tête Accept-Language. Laissez vide pour indiquer que ce fichier est dans la langue par défaut (ou de secours). Les versions localisées du même fichier doivent avoir le même assetType.

Contributions

Chaque entrée de contribution a les propriétés suivantes :

  • ID : ID de référence (chaîne) pour la contribution. Rendez chaque ID de contribution unique au sein d’une extension. Voir référencer des contributions et des types.
  • type : ID du contributionType de cette contribution.
  • description - (Facultatif) Chaîne décrivant ce que fournit la contribution.
  • cibles : tableau d’ID de contribution auquel la contribution cible (contribution). Consultez Les contributions de ciblage.
  • properties - (Facultatif) Objet qui inclut des propriétés pour la contribution, tel que défini dans le type de contribution.

Pour plus d’informations, consultez la vue d’ensemble du modèle de contribution.

Types de contribution

Chaque entrée de contribution a les propriétés suivantes :

  • ID : ID de référence (chaîne) pour le type de contribution. Rendez chaque ID de type de contribution unique au sein d’une extension. Voir référencer des contributions et des types.
  • nom : nom convivial du type de contribution.
  • description : (Facultatif) Chaîne décrivant plus en détail le type de contribution.
  • properties - (Facultatif) Dictionnaire qui mappe les noms de propriétés aux descriptions de propriétés. Ces propriétés décrivent les propriétés obligatoires et facultatives que les contributions de ce type peuvent utiliser.

Les descriptions des propriétés ont les propriétés suivantes :

  • description : (Facultatif) Chaîne décrivant ce que la propriété est utilisée.
  • obligatoire : (Facultatif) Valeur booléenne, qui, si true indique que la propriété est requise pour toutes les contributions de ce type.
  • type : type de valeur que la propriété peut avoir, qui peut être chaîne, uri, guid, booléen, entier, double, dateTime, tableau ou objet.

Pour plus d’informations, consultez la vue d’ensemble du modèle de contribution.

Référencement des contributions et des types

Utilisez des identificateurs uniques pour référencer les contributions et les types de contributions. Types de référence avec la type propriété et référencer d’autres contributions avec la targets propriété.

  • Une référence complète de contribution inclut l’identificateur de l’éditeur, l’identificateur d’extension et l’identificateur de contribution/type, séparés par un point (.). Par exemple, ms.vss-web.hub est l’identificateur complet de la contribution avec l’identificateur de « hub » dans l’extension « vss-web » publiée par l’éditeur « ms » (Microsoft).
  • Les références de contribution relatives peuvent être utilisées dans un manifeste d’extension pour la référence d’une contribution à un autre type de contribution ou de contribution au sein de cette même extension. Dans ce cas, les identificateurs d’éditeur et d’extension ne sont pas inclus, et l’identificateur est un point (.) suivi de l’identificateur de contribution. Par exemple, .hub » peut être utilisé dans l’extension « vss-web » mentionnée précédemment comme raccourci pour « ms.vss-web.hub ».

Ciblage des contributions

Certaines contributions agissent comme des conteneurs ciblés par d’autres contributions.

  • Les contributions hub peuvent cibler des groupes hub. Lorsqu’une page est affichée, l’interface utilisateur web affiche toutes les contributions hub qui ciblent le groupe hub sélectionné. Les groupes hub ciblent une collection de groupes hub, qui définit un ensemble de groupes hub qui s’affichent dans une zone de navigation donnée, par exemple, des pages d’administration au niveau du projet.
  • Différents types de contributions peuvent cibler des menus : action, action de lien hypertexte et fournisseur d’actions. Les actions et les actions de lien hypertexte fournissent des entrées d’élément de menu uniques. Un fournisseur d’actions peut fournir plusieurs éléments de menu dynamique. Pour un menu donné, les éléments sont agrégés sur toutes les contributions (de l’un de ces types) qui ciblent cette contribution de menu spécifique.

Ajout d’une icône hub

Pour plus d’informations sur l’ajout d’une icône à votre hub, consultez les instructions de l’icône hub.

Services de badge pris en charge

La Place de marché prend uniquement en charge les badges des services approuvés suivants :

  • 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/

Remarque

Remplacez « vsmarketplacebadge.apphb.com » par « vsmarketplacebadges.dev ».

Pour afficher un badge d’un autre service, contactez le support technique à la Communauté des développeurs.

Exemple de manifeste

L’extension suivante contribue à une action au menu contextuel des builds terminées et à un hub au groupe de hubs de build :

{
    "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"
            }
        }
    ]
}