API Inventory
O API Inventory documenta suas APIs, descobrindo automaticamente endpoints. Saiba mais clicando aqui.
Serviços
Listar serviços
Lista todos os serviços da conta.
GET /v1/api-inventory/services
$ curl https://api.gocache.com.br/v1/api-inventory/services \
-H "GoCache-Token: meu_token"
Exemplo de sucesso
HTTP/1.1 200 OK
{
"status_code": 1,
"response": [
{
"created_at": "1788287223",
"baseUrls": [
"https://meudominio.com"
],
"id": "b4f54eff0629b483fe66f70bd8fc1830",
"endpointCount": 19,
"name": "Serviço de Exemplo",
"description": "Serviço criado para documentar uma API.",
"ignoredPaths": [
"/.well-known"
]
}
]
}
Baixar OpenAPI
O API Inventory documenta as APIs utilizando o padrão OpenAPI. É possível baixar o arquivo completo por este endpoint. Só é disponível a versão do arquivo em JSON.
GET /v1/api-inventory/services/{service_id}/download
$ curl https://api.gocache.com.br/v1/api-inventory/services/4d51b47d61b102fad553f0c4dfdc56d7/download \
-H "GoCache-Token: meu_token"
Exemplo de sucesso
HTTP/1.1 200 OK
{
"status_code": 1,
"result": {
"openapi": "3.2.0",
"info": {
"title": "Meu serviço",
"description": "",
"version": "0.0.1"
},
"servers": [
{
"url": "https://dominio.com"
}
],
"paths": {
"/": {
"get": {
"responses": {
"200": {
"description": "OK"
}
},
"x-autogenerated": true
}
}
},
"x-ignored-paths": []
}
}
Criar serviço
Cria um serviço para documentar uma API.
POST /v1/api-inventory/services
$ curl -X POST https://api.gocache.com.br/v1/api-inventory/services \
-H "GoCache-Token: meu_token" -H "Content-Type: application/json" \
-d '{"name": "Meu serviço", "description": "Documentando minha API",
"baseUrls": ["https://meudominio.com/api"], "ignoredPaths": ["/api/v1"] }'
Exemplo de sucesso
HTTP/1.1 200 OK
{
"status_code": 1,
"response": {
"baseUrls": [
"https://meudominio.com/api"
],
"id": "57e644909ba6dc8da609e0d4f1f14b72",
"endpointCount": 1,
"name": "Meu serviço",
"description": "Documentando minha API",
"ignoredPaths": [
"/api/v1"
]
}
}
Parâmetros
| Campo | Opcional | Tipo | Descrição |
|---|---|---|---|
| name | String | Nome do serviço | |
| description | ✓ | String | Descrição do serviço |
| baseUrls | String[] | Trecho inicial da URL que o serviço possui | |
| ignoredPaths | ✓ | String[] | Trecho inicial da URI que será ignorado neste serviço, útil para cenários específicos. Veja casos de uso clicando aqui |
Editar serviço
Edita um serviço existente. Todos os campos são opcionais, e apenas será atualizado as informações enviadas.
PATCH /v1/api-inventory/services/{service_id}
$ curl -X POST https://api.gocache.com.br/v1/api-inventory/services/57e644909ba6dc8da609e0d4f1f14b72 \
-H "GoCache-Token: meu_token" -H "Content-Type: application/json" \
-d '{"description": "Minha nova descrição"}'
Exemplo de sucesso
HTTP/1.1 200 OK
{
"status_code": 1,
"response": {
"baseUrls": [
"https://meudominio.com/api"
],
"id": "57e644909ba6dc8da609e0d4f1f14b72",
"endpointCount": 1,
"name": "Meu serviço",
"description": "Minha nova descrição",
"ignoredPaths": [
"/api/v1"
]
}
}
Parâmetros
| Campo | Opcional | Tipo | Descrição |
|---|---|---|---|
| name | ✓ | String | Nome do serviço |
| description | ✓ | String | Descrição do serviço |
| baseUrls | ✓ | String[] | Trecho inicial da URL que o serviço possui |
| ignoredPaths | ✓ | String[] | Trecho inicial da URI que será ignorado neste serviço, útil para cenários específicos. Veja casos de uso clicando aqui |
Excluir serviço
Deleta um serviço específico.
DELETE /v1/api-inventory/services/{service_id}
$ curl -X DELETE https://api.gocache.com.br/v1/api-inventory/services/57e644909ba6dc8da609e0d4f1f14b72 \
-H "GoCache-Token: meu_token"
Exemplo de sucesso
HTTP/1.1 200 OK
{
"status_code": 1,
"response": "57e644909ba6dc8da609e0d4f1f14b72"
}
Importar OpenAPI
No API Inventory, salvamos os serviços como arquivos OpenAPI. É possível criar e atualizar serviços importando seus próprios arquivos OpenAPI, facilitando a integração com a plataforma.
Criar serviços
Este endpoint permite a criação de diversos serviços, realizando o upload de diferentes arquivos OpenAPI. Cada arquivo enviado gera um novo serviço.
POST /v1/api-inventory/services/import
$ curl -X POST https://api.gocache.com.br/v1/api-inventory/services/import \
-H "GoCache-Token: meu_token" -F "myfile=@openapi.yaml" -F "otherfile=@second_openapi.json"
O upload de arquivos deve ser realizado utilizando o encoding
multipart/form-data.
Exemplo de sucesso
HTTP/1.1 202 Accepted
{
"status_code": 1,
"response": [
{
"taskId": "d867816a49264479c28b8924434acd85",
"status": "waiting"
},
{
"taskId": "d867816a49264479c28b8924434acd85",
"status": "waiting"
}
]
}
Processo assíncrono
O upload de arquivos OpenAPI para criação de serviços do API Inventory roda assincronamente. O resultado da chamada retorna a lista de arquivos que serão processados. O parâmetro taskId é igual para todos os arquivos importados na mesma chamada.
Listar estado da importação
Este endpoint retorna as informações de todos os arquivos OpenAPI enviados para importação e criação de serviços. Como a importação é assíncrona, recomendamos consultar este endpoint periodicamente (polling) para acompanhar o status da importação.
GET /v1/api-inventory/task/status/{task_id}
$ curl https://api.gocache.com.br/v1/api-inventory/task/status/d867816a49264479c28b8924434acd85 \
-H "GoCache-Token: meu_token"
Exemplo de sucesso
HTTP/1.1 200 OK
{
"status_code": 1,
"result": [
{
"error": "Failed to validate OpenAPI document: Error: Document does not pass validation, Reason: OpenAPI document is not valid according to the 3.2.0 specification, Validation Errors: [Reason: validation failed, FieldPath: $.paths['~1store~1order~1search'].query.invalidInfo], Line: 1499, Column: 27. \n",
"completed": true,
"name": "myfile",
"status": "error",
"file": "openapi.yaml"
},
{
"completed": true,
"id": "920e2431ffb89bf1f84e4b82384a9bbe",
"service": {
"baseUrls": [
"https://meudominio.com"
],
"id": "920e2431ffb89bf1f84e4b82384a9bbe",
"endpointCount": 4,
"name": "Serviço Teste",
"description": "",
"ignoredPaths": []
},
"name": "otherfile",
"status": "success",
"file": "second_openapi.json"
}
]
}
O processo de importação finaliza quando todos os arquivos retornam
"completed": true.
Atualizar serviço
Visando facilitar integrações, é possível editar um serviço específico realizando o upload de um arquivo OpenAPI. O endpoint usado para atualização é o mesmo da criação de serviços por importação, mas deve-se enviar a query string service_id, com o ID do serviço que deve ser atualizado.
Diferente da criação, a atualização permite apenas o upload de um arquivo por vez. Além disso, o processo roda sincronamente. A requisição pode demorar alguns segundos enquanto realizamos as validações da especificação OpenAPI, e também a fusão dos arquivos.
O processo de atualização não sobrescreve o arquivo antigo com o arquivo enviado. Para evitar que informações descobertas pelo API Inventory sejam perdidas com atualizações, realizamos uma fusão inteligente dos arquivos para garantir que informações descobertas pela GoCache não sejam perdidas. O retorno desse endpoint é um resumo do processo de fusão. Ao utilizar este endpoint, a versão antiga do serviço é salva em um backup para facilitar o rollback em caso de problemas.
POST /v1/api-inventory/services/import?service_id={service_id}
$ curl -X POST https://api.gocache.com.br/v1/api-inventory/services/import?service_id=920e2431ffb89bf1f84e4b82384a9bbe \
-H "GoCache-Token: meu_token" -F "file=@second_openapi_v2.json"
O upload do arquivo deve ser realizado utilizando o encoding
multipart/form-data.
Exemplo de sucesso
HTTP/1.1 200 OK
{
"status_code": 1,
"response": {
"preserved": [
{
"pointer": "/paths/~1meu-path",
"rule": "paths"
}
],
"id": "920e2431ffb89bf1f84e4b82384a9bbe",
"replaced": [
{
"pointer": "/info",
"reason": "no_discovery_domain"
}
],
"added": [
{
"pointer": "/paths/~1new-path",
"rule": "paths"
}
],
"refs": {
"truncated": false,
"restored": [],
"dangling": []
},
"conflicts": [],
"stats": {
"added": 1,
"preserved": 1,
"replaced": 1,
"conflicts": 0,
"refs_restored": 0
}
}
}
Rollback de atualização
Este endpoint permite voltar o serviço para a última versão antes de uma atualização através da importação de arquivo OpenAPI. Sempre que um serviço é atualizado através do upload de um arquivo, a versão antiga é salva em um backup.
POST /v1/api-inventory/services/{service_id}/rollback
$ curl -X POST https://api.gocache.com.br/v1/api-inventory/services/920e2431ffb89bf1f84e4b82384a9bbe/rollback \
-H "GoCache-Token: meu_token"
Exemplo de sucesso
HTTP/1.1 204 No Content
Rollback único
O rollback só está disponível para endpoints que realizaram uma atualização através de importação de arquivo. Após realizar o rollback, a versão antiga do arquivo pré-atualização é restaurada, e o backup excluído. Por isso, esse endpoint só pode ser chamado uma vez após cada atualização. Cada atualização sobrescreve o backup com a versão atual de produção.
Endpoints
Listar endpoints
Este endpoint serve para visualizar um resumo de todos os endpoints de um serviço.
GET /v1/api-inventory/services/{service_id}/endpoints
$ curl https://api.gocache.com.br/v1/api-inventory/services/b4f54eff0629b483fe66f70bd8fc1830/endpoints \
-H "GoCache-Token: meu_token"
Exemplo de sucesso
HTTP/1.1 200 OK
{
"status_code": 1,
"response": [
{
"path": "/",
"id": "R0VUOi8=",
"method": "GET",
"autogenerated": true,
"firewall_action": "accept",
"trust_level": 100
}
]
}
Criar endpoint
A criação de endpoints permite adicionar endpoints sem definir a estrutura de corpo e parâmetros de query string ou headers.
POST /v1/api-inventory/services/{service_id}/endpoints
$ curl -X POST https://api.gocache.com.br/v1/api-inventory/services/4d51b47d61b102fad553f0c4dfdc56d7/endpoints \
-H "GoCache-Token: meu_token" -H "Content-Type: application/json" \
-d '{"path": ["/users", "/users/{user_id}"], "method": ["GET", "POST", "QUERY"],
"firewall_action": "accept" }'
Exemplo de sucesso
HTTP/1.1 200 OK
{
"status_code": 1,
"response": {
"result": [
{
"path": "/users",
"id": "UVVFUlk6L3VzZXJz",
"method": "QUERY",
"serviceId": "4d51b47d61b102fad553f0c4dfdc56d7",
"firewall_action": "accept"
},
{
"path": "/users/{user_id}",
"id": "UVVFUlk6L3VzZXJzL3t1c2VyX2lkfQ==",
"method": "QUERY",
"serviceId": "4d51b47d61b102fad553f0c4dfdc56d7",
"firewall_action": "accept"
},
{
"path": "/users",
"id": "UE9TVDovdXNlcnM=",
"method": "POST",
"serviceId": "4d51b47d61b102fad553f0c4dfdc56d7",
"firewall_action": "accept"
},
{
"path": "/users/{user_id}",
"id": "UE9TVDovdXNlcnMve3VzZXJfaWR9",
"method": "POST",
"serviceId": "4d51b47d61b102fad553f0c4dfdc56d7",
"firewall_action": "accept"
},
{
"path": "/users",
"id": "R0VUOi91c2Vycw==",
"method": "GET",
"serviceId": "4d51b47d61b102fad553f0c4dfdc56d7",
"firewall_action": "accept"
},
{
"path": "/users/{user_id}",
"id": "R0VUOi91c2Vycy97dXNlcl9pZH0=",
"method": "GET",
"serviceId": "4d51b47d61b102fad553f0c4dfdc56d7",
"firewall_action": "accept"
}
],
"errors": []
}
}
Parâmetros
| Campo | Opcional | Tipo | Descrição |
|---|---|---|---|
| path | String[] | Lista de paths a serem criados | |
| method | String[] | Lista de métodos a serem criados para cada path enviado | |
| firewall_action | ✓ | String | Ação do API Firewall para os endpoints criados. Por padrão os endpoints são criados com a ação accept. Possíveis valores: accept, simulate e block |
Editar API Firewall
Este endpoint edita a ação do API Firewall para múltiplos endpoints.
PATCH /v1/api-inventory/services/{service_id}/endpoints
$ curl -X PATCH https://api.gocache.com.br/v1/api-inventory/services/4d51b47d61b102fad553f0c4dfdc56d7/endpoints \
-H "GoCache-Token: meu_token" -H "Content-Type: application/json" \
-d '{"endpoints": ["R0VUOi91c2Vycy97dXNlcl9pZH0=", "UE9TVDovdXNlcnMve3VzZXJfaWR9"], "firewall_action": "simulate" }'
Exemplo de sucesso
HTTP/1.1 200 OK
{
"status_code": 1,
"response": {
"result": [
{
"firewall_action": "simulate",
"id": "R0VUOi91c2Vycy97dXNlcl9pZH0="
},
{
"firewall_action": "simulate",
"id": "UE9TVDovdXNlcnMve3VzZXJfaWR9"
}
],
"errors": []
}
}
Parâmetros
| Campo | Opcional | Tipo | Descrição |
|---|---|---|---|
| endpoints | String[] | Lista de ID de endpoints que terão a ação do API Firewall atualizada. | |
| firewall_action | String | Ação do API Firewall que será atualizado em todos endpoints encaminhados. Possíveis valores: accept, simulate e block |
Editar parâmetros de endpoint
Este endpoint permite atualizar os parâmetros de um endpoint. Atualmente os parâmetros possíveis de serem editados são: requestBody, security e parameters. Apenas os campos enviados são atualizados, os não enviados são ignorados.
É possível deletar um campo definindo seu valor para null. Para o requestBody, apenas os content-types enviados dentro de content são atualizados. Se não for enviado um content-type, ele será ignorado na atualização.
Os campos devem seguir o padrão OpenAPI para serem considerados válidos.
PATCH /v1/api-inventory/services/{service_id}/endpoints/{endpoint_id}
$ curl -X PATCH https://api.gocache.com.br/v1/api-inventory/services/4d51b47d61b102fad553f0c4dfdc56d7/endpoints/UE9TVDovdXNlcnMve3VzZXJfaWR9 \
-H "GoCache-Token: meu_token" -H "Content-Type: application/json" \
-d '{"requestBody": {"content": {"application/json": {"schema": {}}}}}'
Exemplo de sucesso
HTTP/1.1 200 OK
{
"status_code": 1,
"response": {
"requestBody": {
"content": {
"application/json": {
"schema": {}
}
}
},
"parameters": [
{
"in": "path",
"name": "user_id",
"schema": {
"type": "string"
},
"required": true
}
]
}
}
Parâmetros
| Campo | Opcional | Tipo | Descrição |
|---|---|---|---|
| requestBody | ✓ | Object | Campo requestBody seguindo os padrões OpenAPI do endpoint |
| security | ✓ | Object | Campo security seguindo os padrões OpenAPI do endpoint |
| parameters | ✓ | Object | Campo parameters seguindo os padrões OpenAPI do endpoint |
Excluir endpoint
Deleta um endpoint específico.
DELETE /v1/api-inventory/services/{service_id}/endpoints/{endpoint_id}
$ curl -X DELETE https://api.gocache.com.br/v1/api-inventory/services/4d51b47d61b102fad553f0c4dfdc56d7/endpoints/UE9TVDovdXNlcnMve3VzZXJfaWR9 \
-H "GoCache-Token: meu_token"
Exemplo de sucesso
HTTP/1.1 200 OK
{
"status_code": 1,
"response": { "id": "UE9TVDovdXNlcnMve3VzZXJfaWR9" }
}