- added /update/enroll endpoint and enrollment logic - migrated update client to v1 api endpoints and bearer auth - implemented remote status reporting in backend and scripts - updated requirements and project status
127 lines
3.6 KiB
YAML
127 lines
3.6 KiB
YAML
post:
|
|
summary: Upload release
|
|
x-auth-scopes: [upload_release]
|
|
parameters:
|
|
- name: project_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
type: object
|
|
required:
|
|
- version
|
|
- sha256
|
|
- artifact
|
|
properties:
|
|
version:
|
|
type: string
|
|
pattern: '^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$'
|
|
example: 1.2.3
|
|
sha256:
|
|
type: string
|
|
example: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
|
|
sig_url:
|
|
type: string
|
|
format: uri
|
|
description: Optional reference to a detached signature
|
|
signature:
|
|
type: string
|
|
format: binary
|
|
description: Detached signature file (optional alternative to sig_url)
|
|
key_id:
|
|
type: string
|
|
description: Public key identifier for signature verification
|
|
artifact:
|
|
type: string
|
|
format: binary
|
|
responses:
|
|
'201':
|
|
description: Created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '../schemas/upload-response.yaml'
|
|
examples:
|
|
created:
|
|
value:
|
|
version: 1.2.3
|
|
manifest_url: https://update.wlkns.org/v1/projects/demo/manifest
|
|
active: true
|
|
'400':
|
|
description: Bad Request
|
|
x-error-codes: [invalid_payload]
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '../schemas/error.yaml'
|
|
examples:
|
|
invalid_payload:
|
|
value:
|
|
code: invalid_payload
|
|
message: Missing required fields
|
|
'401':
|
|
description: Unauthorized
|
|
x-error-codes: [unauthorized]
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '../schemas/error.yaml'
|
|
examples:
|
|
unauthorized:
|
|
value:
|
|
code: unauthorized
|
|
message: Missing or invalid token
|
|
'409':
|
|
description: Conflict
|
|
x-error-codes: [version_exists]
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '../schemas/error.yaml'
|
|
examples:
|
|
version_exists:
|
|
value:
|
|
code: version_exists
|
|
message: Version already exists
|
|
'413':
|
|
description: Payload Too Large
|
|
x-error-codes: [payload_too_large]
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '../schemas/error.yaml'
|
|
examples:
|
|
payload_too_large:
|
|
value:
|
|
code: payload_too_large
|
|
message: Artifact exceeds size limit
|
|
'422':
|
|
description: Unprocessable Entity (invalid checksum/signature/version)
|
|
x-error-codes: [checksum_mismatch, signature_invalid, signature_missing, version_invalid]
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '../schemas/error.yaml'
|
|
examples:
|
|
checksum_mismatch:
|
|
value:
|
|
code: checksum_mismatch
|
|
message: SHA256 does not match artifact
|
|
'429':
|
|
description: Too Many Requests
|
|
x-error-codes: [rate_limited]
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '../schemas/error.yaml'
|
|
examples:
|
|
rate_limited:
|
|
value:
|
|
code: rate_limited
|
|
message: Too many requests
|