GraphQL query & mutations for virtual registry upstreams
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Summary
We need to implement GraphQL query and mutations for CRUD operations on Maven virtual registry upstreams. These operations will allow users to manage Maven-specific upstream configurations through the GraphQL API.
Background
This issue is related to parent epic gitlab-org#15090 and designs are proposed in #493842 (closed). This implementation focuses specifically on Maven package registry upstreams.
Proposal
Data Model
A Maven virtual registry upstream contains:
-
Name
-
URL (Maven repository URL)
-
Cache expiration period (in hours)
-
Optional username
-
Optional password
-
Association with a Maven virtual registry (via virtual registry ID)
Required GraphQL Operations
Query
-
mavenVirtualRegistryUpstreams
: Fetch upstreams for a Maven virtual registry with pagination support- Input: Maven virtual registry ID, pagination parameters
- Output: List of Maven upstreams with their attributes
type MavenVirtualRegistryUpstream {
id: ID!
name: String!
url: String!
cacheExpirationPeriodHours: Int!
username: String
# password is not returned for security reasons
virtualRegistryId: ID!
position: Int!
createdAt: Time!
updatedAt: Time!
# Cache metrics
cachedResponsesCount: Int!
cacheSizeBytes: Int!
}
type MavenVirtualRegistryUpstreamConnection {
nodes: [MavenVirtualRegistryUpstream]
pageInfo: PageInfo!
}
extend type Query {
mavenVirtualRegistryUpstreams(
virtualRegistryId: ID!
after: String
before: String
first: Int
last: Int
): MavenVirtualRegistryUpstreamConnection!
}
Mutations
-
createMavenVirtualRegistryUpstream
: Create a new Maven upstream -
updateMavenVirtualRegistryUpstream
: Update an existing Maven upstream -
deleteMavenVirtualRegistryUpstream
: Delete a Maven upstream
input CreateMavenVirtualRegistryUpstreamInput {
virtualRegistryId: ID!
name: String!
url: String!
cacheExpirationPeriodHours: Int!
username: String
password: String
}
type CreateMavenVirtualRegistryUpstreamPayload {
upstream: MavenVirtualRegistryUpstream
errors: [Error!]!
}
input UpdateMavenVirtualRegistryUpstreamInput {
id: ID!
name: String
url: String
cacheExpirationPeriodHours: Int
username: String
password: String
}
type UpdateMavenVirtualRegistryUpstreamPayload {
upstream: MavenVirtualRegistryUpstream
errors: [Error!]!
}
input DeleteMavenVirtualRegistryUpstreamInput {
id: ID!
}
type DeleteMavenVirtualRegistryUpstreamPayload {
errors: [Error!]!
}
extend type Mutation {
createMavenVirtualRegistryUpstream(
input: CreateMavenVirtualRegistryUpstreamInput!
): CreateMavenVirtualRegistryUpstreamPayload
updateMavenVirtualRegistryUpstream(
input: UpdateMavenVirtualRegistryUpstreamInput!
): UpdateMavenVirtualRegistryUpstreamPayload
deleteMavenVirtualRegistryUpstream(
input: DeleteMavenVirtualRegistryUpstreamInput!
): DeleteMavenVirtualRegistryUpstreamPayload
}
Edited by 🤖 GitLab Bot 🤖