Chapter 03Lesson 01~110 minutes

User Interface, Search, Browse, Components, Assets, Tags, Uploads, and Repository Navigation: Concepts, Architecture, and Mental Model

Learn to read Nexus Repository as an observable state system before changing it: distinguish repository configuration from browse trees and SQL-backed search results, a component record from its individual assets, and convenient UI actions from the repository and authorization semantics underneath them.

Read before writeBrowse vs searchComponents & assetsPrivilege visibilityCE + Pro boundary

Learning objectives

  • Explain the difference among repository configuration, a browse tree, a search result, a component record, an asset record, and a direct repository URL.
  • Predict which persistent database/blob state is read when the UI, Search API, Components API, Assets API, or a package client asks Nexus for content.
  • Distinguish browse, read, search, upload and tag privileges instead of treating “can see it” as one permission.
  • Interpret current SQL-search behavior and understand why Browse and Search can legitimately expose different views of the same repository.
  • Keep current Pro-only component tagging separate from the mandatory Community Edition learning path.

Read before write. Chapter 02 established the application/data/database/blob/runtime boundary. Chapter 03 adds an operator rule: prove repository name, format, type, authorization and current component/asset state before using Upload, Delete, tag association, or any API that mutates content.

1. The practical problem: one artifact, several views

A build engineer says “the package is in Nexus.” That sentence is too imprecise for operations. It might mean a client can download bytes from a repository URL, the Browse tree contains a path, Search returns a component, the Components API has a component record, the Assets API lists one or more files, or a Pro deployment associates a tag with the component. Those views overlap, but they are not interchangeable.

Chapter 01 defined a component as the logical package/version object and an asset as an individual stored file or metadata object. Chapter 02 showed that Nexus keeps application configuration and metadata in database-backed state while artifact payloads live in blob storage. This chapter teaches how the operator-facing views project that underlying state.

2. Mental model: request → authorization → view → persistent state

How an operator view reaches Nexus state
flowchart TD
  U[Browser or API client] --> A[Authentication and privileges]
  A --> V{Requested view}
  V --> B[Browse tree]
  V --> S[SQL search]
  V --> C[Component or asset API]
  V --> D[Direct repository URL]
  B --> M[Database metadata]
  S --> M
  C --> M
  D --> M
  D --> X[Blob content]
  C --> X
  M --> R[Repository config: name format type]
  X --> R

The first arrow is the human or automation request. Authorization decides whether the caller may search, browse, read, upload, edit or administer the selected repository. Browse organizes repository content into a navigable path tree. Search queries indexed database metadata; since Nexus Repository 3.88.0, Sonatype documents SQL-backed search rather than Elasticsearch. Component and asset APIs expose structured metadata. A direct repository URL asks Nexus to serve a specific asset and therefore crosses from metadata to blob content.

The diagram deliberately separates view from truth. The UI is a client of Nexus state, not a second repository. When two views disagree, preserve both observations and diagnose permissions, query semantics, indexing and repository type before attempting repair.

3. Define the objects before using the controls

Object What it means here State/owner
Repository A named container with one package format and a type such as hosted, proxy or group. Repository configuration in Nexus; content references database/blob state.
Browse node A navigable path projection shown for a repository. Derived presentation of repository content; UI is capped at 10,000 components per level.
Search result A component or asset matching current SQL-search fields and caller privileges. Database-backed search; not equivalent to a recursive filesystem listing.
Component Logical package/version record such as com.example.academy:ui-demo:1.0.0. Database metadata linked to one or more assets.
Asset An individual file/metadata object with a path, content type, size, checksums and download URL. Metadata plus a blob reference to stored bytes.
Tag Pro-only metadata associated with a component, not an individual asset. Tag metadata and association records; not a release-stage copy of bytes.
Upload A mutation that creates component/asset state in a supported hosted repository. Repository metadata + blob payload; format-specific fields control component identity.

5. Visibility is privilege-specific

Capability Typical current privilege intent What it does not imply
Search nx-search-read plus repository browse scope Does not automatically allow artifact download.
Browse Repository-view browse Does not itself grant direct download/read.
Read Repository-view read Does not itself expose the Browse UI.
UI component upload nx-component-upload plus repository-view edit Does not grant repository administration.
Repository administration Repository-admin privileges Different from access to package content.
Tags nx-tags-* privileges in a Pro deployment Not available as a mandatory CE capability.

This separation explains a common observation: a user may be able to search metadata without being allowed to download the asset, or may have read access for a package manager while the Browse navigation is absent. Later security chapters will design roles in depth; here the goal is to interpret the behavior correctly.

6. Read-only inspection first

Reuse a disposable loopback instance from Chapter 02. The following commands do not create or delete repository content. Store credentials only in a permission-restricted temporary netrc file so the password is not placed directly in the curl argument list.

LAB="$HOME/nexus-ch03-lab"
NX_URL="http://127.0.0.1:8081"
mkdir -p "$LAB/evidence" "$LAB/payload"
umask 077
read -rsp "Disposable Nexus admin password: " NX_PASS; printf "\n"
printf 'machine 127.0.0.1 login admin password %s\n' "$NX_PASS" > "$LAB/nexus.netrc"
unset NX_PASS
NETRC="$LAB/nexus.netrc"

# Never commit or print $NETRC. Delete it when the lab ends.
curl --fail-with-body --silent --show-error --netrc-file "$NETRC" \
  "$NX_URL/service/rest/v1/repositories" \
  | tee "$LAB/evidence/01-repositories.json"

curl --fail-with-body --silent --show-error --netrc-file "$NETRC" \
  "$NX_URL/service/rest/v1/search?repository=maven-releases" \
  | tee "$LAB/evidence/02-search-example.json"

curl --fail-with-body --silent --show-error --netrc-file "$NETRC" \
  "$NX_URL/service/rest/v1/assets?repository=maven-releases" \
  | tee "$LAB/evidence/03-assets-example.json"

The exact default repository names can vary with onboarding/version choices. If maven-releases does not exist, select a repository name from 01-repositories.json rather than creating one merely to make this read-only exercise pass. A correct operator adapts the query to observed state.

7. Why this matters in DevOps

CI/CD pipelines, developers and release automation all need a shared answer to “which artifact?” A repository UI can help a human investigate, but a production workflow should be able to prove the same identity through stable coordinates, structured API evidence and immutable checksums/digests. Searchability improves discoverability; it does not replace publication policy, authorization, provenance or recovery.

Knowledge check

A component appears in Browse but a broad keyword search does not show it. Is the blob missing?

A user can download an asset by URL but cannot open the Browse view. Is that contradictory?

Does a component ID identify the same thing as an asset ID?

Can a Community Edition learner complete the mandatory chapter by creating component tags?

Why should the UI not be treated as the sole source of truth?

8. Summary

Nexus navigation is a set of views over repository configuration, database metadata and blob content. Browse, Search, Components, Assets and direct repository URLs answer different questions under different privileges. Treat those differences as diagnostic signals, not inconsistencies to erase.

Next lesson

Guided hands-on workflow and core operations

Next you will create one disposable hosted repository, upload a harmless synthetic component with multiple assets, and prove the mutation through independent UI/API/direct views.

Official references and version notes

  • Download Nexus Repository — the official download page used to pin the same 3.94.1-06 self-hosted lab baseline as Chapter 02 while current indexes are rechecked before execution.
  • Browsing Repositories — browse-tree behavior, 10,000-component-per-level UI limit, HTML view, and browse/read privilege distinctions.
  • Searching for Components — current UI search behavior, first-300-result display, SQL-search semantics, tokenization, exact phrases, and wildcard rules.
  • Search API — component/asset search endpoints and continuation-token pagination.
  • Viewing Component Information — component identifiers and the relationship to associated assets.
  • Viewing Asset Information — asset path, content type, size, blob timestamps/reference, checksums, uploader metadata, and format-specific attributes.
  • Uploading Components — hosted-only UI upload boundary and required upload/browse/read privileges.
  • Components API — list/get/delete components and format-specific multipart component upload.
  • Assets API — paginated asset listing, asset details, paths, download URLs and checksums.
  • Repositories API — repository inventory and format/type-specific repository configuration endpoints.
  • Privileges — current browse, read, add, edit, delete and search privilege semantics.
  • Tagging and Self-Hosted Feature Matrix — component tagging is currently a Pro feature; mandatory Chapter 03 work does not require it.

Version-sensitive statements were rechecked against Sonatype primary documentation on 2026-08-26. The mandatory path remains self-hosted, Community/free-compatible and disposable. The chapter keeps the Chapter 02 lab baseline at Nexus Repository 3.94.1-06 because Sonatype's current download and versions-status pages still present 3.94.1 as the current downloadable/GA line; learners are told to re-check those pages before running the lab.

Keep the academy open

Support free, practical DevOps education.

Every lesson is designed to remain readable in a browser, downloadable from GitHub, and usable without a paid learning platform. Contributions help expand and maintain the curriculum.

Ethereum / ERC-20
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0 Send only Ethereum/ERC-20 compatible assets to this address.