Skip to content

Commit be881db

Browse files
committed
added getDeploymentTemplate spec
1 parent 082670c commit be881db

File tree

2 files changed

+548
-1
lines changed

2 files changed

+548
-1
lines changed

specs/helm/app-store.yaml

Lines changed: 314 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,180 @@ paths:
258258
schema:
259259
$ref: '#/components/schemas/ErrorResponse'
260260

261+
/orchestrator/app-store/deployment/application/version/{installedAppVersionId}:
262+
get:
263+
tags:
264+
- App Store Deployment
265+
summary: Get installed app version details
266+
description: |
267+
Retrieves detailed information about a specific installed app version.
268+
This endpoint returns the complete configuration, values, and metadata
269+
for a deployed app store application version.
270+
271+
**Authentication & Authorization**:
272+
- Requires valid user session
273+
- User must have GET permission on the Helm app resource
274+
- RBAC enforced based on cluster, namespace, and app name
275+
276+
**Use Cases**:
277+
- View current deployment configuration
278+
- Retrieve values.yaml for an installed app
279+
- Get chart version and metadata
280+
- Access deployment history reference
281+
operationId: getInstalledAppVersion
282+
parameters:
283+
- name: installedAppVersionId
284+
in: path
285+
required: true
286+
description: |
287+
The ID of the installed app version to retrieve.
288+
This is the unique identifier for a specific version of a deployed app.
289+
schema:
290+
type: integer
291+
minimum: 1
292+
example: 2
293+
responses:
294+
'200':
295+
description: Installed app version details retrieved successfully
296+
content:
297+
application/json:
298+
schema:
299+
type: object
300+
properties:
301+
code:
302+
type: integer
303+
description: HTTP status code
304+
example: 200
305+
status:
306+
type: string
307+
description: Response status
308+
example: "OK"
309+
result:
310+
$ref: '#/components/schemas/InstallAppVersionDTO'
311+
examples:
312+
successful_response:
313+
summary: Successful retrieval of installed app version
314+
value:
315+
code: 200
316+
status: "OK"
317+
result:
318+
id: 2
319+
appId: 12
320+
appName: "my-app"
321+
teamId: 1
322+
teamName: "devtron-demo"
323+
environmentId: 1
324+
installedAppId: 5
325+
installedAppVersionId: 2
326+
appStoreVersion: 45
327+
valuesOverrideYaml: |
328+
replicaCount: 2
329+
image:
330+
tag: "v1.0.0"
331+
readme: "# Application README\n\nThis is the application documentation."
332+
referenceValueId: 1
333+
referenceValueKind: "DEFAULT"
334+
appStoreId: 10
335+
appStoreName: "nginx"
336+
deprecated: false
337+
clusterId: 1
338+
namespace: "default"
339+
appOfferingMode: "FULL"
340+
gitOpsPath: "my-app-default"
341+
deploymentAppType: "HELM"
342+
helmPackageName: "nginx-1.0.0"
343+
'400':
344+
description: Bad Request - Invalid installedAppVersionId parameter
345+
content:
346+
application/json:
347+
schema:
348+
$ref: '#/components/schemas/ErrorResponse'
349+
examples:
350+
invalid_parameter:
351+
summary: Invalid installedAppVersionId
352+
value:
353+
code: 400
354+
status: "Bad Request"
355+
errors:
356+
- code: "11001"
357+
userMessage: "Invalid path parameter 'installedAppVersionId': must be a valid positive integer"
358+
internalMessage: "strconv.Atoi: parsing \"abc\": invalid syntax"
359+
outdated_values:
360+
summary: Outdated values error
361+
value:
362+
code: 400
363+
status: "Bad Request"
364+
errors:
365+
- code: "400"
366+
userMessage: "values are outdated. please fetch the latest version and try again"
367+
internalMessage: "sql: no rows in result set"
368+
'401':
369+
description: Unauthorized - Missing or invalid authentication
370+
content:
371+
application/json:
372+
schema:
373+
$ref: '#/components/schemas/ErrorResponse'
374+
examples:
375+
unauthorized:
376+
summary: User not authenticated
377+
value:
378+
code: 401
379+
status: "Unauthorized"
380+
errors:
381+
- code: "11010"
382+
userMessage: "Authentication required. Please log in to continue."
383+
internalMessage: "unauthorized"
384+
'403':
385+
description: Forbidden - Insufficient permissions
386+
content:
387+
application/json:
388+
schema:
389+
$ref: '#/components/schemas/ErrorResponse'
390+
examples:
391+
forbidden:
392+
summary: User lacks permissions
393+
value:
394+
code: 403
395+
status: "Forbidden"
396+
errors:
397+
- code: "11008"
398+
userMessage: "Access denied. You do not have permission to view this installed app version."
399+
internalMessage: "unauthorized user"
400+
'404':
401+
description: Not Found - Installed app version does not exist
402+
content:
403+
application/json:
404+
schema:
405+
$ref: '#/components/schemas/ErrorResponse'
406+
examples:
407+
not_found:
408+
summary: Installed app version not found
409+
value:
410+
code: 404
411+
status: "Not Found"
412+
errors:
413+
- code: "11006"
414+
userMessage: "Installed app version with ID '2' not found"
415+
internalMessage: "sql: no rows in result set"
416+
'500':
417+
description: Internal Server Error
418+
content:
419+
application/json:
420+
schema:
421+
$ref: '#/components/schemas/ErrorResponse'
422+
examples:
423+
internal_error:
424+
summary: Unexpected server error
425+
value:
426+
code: 500
427+
status: "Internal Server Error"
428+
errors:
429+
- code: "11009"
430+
userMessage: "An unexpected error occurred while retrieving the installed app version"
431+
internalMessage: "database connection failed"
432+
security:
433+
- bearerAuth: []
434+
261435
components:
262436
schemas:
263437
AppStoreApplication:
@@ -401,6 +575,136 @@ components:
401575
$ref: '#/components/schemas/AppStoreApplication'
402576
description: List of app store applications
403577

578+
InstallAppVersionDTO:
579+
type: object
580+
description: |
581+
Complete details of an installed app version including configuration,
582+
values, and deployment metadata.
583+
properties:
584+
id:
585+
type: integer
586+
description: Installed app version ID (same as installedAppVersionId)
587+
example: 2
588+
appId:
589+
type: integer
590+
description: Application ID
591+
example: 12
592+
appName:
593+
type: string
594+
description: Application name (can be display name for external apps)
595+
example: "my-app"
596+
teamId:
597+
type: integer
598+
description: Team/Project ID
599+
example: 1
600+
teamName:
601+
type: string
602+
description: Team/Project name
603+
example: "devtron-demo"
604+
environmentId:
605+
type: integer
606+
description: Environment ID where the app is deployed
607+
example: 1
608+
installedAppId:
609+
type: integer
610+
description: Installed app ID
611+
example: 5
612+
installedAppVersionId:
613+
type: integer
614+
description: Installed app version ID
615+
example: 2
616+
installedAppVersionHistoryId:
617+
type: integer
618+
description: Installed app version history ID (for rollback reference)
619+
example: 10
620+
appStoreVersion:
621+
type: integer
622+
description: App store application version ID (chart version reference)
623+
example: 45
624+
valuesOverrideYaml:
625+
type: string
626+
description: YAML string containing custom values that override chart defaults
627+
example: |
628+
replicaCount: 2
629+
image:
630+
tag: "v1.0.0"
631+
service:
632+
type: ClusterIP
633+
readme:
634+
type: string
635+
description: README documentation for the chart
636+
example: "# Application README\n\nThis is the application documentation."
637+
referenceValueId:
638+
type: integer
639+
description: Reference value ID (points to template or deployed values)
640+
example: 1
641+
referenceValueKind:
642+
type: string
643+
description: Kind of reference value
644+
enum: ["DEFAULT", "TEMPLATE", "DEPLOYED", "EXISTING"]
645+
example: "DEFAULT"
646+
appStoreId:
647+
type: integer
648+
description: App store application ID
649+
example: 10
650+
appStoreName:
651+
type: string
652+
description: App store application name (chart name)
653+
example: "nginx"
654+
deprecated:
655+
type: boolean
656+
description: Whether this chart version is deprecated
657+
example: false
658+
clusterId:
659+
type: integer
660+
description: Cluster ID where the app is deployed
661+
example: 1
662+
namespace:
663+
type: string
664+
description: Kubernetes namespace where the app is deployed
665+
example: "default"
666+
appOfferingMode:
667+
type: string
668+
description: App offering mode (FULL, EA_ONLY, etc.)
669+
example: "FULL"
670+
gitOpsPath:
671+
type: string
672+
description: GitOps repository path for this deployment
673+
example: "my-app-default"
674+
gitHash:
675+
type: string
676+
description: Git commit hash of the deployed version
677+
example: "abc123def456"
678+
deploymentAppType:
679+
type: string
680+
description: Deployment application type (HELM, GITOPS, etc.)
681+
example: "HELM"
682+
acdPartialDelete:
683+
type: boolean
684+
description: Whether ArgoCD partial delete is enabled
685+
example: false
686+
updatedOn:
687+
type: string
688+
format: date-time
689+
description: Last update timestamp
690+
example: "2024-01-15T10:30:00Z"
691+
isVirtualEnvironment:
692+
type: boolean
693+
description: Whether this is a virtual environment
694+
example: false
695+
helmPackageName:
696+
type: string
697+
description: Helm package name
698+
example: "nginx-1.0.0"
699+
gitRepoURL:
700+
type: string
701+
description: GitOps repository URL
702+
example: "https://github.com/org/gitops-repo"
703+
appStoreApplicationVersionId:
704+
type: integer
705+
description: App store application version ID
706+
example: 45
707+
404708
ErrorResponse:
405709
required:
406710
- code
@@ -433,4 +737,13 @@ components:
433737
description: Error internal message
434738
userMessage:
435739
type: string
436-
description: Error user message
740+
description: Error user message
741+
742+
securitySchemes:
743+
bearerAuth:
744+
type: http
745+
scheme: bearer
746+
bearerFormat: JWT
747+
description: |
748+
JWT token-based authentication. Include the token in the Authorization header
749+
as: `Authorization: Bearer <token>`

0 commit comments

Comments
 (0)