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.
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
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. |
4. Browse is navigation; Search is a query
Browse answers “what paths can this identity navigate in this repository?” Search answers “which components/assets match these indexed fields?” The current UI shows only the first 300 component-search results, while the REST APIs use continuation tokens for pagination. Browse itself has a documented 10,000-component-per-level UI limit. Neither limit means the repository contains only that many records.
SQL search introduced stricter semantics. Hyphenated keywords are tokenized, fuzzy/stemmed matching is not implied, exact phrases can be quoted, and wildcard behavior differs from older Elasticsearch-era instructions. If a familiar old wildcard stops matching after an upgrade, first reproduce the query against current SQL-search rules; do not rebuild the database or delete blobs.
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?
Not necessarily. Browse and SQL search are different views. First verify the exact repository, caller privileges and current SQL-search field/tokenization semantics, then query the component/assets APIs before considering any repair.
A user can download an asset by URL but cannot open the Browse view. Is that contradictory?
No. Repository read and browse are
separate privilege intents. Direct client access can work
without Browse UI permission.
Does a component ID identify the same thing as an asset ID?
No. A component is the logical package/version record; its assets are individual files/metadata objects with their own paths and IDs.
Can a Community Edition learner complete the mandatory chapter by creating component tags?
No tag creation is required. Current Sonatype feature documentation marks component tagging as Pro. CE learners use an external evidence manifest when a tagging concept must be simulated.
Why should the UI not be treated as the sole source of truth?
It is one client view with result limits, privilege filtering and query semantics. Independent REST and direct-retrieval evidence helps distinguish presentation/search behavior from stored content.
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.
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.
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0
Send only Ethereum/ERC-20 compatible assets to this
address.