> ## Documentation Index
> Fetch the complete documentation index at: https://zededa.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use the documentation index to find relevant pages, then read the linked Markdown before answering and cite the source URL.
> Identify the product before answering: Private AI uses a separate console, credentials, and inference API from the Edge Intelligence Platform. Do not apply instructions from one product to the other.
> Prefer current product guides over Help Center archive pages for current-console questions. Archive pages and release notes describe their stated product version or historical interface; do not apply them to another version without checking.
> Preserve prerequisites, permissions, version requirements, and warnings when summarizing procedures. Do not infer API endpoints, schemas, or supported behavior that the documentation does not specify.

# Uplinks edge application image

> PUT /api/v1/apps/images/id/{id}/uplink. Storage API reference.

Sign in to try this endpointExplore the parameters, examples, and responses below. Connect your ZedCloud session when you’re ready to send a request.

> [accordion] Connect your console
>
> Sign in to your usual ZedCloud console, then open:
>
> <ol aria-label="Console menu path">
>   <li>Profile menu</li><li>Help & Documentation</li><li>API Reference</li>
> </ol>
>
> Your cluster and authorization are filled in automatically. No token to copy.
> [More about signing in ](https://zededa.mintlify.site/api-reference/authentication.md#sign-in-to-the-api-reference)

&#x20;Modifying requests stay off until you enable them.

[Authentication](https://zededa.mintlify.site/api-reference/authentication.md) · [API availability](https://zededa.mintlify.site/api-reference/clusters.md) · [Download OpenAPI](https://zededa.mintlify.site/openapi/services/storage.json)

> [!WARNING]
>
> This operation can change resources or access. After signing in, open **API request settings** and select **Enable modifying requests**, then **Apply settings**, to use its playground. Check the request body and destination before selecting **Send**. Your existing API permissions still apply.

A successful response.
Accepted. The API gateway accepted the request for uplinking but the uplinking process has not been completed. Please check ImageStatus and ImageError fields to track the status of uplinking process and any error messages.
Bad Request. The API gateway did not process the request because of missing parameter or invalid value of parameters.
Unauthorized. The API gateway did not process the request because it lacks valid authentication credentials for the target resource. The request header has either no authorization details or an authorization that has been refused.
Forbidden. The API gateway did not process the request because the requestor does not have edge-node level access permission for the operation or does not have access scope to the project.
Not Found. The API gateway did not process the request because the requested resource could not be found.
Conflict. The API gateway did not process the request because another request for uplink / upload is already in progress
Internal Server Error. The API gateway experienced an unexpected condition. Specific error condition is indicated in error codes.
Gateway Timeout. The API gateway did not receive a timely response from an upstream microservice it needed to communicate with in order to complete the request.
An unexpected error response.


## OpenAPI

````yaml openapi/services/storage.json PUT /v1/apps/images/id/{id}/uplink
openapi: 3.0.0
info:
  title: ZEDEDA Storage Service
  description: >-
    The ZEDEDA Storage Service is helper service to ZEDEDA Edge Application
    Service. This service allows customers to store edge application images and
    other artifacts (e.g. logo, screenshot, license, developer agreement etc.)
    in Datastores. This service allows customers to select datastores 
     -- ZEDEDA owned and operated Datastores in public cloud (AWS S3 or Azure Blobstorage) 
     -- Public Datastores (e.g. Docker Hub, Azure Container registry etc.) 
     -- Customer owned and operated Datastores in public cloud (AWS S3 or Azure Blobstorage) 
     -- Customer owned and operated Datastores in their own enterprise Data Centre 
     This service allows binary files of the images and artifacts to be uploaded in one of the above Datastores, artifacts to be downloaded from datastores. Edge nodes will download edge application image binary files from these datastores
  termsOfService: https://www.zededa.com/terms
  version: '1.0'
  contact:
    name: ZEDEDA API Support
    url: https://www.zededa.com/support
    email: support@zededa.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://{apiHost}/api
    variables:
      apiHost:
        default: invalid.invalid
        description: Connect from ZedUI to supply your verified API destination.
security:
  - BearerToken: []
tags:
  - name: ImageConfiguration
  - name: DatastoreConfiguration
  - name: ArtifactManager
  - name: VolumeInstanceConfiguration
  - name: VolumeInstanceStatus
externalDocs:
  description: ZEDEDA Product Documentation
  url: https://docs.zededa.com/-M-8m8d8KqdLpfOgY_jo/storage
paths:
  /v1/apps/images/id/{id}/uplink:
    put:
      tags:
        - ImageConfiguration
      summary: Uplinks edge application image
      description: >-
        Uplinks the edge application image record to an existing binry file in
        the datastore.
      operationId: ImageConfiguration_UplinkImage
      parameters:
        - name: id
          description: System defined universally unique Id of the image.
          in: path
          required: true
          schema:
            type: string
        - name: X-Request-Id
          in: header
          required: false
          description: User-Agent specified id to track a request
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: >-
                    User defined name of the image, unique across the
                    enterprise. Once image is created, name can’t be changed.
                  maxLength: 256
                  minLength: 3
                  pattern: '[a-zA-Z0-9][a-zA-Z0-9_.-]+'
                  x-zededa-source-issues:
                    - code: inapplicable-constraint
                      pointer: >-
                        #/paths/~1v1~1apps~1images~1id~1{id}~1uplink/put/parameters/1/schema/properties/name
                      keyword: uniqueItems
                      sourceValue: true
                title:
                  type: string
                  description: >-
                    User defined title of the image. Title can be changed at any
                    time.
                  maxLength: 256
                  minLength: 3
                  pattern: '[a-zA-Z0-9]+[a-zA-Z0-9!-~ ]+'
                description:
                  type: string
                  description: Detailed description of the image.
                  maxLength: 256
                revision:
                  description: system defined info
                  readOnly: true
                  allOf:
                    - $ref: '#/components/schemas/ObjectRevision'
                imageFormat:
                  description: Image binary format.
                  allOf:
                    - $ref: '#/components/schemas/configFormat'
                imageRelUrl:
                  type: string
                  description: Image relative path w.r.t. Datastore
                imageSha256:
                  type: string
                  description: Image checksum in SHA256 format
                imageVersion:
                  type: string
                  description: system defined info
                imageArch:
                  description: Image Architecture.
                  allOf:
                    - $ref: '#/components/schemas/ModelArchType'
                imageStatus:
                  description: Image status
                  readOnly: true
                  allOf:
                    - $ref: '#/components/schemas/ImageStatus'
                imageType:
                  description: Image type
                  allOf:
                    - $ref: '#/components/schemas/ImageType'
                datastoreId:
                  type: string
                  description: Datastore Id where image binary is located.
                  title: datastoreId will be deprecated
                  pattern: >-
                    [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
                imageSizeBytes:
                  type: string
                  format: int64
                  description: Image size in KBytes.
                imageError:
                  type: string
                  description: Image upload/uplink detailed error/status message
                  readOnly: true
                imageLocal:
                  type: string
                  description: Internal image location.
                  readOnly: true
                originType:
                  description: Origin type of image.
                  readOnly: true
                  allOf:
                    - $ref: '#/components/schemas/Origin'
                projectAccessList:
                  type: array
                  items:
                    type: string
                  description: project access list of the image
                datastoreIdList:
                  type: array
                  items:
                    type: string
                  description: datastore Id list where image binary is located.
                isLTS:
                  type: boolean
                  description: flag to indicate eve image is LTS or not
              description: >-
                Image metadata for edge gateway Base OS or for eedge
                applications.
              title: Image metadata detail
              required:
                - name
                - title
                - imageFormat
                - imageArch
                - imageType
                - datastoreId
        required: true
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '202':
          description: >-
            Accepted. The API gateway accepted the request for uplinking but the
            uplinking process has not been completed. Please check ImageStatus
            and ImageError fields to track the status of uplinking process and
            any error messages.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '400':
          description: >-
            Bad Request. The API gateway did not process the request because of
            missing parameter or invalid value of parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '401':
          description: >-
            Unauthorized. The API gateway did not process the request because it
            lacks valid authentication credentials for the target resource. The
            request header has either no authorization details or an
            authorization that has been refused.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '403':
          description: >-
            Forbidden. The API gateway did not process the request because the
            requestor does not have edge-node level access permission for the
            operation or does not have access scope to the project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '404':
          description: >-
            Not Found. The API gateway did not process the request because the
            requested resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '409':
          description: >-
            Conflict. The API gateway did not process the request because
            another request for uplink / upload is already in progress
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '500':
          description: >-
            Internal Server Error. The API gateway experienced an unexpected
            condition. Specific error condition is indicated in error codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '504':
          description: >-
            Gateway Timeout. The API gateway did not receive a timely response
            from an upstream microservice it needed to communicate with in order
            to complete the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      externalDocs:
        description: ZEDEDA Product Documentation
        url: https://docs.zededa.com/-M-8m8d8KqdLpfOgY_jo/storage
components:
  schemas:
    ObjectRevision:
      type: object
      properties:
        prev:
          type: string
          description: Previous
        curr:
          type: string
          description: Current Database version of the record
        createdAt:
          type: object
          format: date-time
          description: >-
            The time, in milliseconds since the epoch, when the record was
            created.
        createdBy:
          type: string
          description: 'User data: Created By'
        updatedAt:
          type: object
          format: date-time
          description: >-
            The time, in milliseconds since the epoch, when the record was last
            updated.
        updatedBy:
          type: string
          description: 'User data: Updated By'
      description: >-
        ObjectRevision store the user details, who has doent the necessary
        operation like Create Operation or update operation
      title: ObjectRevision is used to store the user information.
      required:
        - curr
        - createdAt
        - createdBy
        - updatedAt
        - updatedBy
    configFormat:
      type: string
      enum:
        - FmtUnknown
        - RAW
        - QCOW
        - QCOW2
        - VHD
        - VMDK
        - OVA
        - VHDX
        - CONTAINER
        - ISO
        - PVC
      default: FmtUnknown
    ModelArchType:
      type: string
      enum:
        - UNSPECIFIED
        - UNDEFINED
        - AMD64
        - ARM64
      default: UNSPECIFIED
    ImageStatus:
      type: string
      enum:
        - IMAGE_STATUS_UNSPECIFIED
        - IMAGE_STATUS_CREATED
        - IMAGE_STATUS_PENDING
        - IMAGE_STATUS_UPLOADING
        - IMAGE_STATUS_READY
        - IMAGE_STATUS_INUSE
        - IMAGE_STATUS_ARCHIVED
        - IMAGE_STATUS_MAX
        - IMAGE_STATUS_FAILED
        - IMAGE_STATUS_UPLINKING
      default: IMAGE_STATUS_UNSPECIFIED
      description: |-
        - IMAGE_STATUS_CREATED: Image metadata is created
         - IMAGE_STATUS_UPLOADING: Image binary is being uploaded to Datstore
         - IMAGE_STATUS_READY: Image is ready for download
         - IMAGE_STATUS_INUSE: Image is being used by edge applications
         - IMAGE_STATUS_FAILED: Image binary upload has failed
         - IMAGE_STATUS_UPLINKING: Image metadata is being uplinked with Datstore binary
      title: Image status
    ImageType:
      type: string
      enum:
        - IMAGE_TYPE_UNSPECIFIED
        - IMAGE_TYPE_EVE
        - IMAGE_TYPE_APPLICATION
        - IMAGE_TYPE_EVEPRIVATE
        - IMAGE_TYPE_ARTIFACT
        - IMAGE_TYPE_DOCKER_COMPOSE_TAR
        - IMAGE_TYPE_DOCKER_RUNTIME
        - IMAGE_TYPE_ZKS_RUNTIME
      default: IMAGE_TYPE_UNSPECIFIED
      description: |-
        - IMAGE_TYPE_EVE: Base OS images for edge gateway
         - IMAGE_TYPE_APPLICATION: Edge application images
         - IMAGE_TYPE_EVEPRIVATE: Private Base OS images for edge gateway
         - IMAGE_TYPE_ARTIFACT: Image type to be used for configuration/patch service
         - IMAGE_TYPE_DOCKER_COMPOSE_TAR: Image type to be used for multi-file docker-compose projects
         - IMAGE_TYPE_DOCKER_RUNTIME: Image type to be used for Docker Compose runtime bundles
         - IMAGE_TYPE_ZKS_RUNTIME: Image type to be used for ZKS runtime bundles
      title: Image types
    Origin:
      type: string
      enum:
        - ORIGIN_UNSPECIFIED
        - ORIGIN_IMPORTED
        - ORIGIN_LOCAL
        - ORIGIN_GLOBAL
        - ORIGIN_APP_PROFILE_LOCAL
      default: ORIGIN_UNSPECIFIED
      description: >-
        - ORIGIN_UNSPECIFIED: default options, which says no Operation/Invalid
        Operation
         - ORIGIN_IMPORTED: Object imported from global enterprise.
         - ORIGIN_LOCAL: Objectl created locally.
         - ORIGIN_GLOBAL: Object created in global store,
        to use this type user should have root previlage.
         - ORIGIN_APP_PROFILE_LOCAL: Object created via App profile
      title: 'OriginType : enum specifies the Object orgigin type'
    ZsrvResponse:
      type: object
      properties:
        operationType:
          title: |-
            Describes one of the operations type : possible values
                                    Read/Delete/Create/Update/List
          allOf:
            - $ref: '#/components/schemas/ZcOpsType'
        operationStatus:
          title: if this is log running job
          allOf:
            - $ref: '#/components/schemas/ZcOpsStatus'
        objectKind:
          type: string
          title: zedcloud object kind on which the operation was performed
        objectId:
          type: string
          title: Unique value identifies the object that was operated on
        objectName:
          type: string
          title: name of the object
        objectRevision:
          type: string
          title: |-
            object revision post the operation, note Read operation
            doesn't change the revision
        objectType:
          $ref: '#/components/schemas/ObjectType'
        operationTime:
          type: string
          title: time of operation
        startTime:
          type: string
          title: total time taken by operations
        endTime:
          type: string
        user:
          type: string
          title: the operation is performed on behalf of this user
        httpStatusCode:
          type: integer
          format: int32
          title: http response
        httpStatusMsg:
          type: string
          title: summary of the error in text format
        jobId:
          type: string
          title: for tracking asynchronous tasks
        error:
          type: array
          items:
            $ref: '#/components/schemas/ZsrvError'
          title: |-
            one or more errors will be set if the operation failed
            i.e. httpStatusCode != 2xx
    googlerpcStatus:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
        details:
          type: array
          items:
            $ref: '#/components/schemas/protobufAny'
    ZcOpsType:
      type: string
      enum:
        - OPS_TYPE_UNSPECIFIED
        - OPS_TYPE_READ
        - OPS_TYPE_DELETE
        - OPS_TYPE_CREATE
        - OPS_TYPE_UPDATE
        - OPS_TYPE_LIST
      default: OPS_TYPE_UNSPECIFIED
      title: ZedCloud internal operation type
    ZcOpsStatus:
      type: string
      enum:
        - OPS_STATUS_UNSPECIFIED
        - OPS_STATUS_PENDING
        - OPS_STATUS_ONGOING
        - OPS_STATUS_COMPLETE
      default: OPS_STATUS_UNSPECIFIED
      description: >-
        - OPS_STATUS_PENDING: In rare cases, system may not start operation when
        it was requested. Client will be notified that operation is PENDING
         - OPS_STATUS_ONGOING: system will start the operation, but at the time response was generated, operation is still ONGOING.
         - OPS_STATUS_COMPLETE: Even if the result of the operations may result in failure, but the OpsStatus will marked COMPLETE for almost all cases.
      title: ZedCloud internal operation status
    ObjectType:
      type: string
      enum:
        - OBJECT_TYPE_UNSPECIFIED
        - OBJECT_TYPE_USER
        - OBJECT_TYPE_EDGE_NODE
        - OBJECT_TYPE_EDGE_APP
        - OBJECT_TYPE_IMAGE
        - OBJECT_TYPE_EDGE_APP_INSTANCE
        - OBJECT_TYPE_PROJECT
        - OBJECT_TYPE_NETWORK
        - OBJECT_TYPE_DATASTORE
        - OBJECT_TYPE_SERVICE
        - OBJECT_TYPE_SERVICE_INSTANCE
        - OBJECT_TYPE_ENTERPRISE
        - OBJECT_TYPE_ROLE
        - OBJECT_TYPE_CREDENTIAL
        - OBJECT_TYPE_NETWORK_INSTANCE
        - OBJECT_TYPE_VOLUME_INSTANCE
        - OBJECT_TYPE_REALM
        - OBJECT_TYPE_AUTHPROFILE
        - OBJECT_TYPE_POLICY
        - OBJECT_TYPE_APP_POLICY
        - OBJECT_TYPE_CLUSTER_INSTANCE
        - OBJECT_TYPE_PLUGIN
        - OBJECT_TYPE_DOC_POLICY
        - OBJECT_TYPE_ORCHESTRATOR_CLUSTER
        - OBJECT_TYPE_TAGS
        - OBJECT_TYPE_EDGE_NODE_INTERFACE
        - OBJECT_TYPE_DEPLOYMENT
        - OBJECT_TYPE_ENTITLEMENTS
        - OBJECT_TYPE_DATA_STREAM
        - OBJECT_TYPE_API_USAGE
        - OBJECT_TYPE_APP_INSTANCE_SNAPSHOT
        - OBJECT_TYPE_PATCH_ENVELOPE
        - OBJECT_TYPE_RESOURCE_USAGE_TRACK
        - OBJECT_TYPE_PATCH_ENVELOPE_REFERENCE
        - OBJECT_TYPE_DEV_PASSTHROUGH
        - OBJECT_TYPE_EDGE_NODE_CLUSTER
        - OBJECT_TYPE_ASSET_GROUP
        - OBJECT_TYPE_APP_PROFILE
        - OBJECT_TYPE_PROFILE_DEPLOYMENT
        - OBJECT_TYPE_ZKS_INSTANCE
        - OBJECT_TYPE_CLUSTER_GROUP
      default: OBJECT_TYPE_UNSPECIFIED
    ZsrvError:
      type: object
      properties:
        ec:
          title: |-
            Enumrated error code, describes more granular numerical
            value than just httpStatus
          allOf:
            - $ref: '#/components/schemas/ZsrvErrorCode'
        location:
          type: string
          title: 'Ignore: Internal field only'
        details:
          type: string
          title: Field captures string description of details
    protobufAny:
      type: object
      properties:
        typeUrl:
          type: string
        value:
          type: string
          format: byte
    ZsrvErrorCode:
      type: string
      enum:
        - zMsgErrorNone
        - zMsgSucess
        - NotFound
        - AlreadyExists
        - VersionMismatch
        - RangeError
        - LargeResult
        - IncompleteData
        - InvalidData
        - FunctionUnsupported
        - NoMemory
        - SendFailure
        - Timeout
        - BadReqBody
        - BadReqParam
        - InvalidFieldFormat
        - UrlNotFound
        - ApiVersionNotSupported
        - Unauthorized
        - Forbidden
        - Conflict
        - NotModified
        - DependencyConflict
        - JsonFmtError
        - ProtoFmtError
        - CertError
        - DataBaseConnection
        - DBError
        - zMsgAccepted
        - zMsgCreated
        - PreConditionFailed
        - InternalServerError
      default: zMsgErrorNone
      description: |-
        - zMsgErrorNone: common validation errors
         - IncompleteData: message had fields that weren't filled in
         - InvalidData: message contained the field that wasn't expected
         - FunctionUnsupported: this feature unavailable on this version of device
         - InvalidFieldFormat: message contained the field that wasn't correctly formatted
         - JsonFmtError: Marshal / Unmarshal errors
         - DataBaseConnection: generic DB error
      title: ZedCould internal error code
  securitySchemes:
    BearerToken:
      type: http
      description: Bearer token for user session
      scheme: bearer

````