Pontos de extremidade da API REST para envio de dependências
Use a API REST para enviar dependências.
Sobre os envios de dependências
Você pode usar a API REST para enviar dependências para um projeto. Isso permite que você adicione dependências, como aquelas resolvidas quando o software é compilado ou criado, ao recurso de gráfico de dependências do GitHub, fornecendo uma visão mais completa de todas as dependências do seu projeto.
O gráfico mostra todas as dependências que você envia usando a API, além de quaisquer dependências identificadas por meio de arquivos de manifesto ou de bloqueio no repositório (por exemplo, um arquivo package-lock.json
em um projeto JavaScript). Para obter mais informações sobre exibição do grafo de dependência, confira Explorar as dependências de um repositório.
As dependências enviadas receberão Dependabot alerts e Dependabot security updates para quaisquer vulnerabilidades conhecidas. Você só obterá os Dependabot alerts das dependências de um dos ecossistemas compatíveis com o GitHub Advisory Database. Para saber mais sobre esses ecossistemas, confira Sobre o banco de dados de avisos do GitHub. Para dependências transitivas enviadas por meio de API de envio de dependência, o Dependabot abrirá automaticamente solicitações de pull para atualizar a dependência pai, se uma atualização estiver disponível.
As dependências enviadas serão mostradas na revisão de dependência, mas não estão disponíveis nos insights de dependência da sua organização.
Note
A API de revisão de dependência e API de envio de dependência funcionam em conjunto. Isso significa que a API de revisão de dependência incluirá dependências enviadas por meio de API de envio de dependência.
É possível enviar dependências na forma de um instantâneo. Um instantâneo é um conjunto de dependências associadas a um SHA de commit e a outros metadados, que reflete o estado atual do repositório de um commit. É possível optar por usar ações predefinidas ou criar suas próprias ações para enviar suas dependências no formato necessário sempre que seu projeto for criado. Para saber mais, confira Usar a API de envio de dependências.
É possível enviar diversos conjuntos de dependências para serem incluídos em seu grafo de dependência. A API REST usa a propriedade job.correlator
e a categoria detector.name
do instantâneo para garantir que os envios mais recentes para cada fluxo de trabalho sejam exibidos. A propriedade correlator
em si é o campo primário que você usará para diferenciar os envios independentes. Um correlator
de exemplo pode ser uma combinação simples de duas variáveis disponíveis em execuções de ações: <GITHUB_WORKFLOW> <GITHUB_JOB>
.
Create a snapshot of dependencies for a repository
Create a new snapshot of a repository's dependencies.
The authenticated user must have access to the repository.
OAuth app tokens and personal access tokens (classic) need the repo
scope to use this endpoint.
Tokens de acesso refinados para "Create a snapshot of dependencies for a repository"
Esse ponto de extremidade funciona com os seguintes tipos de token refinados:
- Tokens de acesso de usuário do aplicativo GitHub
- Tokens de acesso à instalação do aplicativo GitHub
- Tokens de acesso pessoal refinados
O token refinado deve ter os seguintes conjuntos de permissões:
- "Contents" repository permissions (write)
Parâmetros para "Create a snapshot of dependencies for a repository"
Nome, Tipo, Descrição |
---|
accept string Setting to |
Nome, Tipo, Descrição |
---|
owner string ObrigatórioThe account owner of the repository. The name is not case sensitive. |
repo string ObrigatórioThe name of the repository without the |
Nome, Tipo, Descrição | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
version integer ObrigatórioThe version of the repository snapshot submission. | |||||||||||||||||||||
job object Obrigatório | |||||||||||||||||||||
Properties of |
Nome, Tipo, Descrição |
---|
id string ObrigatórioThe external ID of the job. |
correlator string ObrigatórioCorrelator provides a key that is used to group snapshots submitted over time. Only the "latest" submitted snapshot for a given combination of |
html_url string The url for the job. |
sha
string ObrigatórioThe commit SHA associated with this dependency snapshot. Maximum length: 40 characters.
ref
string ObrigatórioThe repository branch that triggered this snapshot.
detector
object ObrigatórioA description of the detector used.
Properties of detector
Nome, Tipo, Descrição |
---|
name string ObrigatórioThe name of the detector used. |
version string ObrigatórioThe version of the detector used. |
url string ObrigatórioThe url of the detector used. |
metadata
object User-defined metadata to store domain-specific information limited to 8 keys with scalar values.
manifests
object A collection of package manifests, which are a collection of related dependencies declared in a file or representing a logical group of dependencies.
Properties of manifests
Nome, Tipo, Descrição | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
key object A user-defined key to represent an item in | ||||||||||||||||||
Properties of |
Nome, Tipo, Descrição | |||||||||
---|---|---|---|---|---|---|---|---|---|
name string ObrigatórioThe name of the manifest. | |||||||||
file object | |||||||||
Properties of |
Nome, Tipo, Descrição |
---|
source_location string The path of the manifest file relative to the root of the Git repository. |
metadata
object User-defined metadata to store domain-specific information limited to 8 keys with scalar values.
resolved
object A collection of resolved package dependencies.
Properties of resolved
Nome, Tipo, Descrição | ||||||
---|---|---|---|---|---|---|
key object A user-defined key to represent an item in | ||||||
Properties of |
Nome, Tipo, Descrição |
---|
package_url string Package-url (PURL) of dependency. See https://github.com/package-url/purl-spec for more details. |
metadata object User-defined metadata to store domain-specific information limited to 8 keys with scalar values. |
relationship string A notation of whether a dependency is requested directly by this manifest or is a dependency of another dependency. Pode ser um dos: |
scope string A notation of whether the dependency is required for the primary build artifact (runtime) or is only used for development. Future versions of this specification may allow for more granular scopes. Pode ser um dos: |
dependencies array of strings Array of package-url (PURLs) of direct child dependencies. |
scanned
string ObrigatórioThe time at which the snapshot was scanned.
Códigos de status de resposta HTTP para "Create a snapshot of dependencies for a repository"
Código de status | Descrição |
---|---|
201 | Created |
Exemplos de código para "Create a snapshot of dependencies for a repository"
Se você acessar o GitHub em GHE.com, substitua api.github.com
pelo subdomínio dedicado da sua empresa em api.SUBDOMAIN.ghe.com
.
Exemplo de solicitação
curl -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/OWNER/REPO/dependency-graph/snapshots \
-d '{"version":0,"sha":"ce587453ced02b1526dfb4cb910479d431683101","ref":"refs/heads/main","job":{"correlator":"yourworkflowname_youractionname","id":"yourrunid"},"detector":{"name":"octo-detector","version":"0.0.1","url":"https://github.com/octo-org/octo-repo"},"scanned":"2022-06-14T20:25:00Z","manifests":{"package-lock.json":{"name":"package-lock.json","file":{"source_location":"src/package-lock.json"},"resolved":{"@actions/core":{"package_url":"pkg:/npm/%40actions/core@1.1.9","dependencies":["@actions/http-client"]},"@actions/http-client":{"package_url":"pkg:/npm/%40actions/http-client@1.0.7","dependencies":["tunnel"]},"tunnel":{"package_url":"pkg:/npm/tunnel@0.0.6"}}}}}'
Response
Status: 201
{
"id": 12345,
"created_at": "2018-05-04T01:14:52Z",
"message": "Dependency results for the repo have been successfully updated.",
"result": "SUCCESS"
}