keel/docs/swagger.yaml

1185 lines
28 KiB
YAML

basePath: /
definitions:
http.APIResponse:
properties:
status:
type: string
type: object
http.UserInfo:
properties:
avatar:
type: string
id:
type: string
last_login_ip:
type: string
last_login_time:
type: integer
name:
type: string
role_id:
type: string
status:
type: integer
username:
type: string
type: object
http.approveRequest:
properties:
action:
description: defaults to approve
type: string
id:
type: string
identifier:
type: string
voter:
type: string
type: object
http.auditLogsResponse:
properties:
data:
items:
$ref: '#/definitions/types.AuditLog'
type: array
limit:
type: integer
offset:
type: integer
total:
type: integer
type: object
http.azureWebhook:
properties:
request:
properties:
host:
type: string
type: object
target:
properties:
digest:
type: string
repository:
type: string
tag:
type: string
type: object
type: object
http.dockerHubWebhook:
properties:
callback_url:
type: string
push_data:
properties:
images:
items: {}
type: array
pushed_at:
type: integer
pusher:
type: string
tag:
type: string
type: object
repository:
properties:
comment_count:
type: integer
date_created:
type: integer
description:
type: string
dockerfile:
type: string
full_description:
type: string
is_official:
type: boolean
is_private:
type: boolean
is_trusted:
type: boolean
name:
type: string
namespace:
type: string
owner:
type: string
repo_name:
type: string
repo_url:
type: string
star_count:
type: integer
status:
type: string
type: object
type: object
http.harborWebhook:
properties:
event_data:
properties:
repository:
properties:
date_created:
type: integer
name:
type: string
namespace:
type: string
repo_full_name:
type: string
repo_type:
type: string
type: object
resources:
items:
properties:
digest:
type: string
resource_url:
type: string
tag:
type: string
type: object
type: array
type: object
occur_at:
type: integer
operator:
type: string
type:
type: string
type: object
http.jfrogWebhook:
properties:
data:
properties:
image_name:
type: string
name:
type: string
path:
type: string
platforms:
items:
properties:
architecture:
type: string
os:
type: string
type: object
type: array
repo_key:
type: string
sha256:
type: string
size:
type: integer
tag:
type: string
type: object
domain:
type: string
event_type:
type: string
jpd_origin:
type: string
source:
type: string
subscription_key:
type: string
type: object
http.loginRequest:
properties:
password:
type: string
username:
type: string
type: object
http.loginResponse:
properties:
token:
type: string
type: object
http.quayWebhook:
properties:
docker_url:
type: string
homepage:
type: string
name:
type: string
namespace:
type: string
repository:
type: string
updated_tags:
items:
type: string
type: array
type: object
http.registryNotification:
properties:
events:
items:
properties:
action:
type: string
actor:
properties:
name:
type: string
type: object
id:
type: string
request:
properties:
addr:
type: string
host:
type: string
id:
type: string
method:
type: string
useragent:
type: string
type: object
source:
properties:
addr:
type: string
instanceID:
type: string
type: object
target:
properties:
digest:
type: string
length:
type: integer
mediaType:
type: string
repository:
type: string
size:
type: integer
tag:
type: string
url:
type: string
type: object
timestamp:
type: string
type: object
type: array
type: object
http.resource:
properties:
annotations:
additionalProperties:
type: string
type: object
identifier:
type: string
images:
items:
type: string
type: array
kind:
type: string
labels:
additionalProperties:
type: string
type: object
name:
type: string
namespace:
type: string
policy:
type: string
provider:
type: string
status:
$ref: '#/definitions/k8s.Status'
type: object
http.resourceApprovalsUpdateRequest:
properties:
identifier:
type: string
provider:
type: string
votesRequired:
type: integer
type: object
http.resourcePolicyUpdateRequest:
properties:
identifier:
type: string
policy:
type: string
provider:
type: string
type: object
http.trackRequest:
properties:
identifier:
type: string
provider:
type: string
schedule:
type: string
trigger:
type: string
type: object
http.trackedImage:
properties:
image:
type: string
namespace:
type: string
policy:
type: string
pollSchedule:
type: string
provider:
type: string
registry:
type: string
trigger:
type: string
type: object
k8s.Status:
properties:
availableReplicas:
description: |-
Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.
+optional
type: integer
readyReplicas:
description: |-
Total number of ready pods targeted by this deployment.
+optional
type: integer
replicas:
description: |-
Total number of non-terminated pods targeted by this deployment (their labels match the selector).
+optional
type: integer
unavailableReplica:
description: |-
Total number of unavailable pods targeted by this deployment. This is the total number of
pods that are still required for the deployment to have 100% available capacity. They may
either be pods that are running but not yet available or pods that still have not been created.
+optional
type: integer
updatedReplicas:
description: |-
Total number of non-terminated pods targeted by this deployment that have the desired template spec.
+optional
type: integer
type: object
types.Approval:
properties:
archived:
description: Archived is set to true once approval is finally approved/rejected
type: boolean
createdAt:
description: When this approval was created
type: string
currentVersion:
type: string
deadline:
description: Deadline for this request
type: string
digest:
description: |-
Digest is used to verify that images are the ones that got the approvals.
If digest doesn't match for the image, votes are reset.
type: string
event:
allOf:
- $ref: '#/definitions/types.Event'
description: Event that triggered evaluation
id:
type: string
identifier:
description: |-
Identifier is used to inform user about specific
Helm release or k8s deployment
ie: k8s <namespace>/<deployment name>
helm: <namespace>/<release name>
type: string
message:
type: string
newVersion:
type: string
provider:
allOf:
- $ref: '#/definitions/types.ProviderType'
description: Provider name - Kubernetes/Helm
rejected:
description: |-
Explicitly rejected approval
can be set directly by user
so even if deadline is not reached approval
could be turned down
type: boolean
updatedAt:
description: WHen this approval was updated
type: string
voters:
allOf:
- $ref: '#/definitions/types.JSONB'
description: |-
Voters is a list of voter
IDs for audit
votesReceived:
type: integer
votesRequired:
description: |-
Requirements for the update such as number of votes
and deadline
type: integer
type: object
types.AuditLog:
properties:
accountId:
type: string
action:
description: create/delete/update
type: string
createdAt:
type: string
email:
type: string
id:
type: string
identifier:
type: string
message:
type: string
metadata:
$ref: '#/definitions/types.JSONB'
payload:
description: can be used for bigger messages such as webhook payload
type: string
payloadType:
type: string
resourceKind:
description: approval/deployment/daemonset/statefulset/etc...
type: string
updatedAt:
type: string
username:
type: string
type: object
types.Event:
properties:
createdAt:
type: string
repository:
$ref: '#/definitions/types.Repository'
triggerName:
description: optional field to identify trigger
type: string
type: object
types.JSONB:
additionalProperties: true
type: object
types.ProviderType:
enum:
- 0
- 1
- 2
type: integer
x-enum-varnames:
- ProviderTypeUnknown
- ProviderTypeKubernetes
- ProviderTypeHelm
types.Repository:
properties:
digest:
description: optional digest field
type: string
host:
type: string
name:
type: string
tag:
type: string
type: object
types.VersionInfo:
properties:
apiVersion:
type: string
arch:
type: string
buildDate:
type: string
experimental:
type: boolean
goVersion:
type: string
kernelVersion:
type: string
name:
type: string
os:
type: string
revision:
type: string
version:
type: string
type: object
host: localhost:9300
info:
contact:
email: support@keel.sh
name: Keel Support
url: https://keel.sh
description: Automated Kubernetes deployment updates. Keel is a tool for automating
Kubernetes deployment updates.
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
termsOfService: https://keel.sh/terms/
title: Keel API
version: "1.0"
paths:
/healthz:
get:
description: Returns 200 OK if the service is healthy
produces:
- text/plain
responses:
"200":
description: OK
schema:
type: string
summary: Health check endpoint
tags:
- health
/v1/approvals:
get:
description: Returns a list of all approvals (both active and archived)
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/types.Approval'
type: array
"500":
description: Internal server error
schema:
type: string
security:
- ApiKeyAuth: []
summary: List approvals
tags:
- approvals
post:
consumes:
- application/json
description: Performs an action on an approval (approve, reject, delete, or
archive)
parameters:
- description: Approval action request
in: body
name: request
required: true
schema:
$ref: '#/definitions/http.approveRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/types.Approval'
"400":
description: Bad request
schema:
type: string
"404":
description: Approval not found
schema:
type: string
"500":
description: Internal server error
schema:
type: string
security:
- ApiKeyAuth: []
summary: Approve, reject, delete, or archive an approval
tags:
- approvals
put:
consumes:
- application/json
description: Sets or removes approval requirements for a resource
parameters:
- description: Approval update request
in: body
name: request
required: true
schema:
$ref: '#/definitions/http.resourceApprovalsUpdateRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/http.APIResponse'
"400":
description: Bad request
schema:
type: string
"404":
description: Resource not found
schema:
type: string
security:
- ApiKeyAuth: []
summary: Update approval requirements
tags:
- approvals
/v1/audit:
get:
description: Returns paginated audit logs with optional filtering
parameters:
- description: Maximum number of results
in: query
name: limit
type: integer
- description: Offset for pagination
in: query
name: offset
type: integer
- description: Comma-separated list of resource kinds to filter
in: query
name: filter
type: string
- description: Filter by email
in: query
name: email
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/http.auditLogsResponse'
"500":
description: Internal server error
schema:
type: string
security:
- ApiKeyAuth: []
summary: Get audit logs
tags:
- audit
/v1/auth/info:
get:
description: Returns information about the currently authenticated user
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/http.UserInfo'
"401":
description: Unauthorized
schema:
type: string
security:
- ApiKeyAuth: []
summary: Get current user info
tags:
- auth
/v1/auth/login:
post:
consumes:
- application/json
description: Authenticates a user with username and password
parameters:
- description: Login credentials
in: body
name: credentials
required: true
schema:
$ref: '#/definitions/http.loginRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/http.loginResponse'
"400":
description: Bad request
schema:
type: string
"401":
description: Username or password incorrect
schema:
type: string
summary: Login user
tags:
- auth
/v1/auth/logout:
get:
description: Logs out the currently authenticated user
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"401":
description: Unauthorized
schema:
type: string
security:
- ApiKeyAuth: []
summary: Logout user
tags:
- auth
post:
description: Logs out the currently authenticated user
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"401":
description: Unauthorized
schema:
type: string
security:
- ApiKeyAuth: []
summary: Logout user
tags:
- auth
/v1/auth/refresh:
get:
description: Generates a new authentication token for the current user
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/http.loginResponse'
"401":
description: Unauthorized
schema:
type: string
"500":
description: Internal server error
schema:
type: string
security:
- ApiKeyAuth: []
summary: Refresh authentication token
tags:
- auth
/v1/auth/user:
get:
description: Returns information about the currently authenticated user
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/http.UserInfo'
"401":
description: Unauthorized
schema:
type: string
security:
- ApiKeyAuth: []
summary: Get current user info
tags:
- auth
/v1/policies:
put:
consumes:
- application/json
description: Updates the Keel policy for a specific resource
parameters:
- description: Policy update request
in: body
name: request
required: true
schema:
$ref: '#/definitions/http.resourcePolicyUpdateRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/http.APIResponse'
"400":
description: Bad request
schema:
type: string
"404":
description: Resource not found
schema:
type: string
security:
- ApiKeyAuth: []
summary: Update resource policy
tags:
- policies
/v1/resources:
get:
description: Returns a list of all tracked Kubernetes resources with their policies
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/http.resource'
type: array
"500":
description: Internal server error
schema:
type: string
security:
- ApiKeyAuth: []
summary: List resources
tags:
- resources
/v1/stats:
get:
description: Returns aggregated statistics about webhooks, approvals, and updates
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"500":
description: Internal server error
schema:
type: string
security:
- ApiKeyAuth: []
summary: Get statistics
tags:
- stats
/v1/tracked:
get:
description: Returns a list of all tracked container images with their triggers
and policies
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/http.trackedImage'
type: array
"500":
description: Internal server error
schema:
type: string
security:
- ApiKeyAuth: []
summary: List tracked images
tags:
- tracked
put:
consumes:
- application/json
description: Updates the trigger type and poll schedule for a tracked resource
parameters:
- description: Track settings request
in: body
name: request
required: true
schema:
$ref: '#/definitions/http.trackRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/http.APIResponse'
"400":
description: Bad request
schema:
type: string
"404":
description: Resource not found
schema:
type: string
security:
- ApiKeyAuth: []
summary: Update tracking settings
tags:
- tracked
/v1/webhooks/azure:
post:
consumes:
- application/json
description: Receives and processes Azure Container Registry webhook notifications
for image push events
parameters:
- description: Azure webhook payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/http.azureWebhook'
produces:
- text/plain
responses:
"200":
description: OK
schema:
type: string
"400":
description: Bad request
schema:
type: string
summary: Trigger Azure Container Registry webhook
tags:
- webhooks
/v1/webhooks/dockerhub:
post:
consumes:
- application/json
description: Receives and processes DockerHub webhook notifications for image
push events
parameters:
- description: DockerHub webhook payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/http.dockerHubWebhook'
produces:
- text/plain
responses:
"200":
description: OK
schema:
type: string
"400":
description: Bad request
schema:
type: string
summary: Trigger DockerHub webhook
tags:
- webhooks
/v1/webhooks/github:
post:
consumes:
- application/json
description: Receives and processes GitHub webhook notifications for container
registry events (both GitHub Packages and GitHub Container Registry)
parameters:
- description: GitHub event type (package or registry_package)
in: header
name: X-GitHub-Event
required: true
type: string
- description: GitHub webhook payload
in: body
name: payload
required: true
schema:
type: object
produces:
- text/plain
responses:
"200":
description: OK
schema:
type: string
"400":
description: Bad request
schema:
type: string
summary: Trigger GitHub webhook
tags:
- webhooks
/v1/webhooks/harbor:
post:
consumes:
- application/json
description: Receives and processes Harbor registry webhook notifications for
image push events
parameters:
- description: Harbor webhook payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/http.harborWebhook'
produces:
- text/plain
responses:
"200":
description: OK
schema:
type: string
"400":
description: Bad request
schema:
type: string
summary: Trigger Harbor webhook
tags:
- webhooks
/v1/webhooks/jfrog:
post:
consumes:
- application/json
description: Receives and processes JFrog Artifactory webhook notifications
for image push events
parameters:
- description: JFrog webhook payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/http.jfrogWebhook'
produces:
- text/plain
responses:
"200":
description: OK
schema:
type: string
"400":
description: Bad request
schema:
type: string
summary: Trigger JFrog webhook
tags:
- webhooks
/v1/webhooks/native:
post:
consumes:
- application/json
description: Triggers a deployment update event directly with repository and
tag information
parameters:
- description: Repository information with name and tag
in: body
name: payload
required: true
schema:
$ref: '#/definitions/types.Repository'
produces:
- text/plain
responses:
"200":
description: OK
schema:
type: string
"400":
description: Bad request
schema:
type: string
summary: Trigger native webhook
tags:
- webhooks
/v1/webhooks/quay:
post:
consumes:
- application/json
description: Receives and processes Quay.io webhook notifications for image
push events
parameters:
- description: Quay webhook payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/http.quayWebhook'
produces:
- text/plain
responses:
"200":
description: OK
schema:
type: string
"400":
description: Bad request
schema:
type: string
summary: Trigger Quay webhook
tags:
- webhooks
/v1/webhooks/registry:
post:
consumes:
- application/json
description: Receives and processes Docker Registry V2 notification webhooks
for image push events. Compatible with Docker Registry, GitLab Container Registry,
and Harbor.
parameters:
- description: Registry notification payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/http.registryNotification'
produces:
- text/plain
responses:
"200":
description: OK
schema:
type: string
"400":
description: Bad request
schema:
type: string
summary: Trigger Docker Registry notification webhook
tags:
- webhooks
/version:
get:
description: Returns the current version information of Keel
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/types.VersionInfo'
"500":
description: Internal server error
schema:
type: string
summary: Get Keel version
tags:
- health
swagger: "2.0"