확장 매니페스트 참조

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

모든 확장에는 확장에 대한 기본 정보를 정의하는 JSON 매니페스트 파일이 있습니다. 또한 이 파일은 환경을 확장하고 향상시키는 방법을 정의합니다. 이 문서에서는 Azure DevOps에 대한 확장에 대한 매니페스트를 만드는 방법을 보여 줍니다.

Azure DevOps 확장 SDK사용하여 확장 개발에 대한 최신 설명서를 확인하세요.

확장 폴더의 루트에 이름이 지정된 vss-extension.json 파일을 만듭니다. 이 파일에는 확장의 ID 및 해당 설치 대상과 같이 실행할 수 있는 필수 특성이 포함되어 있습니다. 또한 확장에서 수행되는 기여 정의합니다.

일반적인 매니페스트의 다음 예제를 참조하세요.

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

필수 특성

이러한 속성은 필수입니다.

속성 설명 참고
manifestVersion 매니페스트 형식의 버전에 해당하는 숫자입니다. 1이어야 합니다.
ID 확장의 식별자입니다. Th ID는 동일한 게시자의 확장 간에 고유해야 하는 문자열입니다. 영문자 또는 숫자 문자로 시작하고 'A'~'Z', 'a'~'z', '0'~'9' 및 '-'(하이픈)를 포함해야 합니다. 예: sample-extension
version 확장 버전을 지정하는 문자열입니다. 형식이어야 합니다(예: major.minor.patch<a0/&0.1.2A). 다음 형식으로 네 번째 숫자를 추가할 수도 있습니다. 0.1.2.3
이름 확장의 짧고 사람이 읽을 수 있는 이름입니다. 200자로 제한됩니다. 예: "Fabrikam Agile Board Extension"
publisher 게시자의 식별자입니다. 이 식별자는 확장이 게시되는 식별자와 일치해야 합니다. 게시자 만들기 및 관리를 참조하세요.
범주 확장이 속한 범주를 나타내는 문자열 배열입니다. 하나 이상의 범주를 제공해야 하며 포함할 수 있는 범주 수에는 제한이 없습니다. 유효한 값: Azure Repos, Azure Boards, Azure PipelinesAzure Test PlansAzure Artifacts.

참고:
    - 확장을 프로그래밍 방식으로 게시하는 경우 tfx-cli 버전 =0.6.3을 사용합니다 >.
    - Azure DevOps 확장 작업 확장을 사용하여 게시하는 경우 해당 버전이 = 1.2.8인지 >확인합니다. 최근 범위 변경으로 인해 확장 업데이트를 승인해야 할 수 있습니다.
    - 이전에 멘션 범주는 기본적으로 Visual Studio Marketplace 및 Azure DevOps Server 2019 이상에 있습니다. 이전 버전의 TFS를 대상으로 하는 확장의 경우:
      - TFS 고객이 연결된 컨텍스트에서 Visual Studio Marketplace(로컬 갤러리 아님)를 통해 확장을 획득하는 경우 이전에 설명한 범주를 사용합니다.
      - TFS <=2018을 사용하여 고객과 확장을 직접 공유하려는 경우(즉, Visual Studio Marketplace를 통해서가 아님) 코드, 계획 및 추적, 빌드 및 릴리스, 테스트, 공동 작업 및 통합 범주를 대신 사용합니다. Visual Studio Marketplace를 통해 TFS <= 2018 고객과 직접 공유해야 하는 경우 2개의 확장 패키지가 있어야 합니다.
대상 통합 또는 확장에서 지원하는 제품 및 서비스입니다. 자세한 내용은 설치 대상을 참조 하세요. 각 개체에 다음 중 하나를 나타내는 필드가 있는 개체 id 의 배열입니다.
    - Microsoft.VisualStudio.Services (Azure DevOps 또는 TFS에서 작동하는 확장),
    - Microsoft.TeamFoundation.Server (TFS에서 작동하는 확장),
    - Microsoft.VisualStudio.Services.Integration (Azure DevOps 또는 TFS와 작동하는 통합),
    - Microsoft.TeamFoundation.Server.Integration (TFS와 작동하는 통합)

필수 특성의 예

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

선택적 특성

런타임 특성

속성 설명 참고
scopes 확장에 필요한 권한 부여 범위(문자열) 목록 권한의 배열입니다. 예를 들어 vso.workvs.code_write 확장에 작업 항목에 대한 읽기 전용 액세스 및 소스 코드(및 관련 리소스)에 대한 읽기/쓰기 액세스가 필요함을 나타냅니다. 확장 설치 시 사용자에게 범위가 표시됩니다. 자세한 내용은 전체 범위 목록을 참조 하세요.
요구 확장에 필요한 기능을 나열하는 요청(문자열) 배열입니다. 예를 들어 api-version/3.0 확장에서 버전 3.0 API를 사용하므로 이 버전을 지원하지 않는 이전 제품에서는 실행할 수 없습니다. 자세한 내용은 전체 요구 목록을 참조 하세요.
Baseuri (선택 사항) 확장의 기여 지정된 모든 상대 URL에 대한 기본 URL입니다. 예: https://myapp.com/{{account.name}}/ 확장의 콘텐츠가 확장과 함께 패키지된 경우 이 속성은 비워 두어야 합니다.
기여 시스템에 대한 기여 배열입니다.
contributionTypes 확장에 의해 정의된 기여 형식의 배열
{
    "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"
            }
        }
    ]
}

검색 특성

이러한 선택적 속성은 사용자가 확장을 검색하고 학습하는 데 도움이 됩니다.

속성 설명 참고
description 확장을 설명하는 몇 가지 문장. 200자로 제한됩니다. 설명은 확장의 "엘리베이터 피치"여야 합니다 . 아래 예제를 참조하세요.
아이콘 확장을 나타내는 아이콘의 사전입니다. 유효한 키: default BMP, GIF, EXIF, JPG, PNG 및 TIFF 형식의 (128x128 픽셀) (512x512 픽셀)와 같은 large 다른 키는 나중에 지원될 수 있습니다. 각 키의 값은 확장에 있는 아이콘 파일의 경로입니다.
tags 사용자가 확장을 찾는 데 도움이 되는 문자열 태그의 배열입니다. 예: agile, project management, task timer등.
스크린샷 콘텐츠포함할 수 없는 이미지의 배열입니다. 스크린샷은 콘텐츠에 추천될 때 더 유용하며 확장에 대한 품질 시장 세부 정보 페이지를 만드는 데 도움이 되는 스크린샷을 사용해야 합니다. 콘텐츠 표시되지 않는 덜 중요한 이미지에 대한 스크린샷을 사용합니다. 각 이미지는 1366x768 픽셀이어야 합니다. path 각 항목의 경로는 확장명에서 파일의 경로입니다.
content 사용자에 대한 확장을 설명하는 콘텐츠 파일의 사전입니다. 모든 확장에는 견고한 콘텐츠가 포함되어야 합니다. 확장에서 수행할 수 있는 작업을 사용자에게 표시하는 방법입니다. 풍부하고 소모성 있게 만들고 필요한 경우 스크린샷을 포함합니다. overview.md 파일을 기본 콘텐츠 조각으로 포함합니다. 각 파일은 GitHub Flavored Markdown 형식으로 간주됩니다. path 각 항목의 경로는 확장명에서 Markdown 파일의 경로입니다. 유효한 키: details. 다른 키는 나중에 지원될 수 있습니다.
링크 사용자가 확장에 대해 자세히 알아보고, 지원을 받고, 이동하는 데 도움이 되는 링크 사전입니다. 유효한 키: getstarted - 첫 번째 단계, 설정 또는 사용 방법. learn - 사용자가 확장 또는 서비스를 더 잘 이해하는 데 도움이 되는 심층 콘텐츠입니다. license - 최종 사용자 사용권 계약. privacypolicy - 확장에 대한 개인 정보 취급 방침입니다. support - 확장에 대한 도움말 및 지원을 받습니다. 각 키의 값은 링크의 절대 URL인 uri 필드가 있는 개체입니다.
저장소 확장에 대한 소스 코드 리포지토리를 설명하는 속성 사전 유효한 키: type - 리포지토리 유형입니다. 예: git. uri - 리포지토리의 절대 URL입니다.
배지 승인된 배지 사이트에서 TravisCI, Appveyor 등과 같은 외부 메타데이터 배지에 대한 링크 배열 유효한 키: href - 배지를 선택할 때 사용자가 탐색하는 링크입니다. uri - 표시할 배지 이미지의 절대 URL입니다. description - 가리킬 때 표시할 배지에 대한 설명입니다.
브랜딩 브랜드 관련 속성의 사전입니다. 유효한 키: color - 확장 또는 게시자의 기본 색, 16진수(#ff00ff), RGB(rgb(100,200,50) 또는 지원되는 HTML 색 이름(파란색)일 수 있습니다. theme- 색을 보완합니다. 어두운 브랜딩 색에 어두운 색을 사용하거나 밝은 브랜딩 색에 밝은 색을 사용합니다.

확장 퍼블릭 표시

기본적으로 Azure DevOps Marketplace모든 확장은 비공개입니다. 게시자와 게시자가 공유한 계정만 볼 수 있습니다. 게시자가 확인되면 확장 매니페스트에서 플래그를 Public 설정하여 확장을 공개할 수 있습니다.

{
    "galleryFlags": [
        "Public"
    ]
}            

또는

{
    "public": true
}            

자세한 내용은 패키지/게시/설치를 참조 하세요.

미리 보기로 확장 표시

Marketplace의 사용자가 시도할 수 있는 확장이 준비되었지만 여전히 몇 가지 버그를 사용하거나 함수를 추가하는 경우 다음과 같이 preview표시할 수 있습니다.

{
    "galleryFlags": [
        "Preview"
    ]
}            

확장을 유료 미리 보기로 표시

Marketplace에서 확장을 판매하려는 경우 유료 미리 보기표시합니다. 무료로 표시된 확장은 유료변경할 수 없습니다.

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

확장을 유료로 표시

Marketplace에서 확장을 판매하려는 경우 플래그 및 __BYOLENFORCED 태그(두 개의 밑줄로 시작)로 Paid 표시할 수 있습니다.

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

Marketplace에서 Paid 확장을 유료로 표시하려면 플래그와 __BYOLENFORCED 태그가 모두 있어야 합니다. BYOL(Bring-Your-Own-License)은 확장 게시자가 Azure DevOps 확장을 위해 Microsoft에서 제공하지 않으므로 확장에 대한 청구 및 라이선스 메커니즘을 제공한다는 것을 의미합니다. 모든 유료 확장은 개인 정보 보호 정책, 지원 정책 및 최종 사용자 라이선스 계약을 정의해야 합니다. 또한 게시자는 다음과 같이 Marketplace의 가격 책정 탭에 대한 콘텐츠를 제공해야 합니다.

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

또한 유료 라이선스를 재정의하려면 확장 매니페스트에 새 섹션을 추가해야 합니다. 나중에 유료 라이선스 검사 제거하고 더 이상 재정의가 필요하지 않습니다. 지금은 확장이 예상대로 표시되는지 확인합니다. 각 재정의는 "ID"와 "동작"으로 구성됩니다. "ID"는 매니페스트에 정의된 기여 ID와 일치해야 합니다.

"licensing": {

      "overrides": [

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

유료 BYOL 확장에서 평가판 기간을 제공하는 경우(권장) 평가판 기간을 일 단위로 지정할 수 있습니다.

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

참고 항목

Azure DevOps를 대상으로 하지만 확장에 대한 다운로드 옵션을 표시하지 않으려면 확장 매니페스트에 태그(두 개의 밑줄로 시작)를 추가 __DoNotDownload 합니다. 이전에 제공된 청구 및 라이선스에서 Microsoft의 BYOL 모델로 확장을 이동하는 경우 적절한 단계를 위해 Microsoft에 문의하세요.

더 많은 속성의 예

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

세부 정보 페이지 예제

  • 1 - 설명
  • 2 - 아이콘
  • 3 - 범주
  • 4 - 스크린샷
  • 5 - 콘텐츠(세부 정보)
  • 6 - 링크
  • 7 - 브랜딩

카드

Marketplace Q & A - CustomerQnASupport 속성

Visual Studio Marketplace의 모든 확장에는 확장 사용자와 게시자 간의 일대일 공개 대화를 허용하는 Q&A 섹션이 있습니다. 게시자는 Marketplace Q&A, GitHub 문제 또는 사용자 지정 Q&A URL 중에서 선택할 수 있습니다. 매니페스트의 CustomerQnASupport 속성을 사용하여 Marketplace에서 Q&A를 사용하지 않도록 설정할 수 있습니다.

기본 환경 (매니페스트를 변경할 필요가 없음)

  • GitHub 리포지토리를 사용하는 확장의 경우 Marketplace는 Q&A 섹션의 사용자를 연결된 GitHub 문제로 리디렉션합니다.
  • GitHub 리포지토리가 없는 확장의 경우 Marketplace Q&A가 사용하도록 설정됩니다.

기본 옵션 중 하나와 다른 환경의 경우 매니페스트에서 CustomerQnASupport 속성을 사용합니다.

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

속성

고객 Q 및 A 지원 섹션의 속성:

  • enablemarketplaceqna - 부울 필드, 마켓플레이스 또는 사용자 지정 Q&A에 대해 true로 설정됨, Q&A를 사용하지 않도록 설정하면 false
  • url - 문자열, 사용자 지정 Q&A의 URL

Q 및 A 지원 사용을 보여 주는 예제

예: 사용자 지정 Q 및 A를 사용하는 확장

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

예: GitHub 리포지토리를 사용하지만 GitHub 문제 대신 Marketplace Q 및 A를 사용하는 확장

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

예: Q 및 A 섹션을 사용하지 않도록 설정하는 확장

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

범위

확장에서 하나 이상의 범위를 정의할 수 있습니다. 이러한 범위는 확장에서 액세스할 수 있는 리소스와 해당 리소스에 대해 수행할 수 있는 작업을 결정합니다. 확장 매니페스트에서 지정하는 범위는 확장에 발급된 액세스 토큰에 설정된 범위입니다. 자세한 내용은 인증 및 보안을 참조하세요.

범위가 지정되지 않은 경우 확장은 사용자 프로필 및 확장 데이터에 대한 액세스 권한만 제공합니다.

지원되는 범위

범주 범위 속성 설명
에이전트 풀 vso.agentpools 에이전트 풀(읽기) 태스크, 풀, 큐, 에이전트 및 에이전트에 대해 현재 실행 중이거나 최근에 완료된 작업을 볼 수 있는 기능을 부여합니다.
vso.agentpools_manage 에이전트 풀(읽기, 관리) 풀, 큐 및 에이전트를 관리하는 기능을 부여합니다.
vso.environment_manage 환경(읽기, 관리) 풀, 큐, 에이전트 및 환경을 관리하는 기능을 부여합니다.
분석 vso.analytics 분석(읽기) 분석 데이터를 쿼리하는 기능을 부여합니다.
감사 vso.auditlog 감사 로그(읽기) 사용자에게 감사 로그를 읽을 수 있는 기능을 부여합니다.
vso.auditstreams_manage 감사 스트림(읽기) 사용자에게 감사 스트림을 관리하는 기능을 부여합니다.
빌드 vso.build 빌드(읽기) 빌드 결과, 정의 및 요청을 포함하여 빌드 아티팩트 액세스 기능과 서비스 후크를 통해 빌드 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다.
vso.build_execute 빌드(읽기 및 실행) 빌드 결과, 정의 및 요청을 포함하여 빌드 아티팩트 액세스 기능과 빌드를 큐에 대기하고 빌드 속성을 업데이트하며 서비스 후크를 통해 빌드 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다.
‘코드’ vso.code 코드(읽기) 커밋, 변경 집합, 분기 및 기타 버전 제어 아티팩트에 대한 소스 코드 및 메타데이터를 읽을 수 있는 기능을 부여합니다. 또한 코드를 검색하고 서비스 후크를 통해 버전 제어 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다.
vso.code_write 코드(읽기 및 쓰기) 소스 코드를 읽고, 업데이트하고, 삭제하고, 커밋, 변경 집합, 분기 및 기타 버전 제어 아티팩트에 대한 메타데이터에 액세스하는 기능을 부여합니다. 또한 끌어오기 요청 및 코드 검토를 만들고 관리하고 서비스 후크를 통해 버전 제어 이벤트에 대한 알림을 받을 수 있는 기능도 부여합니다.
vso.code_manage 코드(읽기, 쓰기 및 관리) 소스 코드를 읽고, 업데이트하고, 삭제하고, 커밋, 변경 집합, 분기 및 기타 버전 제어 아티팩트에 대한 메타데이터에 액세스하는 기능을 부여합니다. 또한 코드 리포지토리를 만들고 관리하고, 끌어오기 요청 및 코드 검토를 만들고 관리하며, 서비스 후크를 통해 버전 제어 이벤트에 대한 알림을 받을 수 있는 기능도 부여합니다.
vso.code_full 코드(전체) 소스 코드, 커밋에 대한 메타데이터, 변경 집합, 분기 및 기타 버전 제어 아티팩트에 대한 모든 권한을 부여합니다. 또한 코드 리포지토리를 만들고 관리하고, 끌어오기 요청 및 코드 검토를 만들고 관리하며, 서비스 후크를 통해 버전 제어 이벤트에 대한 알림을 받을 수 있는 기능도 부여합니다. 클라이언트 OM API에 대한 제한된 지원도 포함됩니다.
vso.code_status 코드(상태) 커밋 및 끌어오기 요청 상태 읽고 쓸 수 있는 기능을 부여합니다.
커넥트 서버 vso.connected_server 커넥트 서버 온-프레미스 연결된 서버에서 필요한 엔드포인트에 액세스할 수 있는 기능을 부여합니다.
권리 유형 vso.entitlements 권한(읽기) 계정 자격을 얻기 위해 라이선스 권한 엔드포인트에 대한 읽기 전용 액세스를 제공합니다.
vso.memberentitlementmanagement MemberEntitlement 관리(읽기) 액세스할 수 있는 프로젝트 및 확장뿐만 아니라 사용자, 라이선스를 읽을 수 있는 기능을 부여합니다.
vso.memberentitlementmanagement_write MemberEntitlement 관리(쓰기) 액세스할 수 있는 프로젝트 및 확장뿐만 아니라 사용자, 라이선스를 관리할 수 있는 기능을 부여합니다.
확장 vso.extension 확장(읽기) 설치된 확장을 읽을 수 있는 기능을 부여합니다.
vso.extension_manage 확장(읽기 및 관리) 설치된 확장에 대해 다른 관리 작업을 설치, 제거 및 수행할 수 있는 기능을 부여합니다.
vso.extension.data 확장 데이터(읽기) 설치된 확장에 의해 저장된 데이터(설정 및 문서)를 읽을 수 있는 기능을 부여합니다.
vso.extension.data_write 확장 데이터(읽기 및 쓰기) 설치된 확장 프로그램에서 저장한 데이터(설정 및 문서)를 읽고 쓸 수 있는 기능을 부여합니다.
그래프 및 ID vso.graph 그래프(읽기) 사용자, 그룹, 범위 및 그룹 멤버 자격 정보를 읽을 수 있는 기능을 부여합니다.
vso.graph_manage 그래프(관리) 사용자, 그룹, 범위 및 그룹 멤버 자격 정보를 읽고 사용자, 그룹 및 그룹 멤버 자격을 추가하는 기능을 부여합니다.
vso.identity ID(읽기) ID 및 그룹을 읽을 수 있는 기능을 부여합니다.
vso.identity_manage ID(관리) ID 및 그룹을 읽고, 쓰고, 관리할 수 있는 기능을 부여합니다.
컴퓨터 그룹 vso.machinegroup_manage 배포 그룹(읽기, 관리) 배포 그룹 및 에이전트 풀을 관리하는 기능을 제공합니다.
마켓플레이스 vso.gallery Marketplace 공용 및 개인 항목 및 게시자에 대한 읽기 권한을 부여합니다.
vso.gallery_acquire Marketplace(취득) 읽기 액세스 권한 및 항목 획득 기능을 부여합니다.
vso.gallery_publish Marketplace(게시) 읽기 액세스 권한 및 항목 업로드, 업데이트 및 공유 기능을 부여합니다.
vso.gallery_manage Marketplace(관리) 읽기 액세스 권한과 항목 및 게시자를 게시하고 관리하는 기능을 부여합니다.
알림 vso.notification 알림(읽기) 필터링 가능한 필드 값을 포함하여 구독 및 이벤트 메타데이터에 대한 읽기 액세스를 제공합니다.
vso.notification_write 알림(쓰기) 필터링 가능한 필드 값을 포함하여 구독에 대한 읽기 및 쓰기 액세스 및 이벤트 메타데이터에 대한 읽기 액세스를 제공합니다.
vso.notification_manage 알림(관리) 필터링 가능한 필드 값을 포함하여 구독에 대한 읽기, 쓰기 및 관리 액세스 및 이벤트 메타데이터에 대한 읽기 액세스를 제공합니다.
vso.notification_diagnostics 알림(진단) 알림 관련 진단 로그에 대한 액세스를 제공하고 개별 구독에 진단 사용하도록 설정하는 기능을 제공합니다.
패키징 vso.packaging 패키징(읽기) 피드 및 패키지를 읽을 수 있는 기능을 부여합니다.
vso.packaging_write 패키징(읽기 및 쓰기) 피드 및 패키지를 만들고 읽을 수 있는 기능을 부여합니다.
vso.packaging_manage 패키징(읽기, 쓰기 및 관리) 피드 및 패키지를 만들고, 읽고, 업데이트하고, 삭제할 수 있는 기능을 부여합니다.
파이프라인 리소스 vso.pipelineresources_use 파이프라인 리소스(사용) 보호된 리소스를 사용하도록 파이프라인의 요청을 승인하는 기능을 부여합니다( 에이전트 풀, 환경, 큐, 리포지토리, 보안 파일, 서비스 연결 및 변수 그룹).
vso.pipelineresources_manage 파이프라인 리소스(사용 및 관리) 보호된 리소스를 관리하거나 보호된 리소스를 사용하도록 파이프라인의 요청(에이전트 풀, 환경, 큐, 리포지토리, 보안 파일, 서비스 연결 및 변수 그룹)을 관리하는 기능을 부여합니다.
프로젝트 및 팀 vso.project 프로젝트 및 팀(읽기) 프로젝트 및 팀을 읽을 수 있는 기능을 부여합니다.
vso.project_write 프로젝트 및 팀(읽기 및 쓰기) 프로젝트 및 팀을 읽고 업데이트할 수 있는 기능을 부여합니다.
vso.project_manage 프로젝트 및 팀(읽기, 쓰기 및 관리) 프로젝트 및 팀을 만들고, 읽고, 업데이트하고, 삭제할 수 있는 기능을 부여합니다.
엔지니어링 vso.release 릴리스(읽기) 릴리스, 릴리스 정의 및 릴리스 환경을 포함하여 릴리스 아티팩트 읽기 기능을 부여합니다.
vso.release_execute 릴리스(읽기, 쓰기 및 실행) 릴리스, 릴리스 정의 및 릴리스 환경을 포함하여 릴리스 아티팩트를 읽고 업데이트하는 기능과 새 릴리스를 큐에 대기하는 기능을 부여합니다.
vso.release_manage 릴리스(읽기, 쓰기, 실행 및 관리) 릴리스, 릴리스 정의 및 릴리스 환경을 포함하여 릴리스 아티팩트를 읽고 업데이트하고 삭제하는 기능과 새 릴리스를 큐에 대기하고 승인하는 기능을 부여합니다.
보안 파일 vso.securefiles_read 보안 파일(읽기) 보안 파일을 읽을 수 있는 기능을 부여합니다.
vso.securefiles_write 보안 파일(읽기, 만들기) 보안 파일을 읽고 만드는 기능을 부여합니다.
vso.securefiles_manage 파일 보안(읽기, 만들기 및 관리) 보안 파일을 읽고, 만들고, 관리하는 기능을 부여합니다.
보안 vso.security_manage 보안(관리) 보안 권한을 읽고 쓰고 관리하는 기능을 부여합니다.
서비스 커넥트ions vso.serviceendpoint 서비스 엔드포인트(읽기) 서비스 엔드포인트를 읽을 수 있는 기능을 부여합니다.
vso.serviceendpoint_query 서비스 엔드포인트(읽기 및 쿼리) 서비스 엔드포인트를 읽고 쿼리하는 기능을 부여합니다.
vso.serviceendpoint_manage 서비스 엔드포인트(읽기, 쿼리 및 관리) 서비스 엔드포인트를 읽고 쿼리하고 관리하는 기능을 부여합니다.
설정 vso.settings 설정(읽기) 설정을 읽을 수 있는 기능을 부여합니다.
vso.settings_write 설정(읽기 및 쓰기) 설정을 만들고 읽을 수 있는 기능을 부여합니다.
Symbols vso.symbols 기호(읽기) 기호를 읽을 수 있는 기능을 부여합니다.
vso.symbols_write 기호(읽기 및 쓰기) 기호를 읽고 쓰는 기능을 부여합니다.
vso.symbols_manage 기호(읽기, 쓰기 및 관리) 기호를 읽고 쓰고 관리하는 기능을 부여합니다.
작업 그룹 vso.taskgroups_read 작업 그룹(읽기) 작업 그룹을 읽을 수 있는 기능을 부여합니다.
vso.taskgroups_write 작업 그룹(읽기, 만들기) 작업 그룹을 읽고 만드는 기능을 부여합니다.
vso.taskgroups_manage 작업 그룹(읽기, 만들기 및 관리) 작업 그룹을 읽고, 만들고, 관리할 수 있는 기능을 부여합니다.
팀 대시보드 vso.dashboards 팀 대시보드(읽기) 팀 대시보드 정보를 읽을 수 있는 기능을 부여합니다.
vso.dashboards_manage 팀 대시보드(관리) 팀 대시보드 정보를 관리하는 기능을 부여합니다.
테스트 관리 vso.test 테스트 관리(읽기) 테스트 계획, 사례, 결과 및 기타 테스트 관리 관련 아티팩트 읽기 기능을 부여합니다.
vso.test_write 테스트 관리(읽기 및 쓰기) 테스트 계획, 사례, 결과 및 기타 테스트 관리 관련 아티팩트 읽기, 만들기 및 업데이트 기능을 부여합니다.
스레드 vso.threads_full PR 스레드 요청 주석 스레드를 끌어오기 위해 읽고 쓰는 기능을 부여합니다.
토큰 vso.tokens 위임된 권한 부여 토큰 사용자에게 위임된 권한 부여 토큰을 관리하는 기능을 부여합니다.
vso.tokenadministration 토큰 관리istration 조직 관리자에게 기존 토큰을 관리(보기 및 해지)하는 기능을 부여합니다.
사용자 프로필 vso.profile 사용자 프로필(읽기) 프로필, 계정, 컬렉션, 프로젝트, 팀 및 기타 최상위 조직 아티팩트 읽기 기능을 부여합니다.
vso.profile_write 사용자 프로필(쓰기) 프로필에 쓸 수 있는 기능을 부여합니다.
변수 그룹 vso.variablegroups_read 변수 그룹(읽기) 변수 그룹을 읽을 수 있는 기능을 부여합니다.
vso.variablegroups_write 변수 그룹(읽기, 만들기) 변수 그룹을 읽고 만드는 기능을 부여합니다.
vso.variablegroups_manage 변수 그룹(읽기, 만들기 및 관리) 변수 그룹을 읽고, 만들고, 관리할 수 있는 기능을 부여합니다.
Wiki vso.wiki Wiki(읽기) 위키, 위키 페이지 및 위키 첨부 파일을 읽을 수 있는 기능을 부여합니다. 또한 위키 페이지를 검색할 수 있는 기능도 부여합니다.
vso.wiki_write Wiki(읽기 및 쓰기) 위키, 위키 페이지 및 위키 첨부 파일을 읽고, 만들고, 업데이트할 수 있는 기능을 부여합니다.
작업 항목 vso.work 작업 항목(읽기) 작업 항목, 쿼리, 보드, 영역 및 반복 경로 및 기타 작업 항목 추적 관련 메타데이터를 읽을 수 있는 기능을 부여합니다. 또한 쿼리를 실행하고, 작업 항목을 검색하고, 서비스 후크를 통해 작업 항목 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다.
vso.work_write 작업 항목(읽기 및 쓰기) 작업 항목 및 쿼리를 읽고, 만들고, 업데이트하고, 보드 메타데이터, 읽기 영역 및 반복 경로를 다른 작업 항목 추적 관련 메타데이터, 쿼리 실행 및 서비스 후크를 통해 작업 항목 이벤트에 대한 알림을 받을 수 있는 기능을 부여합니다.
vso.work_full 작업 항목(전체) 메타데이터를 추적하는 작업 항목, 쿼리, 백로그, 계획 및 작업 항목에 대한 모든 권한을 부여합니다. 또한 서비스 후크를 통해 작업 항목 이벤트에 대한 알림을 수신하는 기능을 제공합니다.
사용자 가장 user_impersonation 사용자 가장 Visual Studio Team Services REST API에 대한 모든 권한을 갖습니다. 매우 강력하기 때문에 주의해서 이 범위를 요청 및/또는 동의하세요!

게시된 확장의 범위 변경

게시된 확장의 범위를 변경할 수 있습니다. 이전에 확장을 설치하고 이전 범위 집합에 권한을 부여한 경우 새 범위의 권한을 부여해야 최신 버전으로 업그레이드할 수 있습니다.

확장 설정 허브의 작업 필수 섹션에는 설치된 확장에 권한 부여가 필요한 사용자가 표시됩니다.

scope-change

그러면 관리자는 새 범위 집합을 검토하고 권한을 부여할 수 있습니다.

scope-change-dialog

설치 대상

이름에서 알 수 있듯이 설치 대상은 확장을 설치할 수 있는 제품 및 서비스를 정의합니다. Microsoft.VisualStudio.Services 는 가장 일반적인 설치 대상이며 확장을 Azure DevOps에 설치할 수 있음을 나타냅니다.

확장 또는 통합에 대한 설치 대상은 매니페스트의 targets 필드를 통해 지정됩니다.

확장에 지원되는 식별자:

  • Microsoft.VisualStudio.Services.Cloud: Azure DevOps Services에 설치
  • Microsoft.TeamFoundation.Server: Azure DevOps Server에 설치
  • Microsoft.VisualStudio.Services: 둘 다에 설치됩니다. 바로 가기 및 Microsoft.VisualStudio.Services.CloudMicrosoft.TeamFoundation.Server 버전 [14.2,)

통합에 지원되는 식별자:

  • Microsoft.VisualStudio.Services.Cloud.Integration: Azure DevOps Services와 통합
  • Microsoft.TeamFoundation.Server.Integration: Azure DevOps Server와 통합
  • Microsoft.VisualStudio.Services.Integration: 둘 다와 통합됩니다. 및 Microsoft.VisualStudio.Services.Cloud.IntegrationMicrosoft.TeamFoundation.Server.Integration

자세한 내용은 확장성 지점을 참조 하세요.

설치 대상의 예

예: Azure DevOps에서 작동하는 확장

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

예: Azure DevOps Services에서만 작동하는 확장

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

설치 대상은 통합 매니페스트에서도 사용할 수 있습니다. 예를 들어 제품, 앱 또는 Azure DevOps에 설치되지 않고 함께 작동하지만 설치하지 않는 도구가 있습니다.

예: Azure DevOps와 함께 작동하는 통합

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

예: Azure DevOps Server에서만 작동하는 통합

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

설치 대상 버전

일부 설치 대상 식별자(예: Microsoft.TeamFoundation.ServerMicrosoft.TeamFoundation.Server.Integration)는 선택적 버전 범위를 지원합니다. 이 선택적 버전 범위는 확장 또는 통합이 지원되는 지원되는 릴리스를 자세히 설명합니다.

버전 또는 버전 범위는 설치 대상 개체의 version 필드를 통해 지정됩니다. 이 값은 다음 중 하나일 수 있습니다.

  • 특정 버전(예: 15.0 (2017 RTM만 해당)
  • 지원되는 버전 범위(예: [14.0) (2015 RTM 이상), [14.3,15.1] (2015 업데이트 3~2017 업데이트 1) 범위 값은 다음을 사용하여 구체화됩니다.
    • [: 최소 버전 포함
    • ]: 최대 버전 포함
    • (: 최소 버전 전용
    • ): 최대 버전 전용

Azure DevOps Server의 버전 번호:

Release 릴리스 버전
2010 모든 릴리스 10.0
2012 모든 릴리스 11.0
2013 RTM 및 업데이트 12.0, 12.1, 12.2, 12.3, 12.4
2015 RTM 및 업데이트 14.0, 14.1, 14.2, 14.3
2017 RTM 및 업데이트 15.0, 15.1
2018 RTM 및 업데이트 16.0
2019 RTM 및 업데이트 17.0
2020 RTM 및 업데이트 18.0

버전을 보여 주는 예제

예: Azure DevOps에서 작동하는 확장

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

바로 가기

Microsoft.VisualStudio.Services 는 Azure DevOps의 바로 가기입니다.

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

다음과 동일합니다.

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

설치 대상 및 요구 사항 사용

설치 대상 및 요구 사항은 확장 또는 통합이 호환되는 제품/서비스에 대한 올바른 보기를 사용자에게 표시하기 위해 함께 사용됩니다. 예를 들어 필요에 api-version/3.0 따라 설치 대상 Microsoft.VisualStudio.Services 을 지정하면 확장이 Azure DevOps에서 작동합니다.

REST API에 대한 자세한 내용은 REST API 참조를 참조하세요.

예: 버전 3.0 API를 사용하는 확장

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

다음 설치 대상으로 확인합니다.

  1. Microsoft.VisualStudio.Services.Cloud
  2. Microsoft.TeamFoundation.Server버전: [15.0,)

예제: 버전 2.0 API를 사용하는 통합

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

다음 설치 대상으로 확인합니다.

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

요청

요구 사항을 통해 확장에 필요한 기능 및 기타 기능을 지정할 수 있습니다. 이러한 요구를 사용하여 확장을 게시하거나 설치할 수 있는 위치를 제한할 수 있습니다.

요구는 Visual Studio Marketplace에서 확장과 호환되는 제품 및 환경을 나열하는 데 사용되므로 고객이 확장이 Azure DevOps 버전에서 작동하는지 여부를 이해하는 데 도움이 됩니다.

확장 매니페스트에서 요구 사항을 지정하는 방법에 대한 다음 예제를 참조하세요.

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

이 예제에서는 확장에 API 버전 3.0이 필요합니다. 즉, Azure DevOps에만 설치할 수 있습니다. 또한 확장을 설치하기 ms.vss-dashboards-web 전에 컬렉션에 확장(및 해당 widget-catalog 기여)을 설치하고 사용하도록 설정해야 합니다.

지원되는 요구 사항

Type 설명 게시할 때 확인하시겠습니까? 설치 시 확인하시겠습니까?
environment/cloud 클라우드 환경에서 실행해야 합니다.
environment/onprem 온-프레미스 환경에서 실행해야 합니다.
api-version/{version} 특정 API 버전 필요(최소)
extension/{id} 특정 확장을 설치/사용하도록 설정해야 함
contribution/{id} 특정 기여를 사용할 수 있어야 합니다.
contributionType/{id} 특정 기여 유형을 사용할 수 있어야 합니다.

참고 항목

  • environment/onprem 확장에 특정 환경에서 실행해야 하는 토폴로지 관련 요구 사항이 있는 경우에만 사용합니다environment/cloud.
  • extension, contributioncontributionType 요구 사항은 설치 시 평가되며 지정된 확장이 조직/컬렉션에 이미 설치되고 사용하도록 설정되어 있어야 합니다.

Files

섹션 files 은 확장에 포함하려는 모든 파일을 참조하는 위치입니다. 폴더와 개별 파일을 모두 추가할 수 있습니다.

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

속성

파일 섹션의 속성:

  • path - 루트 디렉터리를 기준으로 할 수 있는 디스크의 리소스 경로입니다.
  • addressable – (선택 사항) 파일을 URL 주소 지정 가능으로 설정하려면 true 로 설정합니다. 기본값은 false입니다.
  • packagePath – (선택 사항) 패키지 내의 리소스에 대한 경로입니다. 기본적으로 루트 디렉터리에서 디스크의 상대 경로로 설정됩니다.
  • contentType – (선택 사항) 파일의 MIME 형식입니다. 기본값은 파일 확장명과 OS 설정에 따라 가장 적합한 추측입니다.
  • assetType – (선택 사항) VSIX 매니페스트에서 자산 항목의 Type 특성 값을 지정합니다. 문자열 배열일 수도 있습니다. 이 경우 이 파일에 대해 여러 자산 항목이 추가됩니다. 기본값은 packagePath입니다.
  • lang – (선택 사항) 이 자산의 언어입니다. 지역화된 파일은 Accept-Language 헤더를 기반으로 제공됩니다. 이 파일이 기본(또는 대체) 언어임을 나타내려면 비워 둡니다. 동일한 파일의 지역화된 버전에는 동일한 assetType이 있어야 합니다.

참여

각 기여 항목에는 다음과 같은 속성이 있습니다.

  • id - 기여에 대한 참조 ID(문자열)입니다. 각 기여의 ID는 확장 내에서 고유해야 합니다. 기여 및 형식 참조를 참조하세요.
  • type - 이 기여의 contributionType ID입니다.
  • description - (선택 사항) 기여가 제공하는 내용을 설명하는 문자열입니다.
  • targets - 기여가 대상으로 하는 기여 ID의 배열입니다(기여). 대상 지정 기여 참조하세요.
  • properties - (선택 사항) 기여 유형에 정의된 대로 기여에 대한 속성을 포함하는 개체입니다.

자세한 내용은 기여 모델 개요를 참조하세요.

기여 형식

각 기여 항목에는 다음과 같은 속성이 있습니다.

  • id - 기여 유형에 대한 참조 ID(문자열)입니다. 각 기여 형식의 ID는 확장 내에서 고유해야 합니다. 기여 및 형식 참조를 참조하세요.
  • name - 기여 형식의 이름입니다.
  • description - (선택 사항) 기여 유형이 무엇인지 자세히 설명하는 문자열입니다.
  • properties - (선택 사항) 속성 이름을 속성 설명에 매핑하는 사전입니다. 이러한 속성은 이 형식의 기여 사용할 수 있는 필수 및 선택적 속성을 설명합니다.

속성 설명에는 다음과 같은 속성이 있습니다.

  • description - (선택 사항) 속성이 사용되는 항목을 설명하는 문자열입니다.
  • required - (선택 사항) 부울 값입니다. true이면 이 형식의 모든 기여 속성이 필요했음을 나타냅니다.
  • type - 문자열, uri, guid, 부울, 정수, double, dateTime, 배열 또는 개체일 수 있는 속성에 포함할 수 있는 값의 형식입니다.

자세한 내용은 기여 모델 개요를 참조하세요.

기여 및 형식 참조

고유 식별자를 사용하여 기여 및 기여 유형을 참조합니다. 속성을 사용하여 형식type 참조하고 속성을 사용하여 다른 기여 참조합니다targets.

  • 전체 기여 참조에는 게시자 식별자, 확장 식별자 및 기여/형식 식별자가 점(.)으로 구분되어 있습니다. 예를 들어 " ms.vss-web.hub ms"(Microsoft) 게시자가 게시한 "vss-web" 확장에서 "허브" 식별자를 사용하는 기여에 대한 전체 식별자입니다.
  • 상대 기여 참조는 동일한 확장 내의 다른 기여 또는 기여 유형에 대한 기여 참조에 대해 확장 매니페스트 내에서 사용될 수 있습니다. 이 경우 게시자 및 확장 식별자는 포함되지 않으며, 식별자는 점(.) 뒤에 기여 식별자입니다. 예를 들어 ".hub"는 이전에 "ms.vss-web.hub"의 바로 가기로 멘션 "vss-web" 확장 내에서 사용될 수 있습니다.

대상 지정 기여

일부 기여 다른 기여 대상으로 하는 컨테이너 역할을 합니다.

  • 허브 기여 허브 그룹을 대상으로 지정할 수 있습니다. 페이지가 렌더링되면 웹 UI는 선택한 허브 그룹을 대상으로 하는 모든 허브 기여 표시합니다. 허브 그룹은 지정된 탐색 영역에 표시되는 허브 그룹 집합(예: 프로젝트 수준 관리 페이지)을 정의하는 허브 그룹 컬렉션을 대상으로 합니다.
  • 다양한 유형의 기여 작업, 하이퍼링크 작업 및 작업 공급자와 같은 메뉴를 대상으로 지정할 수 있습니다. 작업 및 하이퍼링크 동작은 단일 메뉴 항목 항목을 제공합니다. 작업 공급자는 여러 동적 메뉴 항목을 제공할 수 있습니다. 지정된 메뉴의 경우 항목은 특정 메뉴 기여를 대상으로 하는 모든 기여(이러한 형식 중)에 걸쳐 집계됩니다.

허브 아이콘 추가

허브에 아이콘을 추가하는 방법에 대한 자세한 내용은 허브 아이콘 지침을 검사.

지원되는 배지 서비스

Marketplace는 다음과 같은 신뢰할 수 있는 서비스의 배지만 지원합니다.

  • 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/
  • isit기본tained.com/
  • marketplace.visualstudio.com/
  • snyk.io/
  • travis-ci.com/
  • travis-ci.org/
  • vsmarketplacebadges.dev/
  • bithound.io/
  • deepscan.io/
  • githost.io/
  • gitlab.com/
  • opencollective.co/

참고 항목

"vsmarketplacebadge.apphb.com"을 "vsmarketplacebadges.dev"로 대체합니다.

다른 서비스의 배지를 표시하려면 문의하세요 vsmarketplace@microsoft.com.

매니페스트 예제

다음 확장은 완료된 빌드 상황에 맞는 메뉴 및 허브에 대한 작업을 빌드 허브 그룹에 제공합니다.

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