openapi: 3.0.0
info:
  description: >-
    Registry Service REST APIs to use with Flexnet Operations. Almost all of 
    these APIs will require you to pass the tenant-id using x-publisherid
    request  header.
  version: '1.0'
  title: Introduction to the Registry Service REST API
  contact:
    name: Flexera Software
    url: >-
      https://community.flexera.com/t5/FlexNet-Operations/ct-p/FlexNet-Operations
    email: support@flexerasoftware.com
  license:
    name: Commercial
    url: >-
      https://www.flexerasoftware.com/monetize/productDAOS/flexnet-operations.html
security:
  - FNO_Credentials:
      - read
      - write
tags:
  - name: Software Container Delivery Public APIs
    description: >-
      The Software Container Delivery REST API enables producers who distribute 
      containerized applications using the Revenera registry to manage their
      projects  directly, without using the Docker or Helm command-line
      interface (CLI). This  allows producers to incorporate relevant
      functionality into their own portal implementations.
  - name: auth-controller
    description: Auth Controller
paths:
  /api/v1/authenticate:
    get:
      tags:
        - auth-controller
      summary: Get JWT Token for a User
      description: >-
        When calling the Software Container Delivery REST API, a producer user
        must authenticate themselves, using the "/authenticate" endpoint. The
        FlexNet Operations producers pass their credentials to the
        "/authenticate" endpoint, which creates a JSON Web Token (JWT) that can
        be used to authorize access to any endpoint of the Software Container
        Delivery REST API. Credentials are a Base64-encoded combination of the
        producer's user name and password separated by a colon (:).
      operationId: authenticateUsingGET
      parameters:
        - name: Authorization
          in: header
          description: Authorization
          required: true
          schema:
            type: string
      responses:
        '200':
          description: All OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthServiceResponse'
        '400':
          description: Bad request format.
        '403':
          description: Authentication failed.
        '500':
          description: Internal server error.
      deprecated: false
  /api/v1/downloads:
    get:
      tags:
        - Software Container Delivery Public APIs
      summary: Get Download Logs
      description: >-
        Download a log showing a summary of the end-customers' download activity
        from all registry service instances.
      operationId: listDownloadLogsUsingGET
      parameters:
        - name: Authorization
          in: header
          description: Use Bearer token for authorization
          required: true
          schema:
            type: string
        - name: month
          in: query
          description: >-
            The calendar month for which data is requested. Format=mm, where mm
            is the two-digit month (01 - 12). If the month is the current month,
            then all data for that month up to the current time is returned. 
          required: false
          allowEmptyValue: false
          schema:
            type: integer
            format: int32
        - name: page
          in: query
          description: 'Retrieves a specific page. '
          required: true
          allowEmptyValue: false
          schema:
            type: integer
            format: int64
        - name: pageSize
          in: query
          description: 'Specifies how many data sets per page should be returned. '
          required: true
          allowEmptyValue: false
          schema:
            type: integer
            format: int64
        - name: year
          in: query
          description: >-
            The year of the calendar month for which data is requested.
            Format=yyyy.
          required: true
          allowEmptyValue: false
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: All OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadResponse'
        '400':
          description: Bad request format.
        '401':
          description: Unauthorized
        '403':
          description: Authentication failed.
        '500':
          description: Internal server error.
      deprecated: false
  /api/v1/event/{entity_name}/status:
    get:
      tags:
        - Software Container Delivery Public APIs
      summary: Get Processing Status of an Event
      description: >-
        Return the processing status of a specified entity. Currently, only
        entities of type USER are supported.
      operationId: getEventStatusUsingGET
      parameters:
        - name: Authorization
          in: header
          description: Use Bearer token for authorization
          required: true
          schema:
            type: string
        - name: entity_name
          in: path
          description: >-
            The name of the entity (user ID) for which to return the processing
            status.
          required: true
          schema:
            type: string
        - name: entity_type
          in: query
          description: >-
            The type of the entity (USER) for which to return the processing
            status.
          required: true
          allowEmptyValue: false
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
      deprecated: false
  /api/v1/projects:
    get:
      tags:
        - Software Container Delivery Public APIs
      summary: List Projects
      description: >-
        List the projects that are currently stored in the Revenera registry.
        The list of projects is sorted alphabetically by the project name (which
        is identical with the Download Package ID). The list is paged, where the
        number of data sets per page can be configured using the "pageSize"
        parameter. A specific page of results can be requested by setting the
        "page" parameter.
      operationId: listProjectsUsingGET
      parameters:
        - name: Authorization
          in: header
          description: Use Bearer token for authorization
          required: true
          schema:
            type: string
        - name: page
          in: query
          description: Retrieves a specific page.
          required: false
          allowEmptyValue: false
          schema:
            type: integer
            format: int64
            default: 1
        - name: pageSize
          in: query
          description: The number of data sets per page
          required: false
          allowEmptyValue: false
          schema:
            type: integer
            format: int64
            default: 10
      responses:
        '200':
          description: All OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponse'
        '400':
          description: Bad request format.
        '401':
          description: Unauthorized
        '500':
          description: Internal server error.
      deprecated: false
  /api/v1/projects/{project_name}:
    get:
      tags:
        - Software Container Delivery Public APIs
      summary: Get Projects, Repositories and Helm Charts
      description: >-
        This endpoint returns information about the project, repositories and
        helm charts associate with a specified project that is currently
        available to entitled end users. The name of the project must be passed
        in the {project_name} path parameter. 
      operationId: getProjectUsingGET
      parameters:
        - name: Authorization
          in: header
          description: Use Bearer token for authorization
          required: true
          schema:
            type: string
        - name: project_name
          in: path
          description: The project name
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadPackageResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Project not found
        '500':
          description: Internal server error
      deprecated: false
  /api/v1/projects/{project_name}/charts/{chart_name}:
    get:
      tags:
        - Software Container Delivery Public APIs
      summary: Get Chart Details
      description: Return detailed chart information.
      operationId: getChartDetailsUsingGET
      parameters:
        - name: Authorization
          in: header
          description: Use Bearer token for authorization
          required: true
          schema:
            type: string
        - name: chart_name
          in: path
          description: The chart name
          required: true
          schema:
            type: string
        - name: project_name
          in: path
          description: The project name
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChartDetailsResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
      deprecated: false
    delete:
      tags:
        - Software Container Delivery Public APIs
      summary: Delete Chart
      description: Delete a chart that is part of a project.
      operationId: deleteChartUsingDELETE
      parameters:
        - name: Authorization
          in: header
          description: Use Bearer token for authorization
          required: true
          schema:
            type: string
        - name: chart_name
          in: path
          description: The chart name
          required: true
          schema:
            type: string
        - name: project_name
          in: path
          description: The project name
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
      deprecated: false
  /api/v1/projects/{project_name}/members:
    get:
      tags:
        - Software Container Delivery Public APIs
      summary: Get Member Information for a Project
      description: >-
        Return a list of the members who have access to a particular project. To
        retrieve information about a particular member, specify their user name
        using the query parameter "user_id" (the "user_id" is identical with the
        "entityName" field in the response).
      operationId: getProjectMembersUsingGET
      parameters:
        - name: Authorization
          in: header
          description: Use Bearer token for authorization
          required: true
          schema:
            type: string
        - name: page
          in: query
          description: Retrieves a specific page. Must be a number.
          required: false
          allowEmptyValue: false
          schema:
            type: integer
            format: int64
            default: 1
        - name: page_size
          in: query
          description: >-
            Specifies how many records per page should be returned. Must be a
            number.
          required: false
          allowEmptyValue: false
          schema:
            type: integer
            format: int64
            default: 10
        - name: project_name
          in: path
          description: The name of the project for which information is requested.
          required: true
          schema:
            type: string
        - name: user_id
          in: query
          description: Retrieves information about a particular member.
          required: false
          allowEmptyValue: false
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectMemberResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
      deprecated: false
  /api/v1/projects/{project_name}/repositories:
    delete:
      tags:
        - Software Container Delivery Public APIs
      summary: Delete Repository or Image
      description: Delete a repository or image that is part of a project.
      operationId: deleteRepositoryUsingDELETE
      parameters:
        - name: Authorization
          in: header
          description: Use Bearer token for authorization
          required: true
          schema:
            type: string
        - name: project_name
          in: path
          description: The project name
          required: true
          schema:
            type: string
        - name: repository_name
          in: query
          description: Name of the repository containing the image to be deleted
          required: true
          allowEmptyValue: false
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
      deprecated: false
  /api/v1/projects/{project_name}/repositories/artifacts:
    get:
      tags:
        - Software Container Delivery Public APIs
      summary: List Artifacts
      description: >-
        List the details of artifacts that are included in a specific project
        and repository.
      operationId: getArtifactsUsingGET
      parameters:
        - name: Authorization
          in: header
          description: Use Bearer token for authorization
          required: true
          schema:
            type: string
        - name: page
          in: query
          description: Retrieves a specific page. Must be a number.
          required: false
          schema:
            type: integer
            format: int64
        - name: pageSize
          in: query
          description: The number of data sets per page
          required: false
          schema:
            type: integer
            format: int64
        - name: project_name
          in: path
          description: The project name
          required: true
          schema:
            type: string
        - name: repositoryName
          in: query
          description: The name of the repository.
          required: true
          schema:
            type: string
        - name: withImmutableStatus
          in: query
          description: >-
            Specify whether the immutable status is included inside the tags of
            the returning artifacts
          required: false
          schema:
            type: boolean
        - name: withLabel
          in: query
          description: >-
            Specify whether the labels are included inside the returning
            artifacts
          required: false
          schema:
            type: boolean
        - name: withScanOverview
          in: query
          description: >-
            Specify whether the scan overview is included inside the returning
            artifacts
          required: false
          schema:
            type: boolean
        - name: withSignature
          in: query
          description: >-
            Specify whether the signature is included inside the tags of the
            returning artifacts
          required: false
          schema:
            type: boolean
        - name: withTag
          in: query
          description: Specify whether the tags are included inside the returning artifacts
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadPackageResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '500':
          description: Internal server error
      deprecated: false
  /api/v1/secret:
    put:
      tags:
        - Software Container Delivery Public APIs
      summary: Change the Registry Secret
      description: >-
        Remove the current secret for the logged-in user and replace it with a
        new value. If the "new-password" field is empty, a random secret will be
        generated for the logged-in user.
      operationId: resetUserPasswordUsingPUT
      parameters:
        - name: Authorization
          in: header
          description: Use Bearer token for authorization
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserPasswordRequest'
        description: userPasswordDTO
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad Request Format.
      deprecated: false
  /api/v1/secret/{user-email}:
    get:
      tags:
        - Software Container Delivery Public APIs
      summary: Get Registry Secret
      description: >-
        Retrieve the registry secret for the logged-in user. The returned secret
        is Base64 encoded and must be decoded before it can be used to log into
        the registry.
      operationId: getUserPasswordUsingGET
      parameters:
        - name: Authorization
          in: header
          description: Use Bearer token for authorization
          required: true
          schema:
            type: string
        - name: user-email
          in: path
          description: User email
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: string
        '400':
          description: Bad Request Format.
      deprecated: false
servers:
  - url: https://{siteID}.flexnetoperations.{domainExtension}/registry/api/v1/
    description: >-
      Replace {siteID} with your FlexNet Operations instance. Replace
      {domainExtension} with the extension for your FlexNet Operations instance,
      such as com, eu, etc.
components:
  schemas:
    ArtifactResponse:
      type: object
      properties:
        annotations:
          type: object
          description: Annotations
          additionalProperties:
            type: string
        digest:
          type: string
          description: Digest
        extra_attrs:
          type: object
          description: Extra attrs
          additionalProperties:
            type: string
        icon:
          type: string
          description: Icon
        id:
          type: integer
          format: int64
          description: id
        labels:
          type: array
          description: Labels
          items:
            $ref: '#/components/schemas/LabelResponse'
        manifest_media_type:
          type: string
          description: Manifest media type
        media_type:
          type: string
          description: Media type
        project_id:
          type: integer
          format: int64
          description: Project id
        pull_time:
          type: string
          format: date-time
          description: Pull time
        push_time:
          type: string
          format: date-time
          description: Push time
        references:
          type: array
          description: References
          items:
            $ref: '#/components/schemas/ReferenceResponse'
        repository_id:
          type: integer
          format: int64
          description: Repository id
        scan_overview:
          type: object
          description: Scan overview
          additionalProperties:
            type: string
        size:
          type: integer
          format: int64
          description: Size
        tags:
          type: array
          description: Tags
          items:
            $ref: '#/components/schemas/TagResponse'
        type:
          type: string
          description: type
      title: ArtifactResponse
      description: Request Object for the Artifacts
    AuthServiceResponse:
      type: object
      properties:
        data:
          type: object
        statusCode:
          type: integer
          format: int32
        statusMessage:
          type: string
      title: AuthServiceResponse
    ChartDetailsResponse:
      type: object
      properties:
        apiVersion:
          type: string
          description: The API version of this chart
        appVersion:
          type: string
          description: The App version of this chart
        created:
          type: string
          description: The created time of chart entry
        description:
          type: string
          description: A one-sentence description of chart
        digest:
          type: string
          description: The digest value of the chart entry
        labels:
          type: array
          description: The labels attached to the chart
          items:
            $ref: '#/components/schemas/LabelResponse'
        name:
          type: string
          description: The name of the chart
        type:
          type: string
        urls:
          type: array
          description: The urls of the chart entry
          items:
            type: string
        version:
          type: string
          description: A SemVer 2 version of chart
      title: ChartDetailsResponse
    ChartResponse:
      type: object
      properties:
        Chart:
          $ref: '#/components/schemas/ChartVersionResponse'
        Name:
          type: string
          description: The chart name with repo name
        Score:
          type: integer
          format: int32
          description: The matched level
      title: ChartResponse
      description: The chart search result item
    ChartVersionResponse:
      type: object
      properties:
        apiVersion:
          type: string
          description: The API version of this chart
        created:
          type: string
          description: The created time of chart entry
        description:
          type: string
          description: A one-sentence description of chart
        digest:
          type: string
          description: The digest value of the chart entry
        home:
          type: string
          description: The URL to the relevant download package
        keywords:
          type: array
          description: A list of string keywords
          items:
            type: string
        maintainers:
          type: array
          description: Chart maintainers list
          items:
            $ref: '#/components/schemas/MaintainerResponse'
        name:
          type: string
          description: The name of the chart
        urls:
          type: array
          description: The urls of the chart entry
          items:
            type: string
        version:
          type: string
          description: A SemVer 2 version of chart
      title: ChartVersionResponse
      description: A specified chart entry
    DownloadPackageResponse:
      type: object
      properties:
        artifacts:
          type: array
          description: Artifacts
          items:
            $ref: '#/components/schemas/ArtifactResponse'
        chart:
          type: array
          description: List out the charts corresponding to the Download package
          items:
            $ref: '#/components/schemas/ChartResponse'
        download_package_id:
          type: string
          description: Download package Id
        download_package_name:
          type: string
          description: Download package name
        repositories:
          type: array
          description: Repositories
          items:
            $ref: '#/components/schemas/RepositoryResponse'
        sys_download_package_id:
          type: integer
          format: int64
          description: Sys download package Id
      title: DownloadPackageResponse
      description: Request Object for the Download package
    DownloadResponse:
      type: object
      properties:
        account:
          type: string
        artifact:
          type: string
        id:
          type: integer
          format: int32
        timestamp:
          type: string
        username:
          type: string
      title: DownloadResponse
    LabelResponse:
      type: object
      properties:
        color:
          type: string
        creation_time:
          type: string
          format: date-time
        description:
          type: string
        id:
          type: integer
          format: int64
        name:
          type: string
        project_id:
          type: integer
          format: int64
        scope:
          type: string
        update_time:
          type: string
          format: date-time
      title: LabelResponse
    MaintainerResponse:
      type: object
      properties:
        email:
          type: string
          description: The email of the maintainer
        name:
          type: string
          description: The name of the maintainer
      title: MaintainerResponse
      description: Response Object representing Maintainer
    PlatformResponse:
      type: object
      properties:
        '&#x27;os.features&#x27;':
          type: array
          items:
            type: string
        '&#x27;os.version&#x27;':
          type: string
        architecture:
          type: string
        os:
          type: string
        variant:
          type: string
      title: PlatformResponse
    ProjectMemberResponse:
      type: object
      properties:
        project_id:
          type: integer
          format: int32
          description: The project Id which the member belongs to
        role_name:
          type: string
          description: Member role in Harbor
        user_id:
          type: string
          description: Member username in Harbor
      title: ProjectMemberResponse
    ProjectResponse:
      type: object
      properties:
        project_id:
          type: integer
          format: int32
          description: Download package id stored under Harbor
        name:
          type: string
          description: Name of the download package
        repo_count:
          type: integer
          format: int32
          description: The number of the repositories under this download package
        chart_count:
          type: integer
          format: int32
          description: The total number of charts under this download package
        creation_time:
          type: string
          description: The creation time of the download package
        update_time:
          type: string
          description: The update time of the download package
      title: ProjectResponse
      description: Response Object representing Project
    ReferenceResponse:
      type: object
      properties:
        annotations:
          type: object
          additionalProperties:
            type: string
        child_digest:
          type: string
        child_id:
          type: integer
          format: int64
        parent_id:
          type: integer
          format: int64
        platform:
          $ref: '#/components/schemas/PlatformResponse'
        urls:
          type: array
          items:
            type: string
      title: ReferenceResponse
    RepositoryResponse:
      type: object
      properties:
        artifact_count:
          type: integer
          format: int64
          description: Artifact count
        artifacts:
          type: array
          description: List of artifacts
          items:
            $ref: '#/components/schemas/ArtifactResponse'
        creation_time:
          type: string
          format: date-time
          description: Creation time
        description:
          type: string
          description: Description
        id:
          type: integer
          format: int64
          description: Id
        name:
          type: string
          description: Name
        project_id:
          type: integer
          format: int64
          description: project id
        project_public:
          type: boolean
          description: project public
        pull_count:
          type: integer
          format: int64
          description: Pull count
        repository_name:
          type: string
          description: repository name
        update_time:
          type: string
          format: date-time
          description: Update time
      title: RepositoryResponse
      description: Request Object for the Repositories
    TagResponse:
      type: object
      properties:
        artifact_id:
          type: integer
          format: int64
        id:
          type: integer
          format: int64
        immutable:
          type: boolean
        name:
          type: string
        pull_time:
          type: string
          format: date-time
        push_time:
          type: string
          format: date-time
        repository_id:
          type: integer
          format: int64
        signed:
          type: boolean
      title: TagResponse
    UserPasswordRequest:
      type: object
      properties:
        existing-password:
          type: string
          description: Existing password (Base64 encoded)
        new-password:
          type: string
          description: >-
            New password (Base64 encoded). Pass an empty value to generate a
            random secret.
        user-email:
          type: string
          description: User email
      title: UserPasswordRequest
      description: Request Object for the Get OCI User Password API
