REST API¶
The API in the developer environment will either be served under /api/galaxy/
or /api/automation-hub/
.
Visiting this endpoint shows that there are two versions available: v3/
and pulp/api/v3/
. Understanding
the purpose of each of these APIs is crucial when contributing new features to the backend.
v3/¶
This is the original galaxy_ng API. It is primarily used for content consumption and to fill in some client specific gaps that the pulp APIs can't support. API endpoints should be added here that:
- Provide interfaces for content consumption. Some clients, such as
ansible-galaxy
, require a specific API layout to function. Other clients, such as the UI, require more data rich APIs that pull together data from several pulp models.- Examples:
- Execution environment search - provides a level of abstraction on top of the vanilla EE APIs from pulp-container that make them much easier for the UI to consume.
- Collection search
- Collection downloads - provides the APIs needed to drive the
ansible-galaxy
CLI.
- Examples:
- Provide client operations.
- Examples:
- Token generation. Pulpcore doesn't support API tokens, but they are needed by
ansible-galaxy
. - UI Authentication. The APIs for authenticating pulp don't support JSON.
- Configuration. The UI needs to know more information about the backend's configuration than the pulp APIs can provide.
- Token generation. Pulpcore doesn't support API tokens, but they are needed by
- Examples:
- Provide content specific operations.
- Collection Deprecation
- EE/Collection Deletion - Content deletion is a high level operation that requires many individual steps on the pulp API. These endpoints provide a nice abstraction on top of a lot of lower level pulp operations.
pulp/api/v3/¶
These APIs are provided by pulpcore and can be extended by other plugins (including galaxy_ng). These should be used for managing pulp primitives. This includes:
- General content operations
- Moving, copying and syncing content between repositories.
- Managing any pulp primitives. This includes:
- Repos
- Remotes
- Distributions
- Groups
- Users
- RBAC Roles
- Tasks
- Pretty much anything else defined in the pulpcore models.
Open API Spec¶
Pulp uses drf-spectacular to automatically generate an open api spec from the API. This spec can be found at /api/automation-hub/pulp/api/v3/docs/
and describes how the API works. This open api spec is also used to generate the pulp bindings to programmatically interact with the pulp APIs.