diff --git a/providers/src/gitlab/v00.00.00000/provider.yaml b/providers/src/gitlab/v00.00.00000/provider.yaml new file mode 100644 index 00000000..1fd6a1af --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/provider.yaml @@ -0,0 +1,170 @@ +id: gitlab +name: gitlab +version: v00.00.00000 +providerServices: + admin: + id: admin:v00.00.00000 + name: admin + preferred: true + service: + $ref: gitlab/v00.00.00000/services/admin.yaml + title: admin API + version: v00.00.00000 + description: Administration - Geo nodes, license history, subscription entries and billable user previews. + analytics: + id: analytics:v00.00.00000 + name: analytics + preferred: true + service: + $ref: gitlab/v00.00.00000/services/analytics.yaml + title: analytics API + version: v00.00.00000 + description: Analytics - usage trends, DevOps adoption, value streams, DORA performance scores, code coverage, contributions and customizable dashboards. + audit: + id: audit:v00.00.00000 + name: audit + preferred: true + service: + $ref: gitlab/v00.00.00000/services/audit.yaml + title: audit API + version: v00.00.00000 + description: Audit - audit event definitions. + boards: + id: boards:v00.00.00000 + name: boards + preferred: true + service: + $ref: gitlab/v00.00.00000/services/boards.yaml + title: boards API + version: v00.00.00000 + description: Issue and epic boards - project, group and instance boards and board lists. + ci: + id: ci:v00.00.00000 + name: ci + preferred: true + service: + $ref: gitlab/v00.00.00000/services/ci.yaml + title: ci API + version: v00.00.00000 + description: CI/CD - pipelines, jobs, runners, pipeline schedules, pipeline analytics, CI variables, job token scope and CI/CD settings. + duo: + id: duo:v00.00.00000 + name: duo + preferred: true + service: + $ref: gitlab/v00.00.00000/services/duo.yaml + title: duo API + version: v00.00.00000 + description: GitLab Duo - AI chat context presets and agentic workflows. + groups: + id: groups:v00.00.00000 + name: groups + preferred: true + service: + $ref: gitlab/v00.00.00000/services/groups.yaml + title: groups API + version: v00.00.00000 + description: Groups, namespaces and group-scoped resources - group details, descendant and shared groups, members, epics, iterations, contacts and organizations. + issues: + id: issues:v00.00.00000 + name: issues + preferred: true + service: + $ref: gitlab/v00.00.00000/services/issues.yaml + title: issues API + version: v00.00.00000 + description: Issues and time tracking - project and group issues, issue status counts, issue access levels and timelogs. + merge_requests: + id: merge_requests:v00.00.00000 + name: merge_requests + preferred: true + service: + $ref: gitlab/v00.00.00000/services/merge_requests.yaml + title: merge_requests API + version: v00.00.00000 + description: Merge requests - project and group merge requests, merge request details, violations and access levels. + metadata: + id: metadata:v00.00.00000 + name: metadata + preferred: true + service: + $ref: gitlab/v00.00.00000/services/metadata.yaml + title: metadata API + version: v00.00.00000 + description: Instance metadata - GitLab version and revision, current license and query complexity. + ml: + id: ml:v00.00.00000 + name: ml + preferred: true + service: + $ref: gitlab/v00.00.00000/services/ml.yaml + title: ml API + version: v00.00.00000 + description: Machine learning model registry - experiments. + packages: + id: packages:v00.00.00000 + name: packages + preferred: true + service: + $ref: gitlab/v00.00.00000/services/packages.yaml + title: packages API + version: v00.00.00000 + description: Packages and registries - packages, container repositories, container protection rules, dependency proxy and cleanup policies. + projects: + id: projects:v00.00.00000 + name: projects + preferred: true + service: + $ref: gitlab/v00.00.00000/services/projects.yaml + title: projects API + version: v00.00.00000 + description: Projects and project-scoped configuration - project details, forks, topics, labels, milestones, releases, environments, deployments, branch rules, repository and statistics. + security: + id: security:v00.00.00000 + name: security + preferred: true + service: + $ref: gitlab/v00.00.00000/services/security.yaml + title: security API + version: v00.00.00000 + description: Security and compliance - vulnerabilities, vulnerability statistics and scanners, security policies, dependencies (SBOM), DAST profiles and compliance frameworks. + snippets: + id: snippets:v00.00.00000 + name: snippets + preferred: true + service: + $ref: gitlab/v00.00.00000/services/snippets.yaml + title: snippets API + version: v00.00.00000 + description: Snippets - instance and project snippets. + users: + id: users:v00.00.00000 + name: users + preferred: true + service: + $ref: gitlab/v00.00.00000/services/users.yaml + title: users API + version: v00.00.00000 + description: Users and access - user details, the current user, user permissions on projects and groups, and to-do items. + work_items: + id: work_items:v00.00.00000 + name: work_items + preferred: true + service: + $ref: gitlab/v00.00.00000/services/work_items.yaml + title: work_items API + version: v00.00.00000 + description: Work items - group work items, work item types and state counts. + workspaces: + id: workspaces:v00.00.00000 + name: workspaces + preferred: true + service: + $ref: gitlab/v00.00.00000/services/workspaces.yaml + title: workspaces API + version: v00.00.00000 + description: Remote development workspaces. +config: + auth: + credentialsenvvar: GITLAB_TOKEN + type: bearer diff --git a/providers/src/gitlab/v00.00.00000/services/admin.yaml b/providers/src/gitlab/v00.00.00000/services/admin.yaml new file mode 100644 index 00000000..db1297cf --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/admin.yaml @@ -0,0 +1,501 @@ +openapi: 3.0.3 +info: + title: admin API + description: 'Administration - Geo nodes, license history, subscription entries and billable user previews. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=geo_node&method=get: + post: + operationId: geo_node_get + summary: Find a Geo node. + description: Find a Geo node. Generated from the GitLab GraphQL schema field Query.geoNode (GeoNode). + externalDocs: + description: 'GitLab GraphQL API reference: Query.geoNode' + url: https://docs.gitlab.com/api/graphql/reference/#querygeonode + x-stackQL-graphQL: + id: gitlab.admin.geo_node.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { geoNode{{ if or .name }}({{ if .name }}, name: "{{ .name }}"{{ end }}){{ end }} { container_repositories_max_capacity: containerRepositoriesMaxCapacity enabled files_max_capacity: filesMaxCapacity id internal_url: internalUrl minimum_reverification_interval: minimumReverificationInterval name primary_: primary repos_max_capacity: reposMaxCapacity selective_sync_shards: selectiveSyncShards selective_sync_type: selectiveSyncType sync_object_storage: syncObjectStorage url verification_max_capacity: verificationMaxCapacity } }' + x-stackql-protocol: graphql + parameters: + - name: name + in: query + required: false + description: Name of the Geo node. Defaults to the current Geo node name. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + geoNode: + type: object + properties: + container_repositories_max_capacity: + type: integer + description: Maximum concurrency of container repository sync for the secondary node. + enabled: + type: boolean + description: Indicates whether the Geo node is enabled. + files_max_capacity: + type: integer + description: Maximum concurrency of LFS/attachment backfill for the secondary node. + id: + type: string + description: ID of the GeoNode. + internal_url: + type: string + description: URL defined on the primary node secondary nodes should use to contact it. + minimum_reverification_interval: + type: integer + description: Interval (in days) in which the repository verification is valid. After expiry, it is reverted. + name: + type: string + description: Unique identifier for the Geo node. + primary_: + type: boolean + description: Indicates whether the Geo node is the primary. + repos_max_capacity: + type: integer + description: Maximum concurrency of repository backfill for the secondary node. + selective_sync_shards: + type: array + items: + type: string + description: Repository storages whose projects should be synced, if `selective_sync_type` == `shards`. + selective_sync_type: + type: string + description: Indicates if syncing is limited to only specific groups, or shards. + sync_object_storage: + type: boolean + description: Indicates if the secondary node will replicate blobs in Object Storage. + url: + type: string + description: User-facing URL for the Geo node. + verification_max_capacity: + type: integer + description: Maximum concurrency of repository verification for the secondary node. + /api/graphql?resource=group_gitlab_subscriptions_preview_billable_user_change&method=get: + post: + operationId: group_gitlab_subscriptions_preview_billable_user_change_get + summary: Preview Billable User Changes + description: Preview Billable User Changes Generated from the GitLab GraphQL schema field Group.gitlabSubscriptionsPreviewBillableUserChange (PreviewBillableUserChange). + externalDocs: + description: 'GitLab GraphQL API reference: Group.gitlabSubscriptionsPreviewBillableUserChange' + url: https://docs.gitlab.com/api/graphql/reference/#groupgitlabsubscriptionspreviewbillableuserchange + x-stackQL-graphQL: + id: gitlab.admin.group_gitlab_subscriptions_preview_billable_user_change.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { gitlabSubscriptionsPreviewBillableUserChange(role: {{ .role }}{{ if .add_group_id }}, addGroupId: {{ .add_group_id }}{{ end }}{{ if .member_role_id }}, memberRoleId: {{ .member_role_id }}{{ end }}) { new_billable_user_count: newBillableUserCount seats_in_subscription: seatsInSubscription will_increase_overage: willIncreaseOverage } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: role + in: query + required: true + description: Role of users being added to group. + schema: + type: string + enum: + - GUEST + - PLANNER + - REPORTER + - SECURITY_MANAGER + - DEVELOPER + - MAINTAINER + - OWNER + - name: add_group_id + in: query + required: false + description: Group ID to add. + schema: + type: integer + - name: member_role_id + in: query + required: false + description: Custom role assigned to the users. + schema: + type: integer + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + gitlabSubscriptionsPreviewBillableUserChange: + type: object + properties: + new_billable_user_count: + type: integer + description: Total number of billable users after change. + seats_in_subscription: + type: integer + description: Number of seats in subscription. + will_increase_overage: + type: boolean + description: ' If the group will have an increased overage after change.' + /api/graphql?resource=license_history_entries&method=list: + post: + operationId: license_history_entries_list + summary: Fields related to entries in the license history. + description: Fields related to entries in the license history. Generated from the GitLab GraphQL schema field Query.licenseHistoryEntries (connection of LicenseHistoryEntry nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.licenseHistoryEntries' + url: https://docs.gitlab.com/api/graphql/reference/#querylicensehistoryentries + x-stackQL-graphQL: + id: gitlab.admin.license_history_entries.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.licenseHistoryEntries.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.licenseHistoryEntries.pageInfo.endCursor + terminateOnJsonPath: $.data.licenseHistoryEntries.pageInfo.hasNextPage + query: 'query { licenseHistoryEntries(first: 100{{ .cursor }}) { nodes { activated_at: activatedAt block_changes_at: blockChangesAt company created_at: createdAt email expires_at: expiresAt id name plan starts_at: startsAt type users_in_license_count: usersInLicenseCount } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: [] + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + licenseHistoryEntries: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + activated_at: + type: string + description: Date when the license was activated. + block_changes_at: + type: string + description: Date when licensed features will be blocked. + company: + type: string + description: Company of the licensee. + created_at: + type: string + description: Date when the license was added. + email: + type: string + description: Email of the licensee. + expires_at: + type: string + description: Date when the license expires. + id: + type: string + description: ID of the license extracted from the license data. + name: + type: string + description: Name of the licensee. + plan: + type: string + description: Name of the subscription plan. + starts_at: + type: string + description: Date when the license started. + type: + type: string + description: Type of the license. + users_in_license_count: + type: integer + description: Number of paid users in the license. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_gitlab_subscriptions_preview_billable_user_change&method=get: + post: + operationId: project_gitlab_subscriptions_preview_billable_user_change_get + summary: Preview Billable User Changes + description: Preview Billable User Changes Generated from the GitLab GraphQL schema field Project.gitlabSubscriptionsPreviewBillableUserChange (PreviewBillableUserChange). + externalDocs: + description: 'GitLab GraphQL API reference: Project.gitlabSubscriptionsPreviewBillableUserChange' + url: https://docs.gitlab.com/api/graphql/reference/#projectgitlabsubscriptionspreviewbillableuserchange + x-stackQL-graphQL: + id: gitlab.admin.project_gitlab_subscriptions_preview_billable_user_change.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { gitlabSubscriptionsPreviewBillableUserChange(role: {{ .role }}{{ if .add_group_id }}, addGroupId: {{ .add_group_id }}{{ end }}{{ if .member_role_id }}, memberRoleId: {{ .member_role_id }}{{ end }}) { new_billable_user_count: newBillableUserCount seats_in_subscription: seatsInSubscription will_increase_overage: willIncreaseOverage } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: role + in: query + required: true + description: Role of users being added to group. + schema: + type: string + enum: + - GUEST + - PLANNER + - REPORTER + - SECURITY_MANAGER + - DEVELOPER + - MAINTAINER + - OWNER + - name: add_group_id + in: query + required: false + description: Group ID to add. + schema: + type: integer + - name: member_role_id + in: query + required: false + description: Custom role assigned to the users. + schema: + type: integer + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + gitlabSubscriptionsPreviewBillableUserChange: + type: object + properties: + new_billable_user_count: + type: integer + description: Total number of billable users after change. + seats_in_subscription: + type: integer + description: Number of seats in subscription. + will_increase_overage: + type: boolean + description: ' If the group will have an increased overage after change.' + /api/graphql?resource=subscription_future_entries&method=list: + post: + operationId: subscription_future_entries_list + summary: Fields related to entries in future subscriptions. + description: Fields related to entries in future subscriptions. Generated from the GitLab GraphQL schema field Query.subscriptionFutureEntries (connection of SubscriptionFutureEntry nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.subscriptionFutureEntries' + url: https://docs.gitlab.com/api/graphql/reference/#querysubscriptionfutureentries + x-stackQL-graphQL: + id: gitlab.admin.subscription_future_entries.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.subscriptionFutureEntries.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.subscriptionFutureEntries.pageInfo.endCursor + terminateOnJsonPath: $.data.subscriptionFutureEntries.pageInfo.hasNextPage + query: 'query { subscriptionFutureEntries(first: 100{{ .cursor }}) { nodes { company email expires_at: expiresAt name plan starts_at: startsAt type users_in_license_count: usersInLicenseCount } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: [] + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + subscriptionFutureEntries: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + company: + type: string + description: Company of the licensee. + email: + type: string + description: Email of the licensee. + expires_at: + type: string + description: Date when the license expires. + name: + type: string + description: Name of the licensee. + plan: + type: string + description: Name of the subscription plan. + starts_at: + type: string + description: Date when the license started. + type: + type: string + description: Type of license the subscription will yield. + users_in_license_count: + type: integer + description: Number of paid user seats. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + geo_node: + id: gitlab.admin.geo_node + name: geo_node + title: Geo Node + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=geo_node&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.geoNode + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/geo_node/methods/get' + insert: [] + update: [] + delete: [] + group_gitlab_subscriptions_preview_billable_user_change: + id: gitlab.admin.group_gitlab_subscriptions_preview_billable_user_change + name: group_gitlab_subscriptions_preview_billable_user_change + title: Group Gitlab Subscriptions Preview Billable User Change + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_gitlab_subscriptions_preview_billable_user_change&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.gitlabSubscriptionsPreviewBillableUserChange + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_gitlab_subscriptions_preview_billable_user_change/methods/get' + insert: [] + update: [] + delete: [] + license_history_entries: + id: gitlab.admin.license_history_entries + name: license_history_entries + title: License History Entries + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=license_history_entries&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.licenseHistoryEntries.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/license_history_entries/methods/list' + insert: [] + update: [] + delete: [] + project_gitlab_subscriptions_preview_billable_user_change: + id: gitlab.admin.project_gitlab_subscriptions_preview_billable_user_change + name: project_gitlab_subscriptions_preview_billable_user_change + title: Project Gitlab Subscriptions Preview Billable User Change + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_gitlab_subscriptions_preview_billable_user_change&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.gitlabSubscriptionsPreviewBillableUserChange + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_gitlab_subscriptions_preview_billable_user_change/methods/get' + insert: [] + update: [] + delete: [] + subscription_future_entries: + id: gitlab.admin.subscription_future_entries + name: subscription_future_entries + title: Subscription Future Entries + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=subscription_future_entries&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.subscriptionFutureEntries.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/subscription_future_entries/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/analytics.yaml b/providers/src/gitlab/v00.00.00000/services/analytics.yaml new file mode 100644 index 00000000..891c029e --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/analytics.yaml @@ -0,0 +1,1179 @@ +openapi: 3.0.3 +info: + title: analytics API + description: 'Analytics - usage trends, DevOps adoption, value streams, DORA performance scores, code coverage, contributions and customizable dashboards. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=custom_dashboard&method=get: + post: + operationId: custom_dashboard_get + summary: Find a custom dashboard by ID. + description: Find a custom dashboard by ID. Generated from the GitLab GraphQL schema field Query.customDashboard (CustomDashboard). + externalDocs: + description: 'GitLab GraphQL API reference: Query.customDashboard' + url: https://docs.gitlab.com/api/graphql/reference/#querycustomdashboard + x-stackQL-graphQL: + id: gitlab.analytics.custom_dashboard.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { customDashboard(id: "{{ .id }}") { config created_at: createdAt description id lock_version: lockVersion name slug system updated_at: updatedAt namespace { id full_path: fullPath name } project { id full_path: fullPath name } } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Dashboard ID. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + customDashboard: + type: object + properties: + config: + type: string + description: Dashboard layout and widget configuration. + created_at: + type: string + description: Timestamp when the dashboard was created. + description: + type: string + description: Optional summary or purpose of the dashboard. + id: + type: string + description: Global ID of the custom dashboard. + lock_version: + type: integer + description: Version used for optimistic concurrency control. + name: + type: string + description: Display name of the dashboard. + slug: + type: string + description: Dashboard url slug. + system: + type: boolean + description: Whether the dashboard is a built-in GitLab dashboard. + updated_at: + type: string + description: Timestamp when the dashboard was last updated. + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=custom_system_dashboard&method=get: + post: + operationId: custom_system_dashboard_get + summary: Find a GitLab-provided system dashboard by slug. + description: Find a GitLab-provided system dashboard by slug. Generated from the GitLab GraphQL schema field Query.customSystemDashboard (CustomSystemDashboard). + externalDocs: + description: 'GitLab GraphQL API reference: Query.customSystemDashboard' + url: https://docs.gitlab.com/api/graphql/reference/#querycustomsystemdashboard + x-stackQL-graphQL: + id: gitlab.analytics.custom_system_dashboard.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { customSystemDashboard(slug: "{{ .slug }}") { config created_at: createdAt description id name slug system } }' + x-stackql-protocol: graphql + parameters: + - name: slug + in: query + required: true + description: Slug of the system dashboard (e.g. "duo_and_sdlc_trends"). + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + customSystemDashboard: + type: object + properties: + config: + type: string + description: Dashboard layout and widget configuration. + created_at: + type: string + description: Timestamp when the dashboard was created. + description: + type: string + description: Optional summary or purpose of the dashboard. + id: + type: string + description: Global ID of the dashboard. + name: + type: string + description: Display name of the dashboard. + slug: + type: string + description: Dashboard url slug. + system: + type: boolean + description: Whether the dashboard is a built-in GitLab dashboard. + /api/graphql?resource=devops_adoption_enabled_namespaces&method=list: + post: + operationId: devops_adoption_enabled_namespaces_list + summary: 'Get configured DevOps adoption namespaces. **Status**: Beta. This endpoint is subject to change without notice.' + description: 'Get configured DevOps adoption namespaces. **Status**: Beta. This endpoint is subject to change without notice. Generated from the GitLab GraphQL schema field Query.devopsAdoptionEnabledNamespaces (connection of DevopsAdoptionEnabledNamespace nodes).' + externalDocs: + description: 'GitLab GraphQL API reference: Query.devopsAdoptionEnabledNamespaces' + url: https://docs.gitlab.com/api/graphql/reference/#querydevopsadoptionenablednamespaces + x-stackQL-graphQL: + id: gitlab.analytics.devops_adoption_enabled_namespaces.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.devopsAdoptionEnabledNamespaces.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.devopsAdoptionEnabledNamespaces.pageInfo.endCursor + terminateOnJsonPath: $.data.devopsAdoptionEnabledNamespaces.pageInfo.hasNextPage + query: 'query { devopsAdoptionEnabledNamespaces(first: 100{{ .cursor }}{{ if .display_namespace_id }}, displayNamespaceId: "{{ .display_namespace_id }}"{{ end }}) { nodes { id namespace { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: display_namespace_id + in: query + required: false + description: Filter by display namespace. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + devopsAdoptionEnabledNamespaces: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: ID of the enabled namespace. + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_code_coverage_activities&method=list: + post: + operationId: group_code_coverage_activities_list + summary: Represents the code coverage activity for this group. + description: Represents the code coverage activity for this group. Generated from the GitLab GraphQL schema field Group.codeCoverageActivities (connection of CodeCoverageActivity nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.codeCoverageActivities' + url: https://docs.gitlab.com/api/graphql/reference/#groupcodecoverageactivities + x-stackQL-graphQL: + id: gitlab.analytics.group_code_coverage_activities.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.codeCoverageActivities.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.codeCoverageActivities.pageInfo.endCursor + terminateOnJsonPath: $.data.group.codeCoverageActivities.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { codeCoverageActivities(first: 100{{ .cursor }}, startDate: "{{ .start_date }}") { nodes { average_coverage: averageCoverage coverage_count: coverageCount date project_count: projectCount } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: start_date + in: query + required: true + description: First day for which to fetch code coverage activity (maximum time window is set to 90 days). + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + codeCoverageActivities: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + average_coverage: + type: number + description: Average percentage of the different code coverage results available for the group. + coverage_count: + type: integer + description: Number of different code coverage results available for the group. + date: + type: string + description: Date when the code coverage was created. + project_count: + type: integer + description: Number of projects with code coverage results for the group. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_contributions&method=list: + post: + operationId: group_contributions_list + summary: Provides the aggregated contributions by users within the group and its subgroups + description: Provides the aggregated contributions by users within the group and its subgroups Generated from the GitLab GraphQL schema field Group.contributions (connection of ContributionAnalyticsContribution nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.contributions' + url: https://docs.gitlab.com/api/graphql/reference/#groupcontributions + x-stackQL-graphQL: + id: gitlab.analytics.group_contributions.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.contributions.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.contributions.pageInfo.endCursor + terminateOnJsonPath: $.data.group.contributions.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { contributions(first: 100{{ .cursor }}, from: "{{ .from_ }}", to: "{{ .to_ }}") { nodes { issues_closed: issuesClosed issues_created: issuesCreated merge_requests_approved: mergeRequestsApproved merge_requests_closed: mergeRequestsClosed merge_requests_created: mergeRequestsCreated merge_requests_merged: mergeRequestsMerged repo_pushed: repoPushed total_events: totalEvents user { id username name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: from_ + in: query + required: true + description: Start date of the reporting time range. + schema: + type: string + - name: to_ + in: query + required: true + description: End date of the reporting time range. The end date must be within 93 days after the start date. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + contributions: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + issues_closed: + type: integer + description: Number of issues closed by the user. + issues_created: + type: integer + description: Number of issues created by the user. + merge_requests_approved: + type: integer + description: Number of merge requests approved by the user. + merge_requests_closed: + type: integer + description: Number of merge requests closed by the user. + merge_requests_created: + type: integer + description: Number of merge requests created by the user. + merge_requests_merged: + type: integer + description: Number of merge requests merged by the user. + repo_pushed: + type: integer + description: Number of repository pushes the user made. + total_events: + type: integer + description: Total number of events contributed by the user. + user: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_customizable_dashboard_visualizations&method=list: + post: + operationId: group_customizable_dashboard_visualizations_list + summary: Visualizations of the group or associated configuration project. + description: Visualizations of the group or associated configuration project. Generated from the GitLab GraphQL schema field Group.customizableDashboardVisualizations (connection of CustomizableDashboardVisualization nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.customizableDashboardVisualizations' + url: https://docs.gitlab.com/api/graphql/reference/#groupcustomizabledashboardvisualizations + x-stackQL-graphQL: + id: gitlab.analytics.group_customizable_dashboard_visualizations.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.customizableDashboardVisualizations.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.customizableDashboardVisualizations.pageInfo.endCursor + terminateOnJsonPath: $.data.group.customizableDashboardVisualizations.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { customizableDashboardVisualizations(first: 100{{ .cursor }}{{ if .slug }}, slug: "{{ .slug }}"{{ end }}) { nodes { data errors options slug type } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: slug + in: query + required: false + description: Slug of the visualization to return. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + customizableDashboardVisualizations: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + data: + type: string + description: Data of the visualization. + errors: + type: array + items: + type: string + description: Validation errors in the visualization. + options: + type: string + description: Options of the visualization. + slug: + type: string + description: Slug of the visualization. + type: + type: string + description: Type of the visualization. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_customizable_dashboards&method=list: + post: + operationId: group_customizable_dashboards_list + summary: Customizable dashboards for the group. + description: Customizable dashboards for the group. Generated from the GitLab GraphQL schema field Group.customizableDashboards (connection of CustomizableDashboard nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.customizableDashboards' + url: https://docs.gitlab.com/api/graphql/reference/#groupcustomizabledashboards + x-stackQL-graphQL: + id: gitlab.analytics.group_customizable_dashboards.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.customizableDashboards.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.customizableDashboards.pageInfo.endCursor + terminateOnJsonPath: $.data.group.customizableDashboards.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { customizableDashboards(first: 100{{ .cursor }}{{ if .category }}, category: {{ .category }}{{ end }}{{ if .slug }}, slug: "{{ .slug }}"{{ end }}) { nodes { category description errors filters slug title user_defined: userDefined } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: category + in: query + required: false + description: Find by dashboard type. + schema: + type: string + enum: + - ANALYTICS + - name: slug + in: query + required: false + description: Find by dashboard slug. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + customizableDashboards: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + category: + type: string + enum: + - ANALYTICS + description: Category of dashboard. + description: + type: string + description: Description of the dashboard. + errors: + type: array + items: + type: string + description: Errors on yaml definition. + filters: + type: string + description: Dashboard global filters. + slug: + type: string + description: Slug of the dashboard. + title: + type: string + description: Title of the dashboard. + user_defined: + type: boolean + description: Indicates whether the dashboard is user-defined or provided by GitLab. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_dora_performance_score_counts&method=list: + post: + operationId: group_dora_performance_score_counts_list + summary: Group's DORA scores for all projects by DORA key metric for the last complete month. + description: Group's DORA scores for all projects by DORA key metric for the last complete month. Generated from the GitLab GraphQL schema field Group.doraPerformanceScoreCounts (connection of DoraPerformanceScoreCount nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.doraPerformanceScoreCounts' + url: https://docs.gitlab.com/api/graphql/reference/#groupdoraperformancescorecounts + x-stackQL-graphQL: + id: gitlab.analytics.group_dora_performance_score_counts.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.doraPerformanceScoreCounts.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.doraPerformanceScoreCounts.pageInfo.endCursor + terminateOnJsonPath: $.data.group.doraPerformanceScoreCounts.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { doraPerformanceScoreCounts(first: 100{{ .cursor }}) { nodes { high_projects_count: highProjectsCount low_projects_count: lowProjectsCount medium_projects_count: mediumProjectsCount metric_name: metricName no_data_projects_count: noDataProjectsCount } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + doraPerformanceScoreCounts: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + high_projects_count: + type: integer + description: Number of projects that score "high" on the metric. + low_projects_count: + type: integer + description: Number of projects that score "low" on the metric. + medium_projects_count: + type: integer + description: Number of projects that score "medium" on the metric. + metric_name: + type: string + description: Name of the DORA metric. + no_data_projects_count: + type: integer + description: Number of projects with no data for the metric. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_value_streams&method=list: + post: + operationId: group_value_streams_list + summary: Value streams available to the group. + description: Value streams available to the group. Generated from the GitLab GraphQL schema field Group.valueStreams (connection of ValueStream nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.valueStreams' + url: https://docs.gitlab.com/api/graphql/reference/#groupvaluestreams + x-stackQL-graphQL: + id: gitlab.analytics.group_value_streams.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.valueStreams.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.valueStreams.pageInfo.endCursor + terminateOnJsonPath: $.data.group.valueStreams.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { valueStreams(first: 100{{ .cursor }}{{ if .id }}, id: "{{ .id }}"{{ end }}) { nodes { id name namespace { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: id + in: query + required: false + description: Value stream id. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + valueStreams: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: ID of the value stream. + name: + type: string + description: Name of the value stream. + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_code_coverage_summary&method=get: + post: + operationId: project_code_coverage_summary_get + summary: Code coverage summary associated with the project. + description: Code coverage summary associated with the project. Generated from the GitLab GraphQL schema field Project.codeCoverageSummary (CodeCoverageSummary). + externalDocs: + description: 'GitLab GraphQL API reference: Project.codeCoverageSummary' + url: https://docs.gitlab.com/api/graphql/reference/#projectcodecoveragesummary + x-stackQL-graphQL: + id: gitlab.analytics.project_code_coverage_summary.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { codeCoverageSummary { average_coverage: averageCoverage coverage_count: coverageCount last_updated_on: lastUpdatedOn } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + codeCoverageSummary: + type: object + properties: + average_coverage: + type: number + description: Average percentage of the different code coverage results available for the project. + coverage_count: + type: integer + description: Number of different code coverage results available. + last_updated_on: + type: string + description: Latest date when the code coverage was created for the project. + /api/graphql?resource=project_value_streams&method=list: + post: + operationId: project_value_streams_list + summary: Value streams available to the project. + description: Value streams available to the project. Generated from the GitLab GraphQL schema field Project.valueStreams (connection of ValueStream nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.valueStreams' + url: https://docs.gitlab.com/api/graphql/reference/#projectvaluestreams + x-stackQL-graphQL: + id: gitlab.analytics.project_value_streams.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.valueStreams.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.valueStreams.pageInfo.endCursor + terminateOnJsonPath: $.data.project.valueStreams.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { valueStreams(first: 100{{ .cursor }}{{ if .id }}, id: "{{ .id }}"{{ end }}) { nodes { id name namespace { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: id + in: query + required: false + description: Value stream id. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + valueStreams: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: ID of the value stream. + name: + type: string + description: Name of the value stream. + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=usage_trends_measurements&method=list: + post: + operationId: usage_trends_measurements_list + summary: Get statistics on the instance. + description: Get statistics on the instance. Generated from the GitLab GraphQL schema field Query.usageTrendsMeasurements (connection of UsageTrendsMeasurement nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.usageTrendsMeasurements' + url: https://docs.gitlab.com/api/graphql/reference/#queryusagetrendsmeasurements + x-stackQL-graphQL: + id: gitlab.analytics.usage_trends_measurements.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.usageTrendsMeasurements.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.usageTrendsMeasurements.pageInfo.endCursor + terminateOnJsonPath: $.data.usageTrendsMeasurements.pageInfo.hasNextPage + query: 'query { usageTrendsMeasurements(first: 100{{ .cursor }}, identifier: {{ .identifier }}{{ if .recorded_after }}, recordedAfter: "{{ .recorded_after }}"{{ end }}{{ if .recorded_before }}, recordedBefore: "{{ .recorded_before }}"{{ end }}) { nodes { count identifier recorded_at: recordedAt } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: identifier + in: query + required: true + description: Type of measurement or statistics to retrieve. + schema: + type: string + enum: + - PROJECTS + - USERS + - ISSUES + - MERGE_REQUESTS + - GROUPS + - PIPELINES + - PIPELINES_SUCCEEDED + - PIPELINES_FAILED + - PIPELINES_CANCELED + - PIPELINES_SKIPPED + - name: recorded_after + in: query + required: false + description: Measurement recorded after the date. + schema: + type: string + - name: recorded_before + in: query + required: false + description: Measurement recorded before the date. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + usageTrendsMeasurements: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + count: + type: integer + description: Object count. + identifier: + type: string + enum: + - PROJECTS + - USERS + - ISSUES + - MERGE_REQUESTS + - GROUPS + - PIPELINES + - PIPELINES_SUCCEEDED + - PIPELINES_FAILED + - PIPELINES_CANCELED + - PIPELINES_SKIPPED + description: Type of objects being measured. + recorded_at: + type: string + description: Time the measurement was recorded. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + custom_dashboard: + id: gitlab.analytics.custom_dashboard + name: custom_dashboard + title: Custom Dashboard + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=custom_dashboard&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.customDashboard + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/custom_dashboard/methods/get' + insert: [] + update: [] + delete: [] + custom_system_dashboard: + id: gitlab.analytics.custom_system_dashboard + name: custom_system_dashboard + title: Custom System Dashboard + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=custom_system_dashboard&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.customSystemDashboard + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/custom_system_dashboard/methods/get' + insert: [] + update: [] + delete: [] + devops_adoption_enabled_namespaces: + id: gitlab.analytics.devops_adoption_enabled_namespaces + name: devops_adoption_enabled_namespaces + title: Devops Adoption Enabled Namespaces + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=devops_adoption_enabled_namespaces&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.devopsAdoptionEnabledNamespaces.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/devops_adoption_enabled_namespaces/methods/list' + insert: [] + update: [] + delete: [] + group_code_coverage_activities: + id: gitlab.analytics.group_code_coverage_activities + name: group_code_coverage_activities + title: Group Code Coverage Activities + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_code_coverage_activities&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.codeCoverageActivities.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_code_coverage_activities/methods/list' + insert: [] + update: [] + delete: [] + group_contributions: + id: gitlab.analytics.group_contributions + name: group_contributions + title: Group Contributions + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_contributions&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.contributions.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_contributions/methods/list' + insert: [] + update: [] + delete: [] + group_customizable_dashboard_visualizations: + id: gitlab.analytics.group_customizable_dashboard_visualizations + name: group_customizable_dashboard_visualizations + title: Group Customizable Dashboard Visualizations + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_customizable_dashboard_visualizations&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.customizableDashboardVisualizations.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_customizable_dashboard_visualizations/methods/list' + insert: [] + update: [] + delete: [] + group_customizable_dashboards: + id: gitlab.analytics.group_customizable_dashboards + name: group_customizable_dashboards + title: Group Customizable Dashboards + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_customizable_dashboards&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.customizableDashboards.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_customizable_dashboards/methods/list' + insert: [] + update: [] + delete: [] + group_dora_performance_score_counts: + id: gitlab.analytics.group_dora_performance_score_counts + name: group_dora_performance_score_counts + title: Group Dora Performance Score Counts + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_dora_performance_score_counts&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.doraPerformanceScoreCounts.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_dora_performance_score_counts/methods/list' + insert: [] + update: [] + delete: [] + group_value_streams: + id: gitlab.analytics.group_value_streams + name: group_value_streams + title: Group Value Streams + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_value_streams&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.valueStreams.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_value_streams/methods/list' + insert: [] + update: [] + delete: [] + project_code_coverage_summary: + id: gitlab.analytics.project_code_coverage_summary + name: project_code_coverage_summary + title: Project Code Coverage Summary + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_code_coverage_summary&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.codeCoverageSummary + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_code_coverage_summary/methods/get' + insert: [] + update: [] + delete: [] + project_value_streams: + id: gitlab.analytics.project_value_streams + name: project_value_streams + title: Project Value Streams + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_value_streams&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.valueStreams.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_value_streams/methods/list' + insert: [] + update: [] + delete: [] + usage_trends_measurements: + id: gitlab.analytics.usage_trends_measurements + name: usage_trends_measurements + title: Usage Trends Measurements + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=usage_trends_measurements&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.usageTrendsMeasurements.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/usage_trends_measurements/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/audit.yaml b/providers/src/gitlab/v00.00.00000/services/audit.yaml new file mode 100644 index 00000000..46ce998f --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/audit.yaml @@ -0,0 +1,105 @@ +openapi: 3.0.3 +info: + title: audit API + description: 'Audit - audit event definitions. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=audit_event_definitions&method=list: + post: + operationId: audit_event_definitions_list + summary: Definitions for all audit events available on the instance. + description: Definitions for all audit events available on the instance. Generated from the GitLab GraphQL schema field Query.auditEventDefinitions (connection of AuditEventDefinition nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.auditEventDefinitions' + url: https://docs.gitlab.com/api/graphql/reference/#queryauditeventdefinitions + x-stackQL-graphQL: + id: gitlab.audit.audit_event_definitions.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.auditEventDefinitions.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.auditEventDefinitions.pageInfo.endCursor + terminateOnJsonPath: $.data.auditEventDefinitions.pageInfo.hasNextPage + query: 'query { auditEventDefinitions(first: 100{{ .cursor }}) { nodes { description feature_category: featureCategory introduced_by_issue: introducedByIssue introduced_by_mr: introducedByMr milestone name saved_to_database: savedToDatabase streamed } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: [] + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + auditEventDefinitions: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of what action the audit event tracks. + feature_category: + type: string + description: Feature category associated with the event. + introduced_by_issue: + type: string + description: Link to the issue introducing the event. For olderaudit events, it can be a commit URL rather than amerge request URL. + introduced_by_mr: + type: string + description: Link to the merge request introducing the event. Forolder audit events, it can be a commit URL rather thana merge request URL. + milestone: + type: string + description: Milestone the event was introduced in. + name: + type: string + description: Key name of the audit event. + saved_to_database: + type: boolean + description: Indicates if the event is saved to PostgreSQL database. + streamed: + type: boolean + description: Indicates if the event is streamed to an external destination. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + audit_event_definitions: + id: gitlab.audit.audit_event_definitions + name: audit_event_definitions + title: Audit Event Definitions + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=audit_event_definitions&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.auditEventDefinitions.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/audit_event_definitions/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/boards.yaml b/providers/src/gitlab/v00.00.00000/services/boards.yaml new file mode 100644 index 00000000..7834c15a --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/boards.yaml @@ -0,0 +1,844 @@ +openapi: 3.0.3 +info: + title: boards API + description: 'Issue and epic boards - project, group and instance boards and board lists. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=board_list&method=get: + post: + operationId: board_list_get + summary: Find an issue board list. + description: Find an issue board list. Generated from the GitLab GraphQL schema field Query.boardList (BoardList). + externalDocs: + description: 'GitLab GraphQL API reference: Query.boardList' + url: https://docs.gitlab.com/api/graphql/reference/#queryboardlist + x-stackQL-graphQL: + id: gitlab.boards.board_list.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { boardList(id: "{{ .id }}") { collapsed id issues_count: issuesCount limit_metric: limitMetric list_type: listType max_issue_count: maxIssueCount max_issue_weight: maxIssueWeight position title total_issue_weight: totalIssueWeight milestone { id title } } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Global ID of the list. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + boardList: + type: object + properties: + collapsed: + type: boolean + description: Indicates if the list is collapsed for the user. + id: + type: string + description: ID (global ID) of the list. + issues_count: + type: integer + description: Count of issues in the list. + limit_metric: + type: string + enum: + - all_metrics + - issue_count + - issue_weights + description: Current limit metric for the list. + list_type: + type: string + description: Type of the list. + max_issue_count: + type: integer + description: Maximum number of issues in the list. + max_issue_weight: + type: integer + description: Maximum weight of issues in the list. + position: + type: integer + description: Position of list within the board. + title: + type: string + description: Title of the list. + total_issue_weight: + type: string + description: Total weight of all issues in the list, encoded as a string. + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + /api/graphql?resource=epic_board_list&method=get: + post: + operationId: epic_board_list_get + summary: get epic_board_list + description: get epic_board_list Generated from the GitLab GraphQL schema field Query.epicBoardList (EpicList). + externalDocs: + description: 'GitLab GraphQL API reference: Query.epicBoardList' + url: https://docs.gitlab.com/api/graphql/reference/#queryepicboardlist + x-stackQL-graphQL: + id: gitlab.boards.epic_board_list.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { epicBoardList(id: "{{ .id }}") { collapsed id list_type: listType position title } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Global ID of the list. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + epicBoardList: + type: object + properties: + collapsed: + type: boolean + description: Indicates if the list is collapsed for the user. + id: + type: string + description: Global ID of the board list. + list_type: + type: string + description: Type of the list. + position: + type: integer + description: Position of the list within the board. + title: + type: string + description: Title of the list. + /api/graphql?resource=group_board&method=get: + post: + operationId: group_board_get + summary: A single board of the group. + description: A single board of the group. Generated from the GitLab GraphQL schema field Group.board (Board). + externalDocs: + description: 'GitLab GraphQL API reference: Group.board' + url: https://docs.gitlab.com/api/graphql/reference/#groupboard + x-stackQL-graphQL: + id: gitlab.boards.group_board.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { board(id: "{{ .id }}") { created_at: createdAt hide_backlog_list: hideBacklogList hide_closed_list: hideClosedList id name updated_at: updatedAt web_path: webPath web_url: webUrl weight milestone { id title } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: id + in: query + required: true + description: ID of the board. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + board: + type: object + properties: + created_at: + type: string + description: Timestamp of when the board was created. + hide_backlog_list: + type: boolean + description: Whether or not backlog list is hidden. + hide_closed_list: + type: boolean + description: Whether or not closed list is hidden. + id: + type: string + description: ID (global ID) of the board. + name: + type: string + description: Name of the board. + updated_at: + type: string + description: Timestamp of when the board was last updated. + web_path: + type: string + description: Web path of the board. + web_url: + type: string + description: Web URL of the board. + weight: + type: integer + description: Weight of the board. + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + /api/graphql?resource=group_boards&method=list: + post: + operationId: group_boards_list + summary: Boards of the group. + description: Boards of the group. Generated from the GitLab GraphQL schema field Group.boards (connection of Board nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.boards' + url: https://docs.gitlab.com/api/graphql/reference/#groupboards + x-stackQL-graphQL: + id: gitlab.boards.group_boards.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.boards.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.boards.pageInfo.endCursor + terminateOnJsonPath: $.data.group.boards.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { boards(first: 100{{ .cursor }}{{ if .id }}, id: "{{ .id }}"{{ end }}) { nodes { created_at: createdAt hide_backlog_list: hideBacklogList hide_closed_list: hideClosedList id name updated_at: updatedAt web_path: webPath web_url: webUrl weight milestone { id title } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: id + in: query + required: false + description: Find a board by its ID. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + boards: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of when the board was created. + hide_backlog_list: + type: boolean + description: Whether or not backlog list is hidden. + hide_closed_list: + type: boolean + description: Whether or not closed list is hidden. + id: + type: string + description: ID (global ID) of the board. + name: + type: string + description: Name of the board. + updated_at: + type: string + description: Timestamp of when the board was last updated. + web_path: + type: string + description: Web path of the board. + web_url: + type: string + description: Web URL of the board. + weight: + type: integer + description: Weight of the board. + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_recent_issue_boards&method=list: + post: + operationId: group_recent_issue_boards_list + summary: List of recently visited boards of the group. Maximum size is 4. + description: List of recently visited boards of the group. Maximum size is 4. Generated from the GitLab GraphQL schema field Group.recentIssueBoards (connection of Board nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.recentIssueBoards' + url: https://docs.gitlab.com/api/graphql/reference/#grouprecentissueboards + x-stackQL-graphQL: + id: gitlab.boards.group_recent_issue_boards.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.recentIssueBoards.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.recentIssueBoards.pageInfo.endCursor + terminateOnJsonPath: $.data.group.recentIssueBoards.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { recentIssueBoards(first: 100{{ .cursor }}) { nodes { created_at: createdAt hide_backlog_list: hideBacklogList hide_closed_list: hideClosedList id name updated_at: updatedAt web_path: webPath web_url: webUrl weight milestone { id title } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + recentIssueBoards: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of when the board was created. + hide_backlog_list: + type: boolean + description: Whether or not backlog list is hidden. + hide_closed_list: + type: boolean + description: Whether or not closed list is hidden. + id: + type: string + description: ID (global ID) of the board. + name: + type: string + description: Name of the board. + updated_at: + type: string + description: Timestamp of when the board was last updated. + web_path: + type: string + description: Web path of the board. + web_url: + type: string + description: Web URL of the board. + weight: + type: integer + description: Weight of the board. + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_board&method=get: + post: + operationId: project_board_get + summary: A single board of the project. + description: A single board of the project. Generated from the GitLab GraphQL schema field Project.board (Board). + externalDocs: + description: 'GitLab GraphQL API reference: Project.board' + url: https://docs.gitlab.com/api/graphql/reference/#projectboard + x-stackQL-graphQL: + id: gitlab.boards.project_board.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { board(id: "{{ .id }}") { created_at: createdAt hide_backlog_list: hideBacklogList hide_closed_list: hideClosedList id name updated_at: updatedAt web_path: webPath web_url: webUrl weight milestone { id title } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: id + in: query + required: true + description: ID of the board. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + board: + type: object + properties: + created_at: + type: string + description: Timestamp of when the board was created. + hide_backlog_list: + type: boolean + description: Whether or not backlog list is hidden. + hide_closed_list: + type: boolean + description: Whether or not closed list is hidden. + id: + type: string + description: ID (global ID) of the board. + name: + type: string + description: Name of the board. + updated_at: + type: string + description: Timestamp of when the board was last updated. + web_path: + type: string + description: Web path of the board. + web_url: + type: string + description: Web URL of the board. + weight: + type: integer + description: Weight of the board. + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + /api/graphql?resource=project_boards&method=list: + post: + operationId: project_boards_list + summary: Boards of the project. + description: Boards of the project. Generated from the GitLab GraphQL schema field Project.boards (connection of Board nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.boards' + url: https://docs.gitlab.com/api/graphql/reference/#projectboards + x-stackQL-graphQL: + id: gitlab.boards.project_boards.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.boards.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.boards.pageInfo.endCursor + terminateOnJsonPath: $.data.project.boards.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { boards(first: 100{{ .cursor }}{{ if .id }}, id: "{{ .id }}"{{ end }}) { nodes { created_at: createdAt hide_backlog_list: hideBacklogList hide_closed_list: hideClosedList id name updated_at: updatedAt web_path: webPath web_url: webUrl weight milestone { id title } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: id + in: query + required: false + description: Find a board by its ID. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + boards: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of when the board was created. + hide_backlog_list: + type: boolean + description: Whether or not backlog list is hidden. + hide_closed_list: + type: boolean + description: Whether or not closed list is hidden. + id: + type: string + description: ID (global ID) of the board. + name: + type: string + description: Name of the board. + updated_at: + type: string + description: Timestamp of when the board was last updated. + web_path: + type: string + description: Web path of the board. + web_url: + type: string + description: Web URL of the board. + weight: + type: integer + description: Weight of the board. + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_recent_issue_boards&method=list: + post: + operationId: project_recent_issue_boards_list + summary: List of recently visited boards of the project. Maximum size is 4. + description: List of recently visited boards of the project. Maximum size is 4. Generated from the GitLab GraphQL schema field Project.recentIssueBoards (connection of Board nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.recentIssueBoards' + url: https://docs.gitlab.com/api/graphql/reference/#projectrecentissueboards + x-stackQL-graphQL: + id: gitlab.boards.project_recent_issue_boards.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.recentIssueBoards.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.recentIssueBoards.pageInfo.endCursor + terminateOnJsonPath: $.data.project.recentIssueBoards.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { recentIssueBoards(first: 100{{ .cursor }}) { nodes { created_at: createdAt hide_backlog_list: hideBacklogList hide_closed_list: hideClosedList id name updated_at: updatedAt web_path: webPath web_url: webUrl weight milestone { id title } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + recentIssueBoards: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of when the board was created. + hide_backlog_list: + type: boolean + description: Whether or not backlog list is hidden. + hide_closed_list: + type: boolean + description: Whether or not closed list is hidden. + id: + type: string + description: ID (global ID) of the board. + name: + type: string + description: Name of the board. + updated_at: + type: string + description: Timestamp of when the board was last updated. + web_path: + type: string + description: Web path of the board. + web_url: + type: string + description: Web URL of the board. + weight: + type: integer + description: Weight of the board. + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + board_list: + id: gitlab.boards.board_list + name: board_list + title: Board List + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=board_list&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.boardList + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/board_list/methods/get' + insert: [] + update: [] + delete: [] + epic_board_list: + id: gitlab.boards.epic_board_list + name: epic_board_list + title: Epic Board List + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=epic_board_list&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.epicBoardList + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/epic_board_list/methods/get' + insert: [] + update: [] + delete: [] + group_board: + id: gitlab.boards.group_board + name: group_board + title: Group Board + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_board&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.board + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_board/methods/get' + insert: [] + update: [] + delete: [] + group_boards: + id: gitlab.boards.group_boards + name: group_boards + title: Group Boards + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_boards&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.boards.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_boards/methods/list' + insert: [] + update: [] + delete: [] + group_recent_issue_boards: + id: gitlab.boards.group_recent_issue_boards + name: group_recent_issue_boards + title: Group Recent Issue Boards + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_recent_issue_boards&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.recentIssueBoards.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_recent_issue_boards/methods/list' + insert: [] + update: [] + delete: [] + project_board: + id: gitlab.boards.project_board + name: project_board + title: Project Board + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_board&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.board + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_board/methods/get' + insert: [] + update: [] + delete: [] + project_boards: + id: gitlab.boards.project_boards + name: project_boards + title: Project Boards + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_boards&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.boards.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_boards/methods/list' + insert: [] + update: [] + delete: [] + project_recent_issue_boards: + id: gitlab.boards.project_recent_issue_boards + name: project_recent_issue_boards + title: Project Recent Issue Boards + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_recent_issue_boards&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.recentIssueBoards.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_recent_issue_boards/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/ci.yaml b/providers/src/gitlab/v00.00.00000/services/ci.yaml new file mode 100644 index 00000000..2a92b8b2 --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/ci.yaml @@ -0,0 +1,4431 @@ +openapi: 3.0.3 +info: + title: ci API + description: 'CI/CD - pipelines, jobs, runners, pipeline schedules, pipeline analytics, CI variables, job token scope and CI/CD settings. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=ci_application_settings&method=get: + post: + operationId: ci_application_settings_get + summary: CI related settings that apply to the entire instance. + description: CI related settings that apply to the entire instance. Generated from the GitLab GraphQL schema field Query.ciApplicationSettings (CiApplicationSettings). + externalDocs: + description: 'GitLab GraphQL API reference: Query.ciApplicationSettings' + url: https://docs.gitlab.com/api/graphql/reference/#queryciapplicationsettings + x-stackQL-graphQL: + id: gitlab.ci.ci_application_settings.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { ciApplicationSettings { keep_latest_artifact: keepLatestArtifact } }' + x-stackql-protocol: graphql + parameters: [] + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + ciApplicationSettings: + type: object + properties: + keep_latest_artifact: + type: boolean + description: Whether to keep the latest jobs artifacts. + /api/graphql?resource=ci_dedicated_hosted_runner_filters&method=get: + post: + operationId: ci_dedicated_hosted_runner_filters_get + summary: Returns available filters for GitLab Dedicated runner usage data. + description: Returns available filters for GitLab Dedicated runner usage data. Generated from the GitLab GraphQL schema field Query.ciDedicatedHostedRunnerFilters (CiDedicatedHostedRunnerFilters). + externalDocs: + description: 'GitLab GraphQL API reference: Query.ciDedicatedHostedRunnerFilters' + url: https://docs.gitlab.com/api/graphql/reference/#querycidedicatedhostedrunnerfilters + x-stackQL-graphQL: + id: gitlab.ci.ci_dedicated_hosted_runner_filters.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: query { ciDedicatedHostedRunnerFilters { years } } + x-stackql-protocol: graphql + parameters: [] + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + ciDedicatedHostedRunnerFilters: + type: object + properties: + years: + type: array + items: + type: integer + description: List of years with available usage data. + /api/graphql?resource=ci_dedicated_hosted_runner_usage&method=list: + post: + operationId: ci_dedicated_hosted_runner_usage_list + summary: Compute usage data for runners across namespaces on GitLab Dedicated. Defaults to the current year if no year or billing month is specified. Ultimate only. + description: Compute usage data for runners across namespaces on GitLab Dedicated. Defaults to the current year if no year or billing month is specified. Ultimate only. Generated from the GitLab GraphQL schema field Query.ciDedicatedHostedRunnerUsage (connection of CiDedicatedHostedRunnerUsage nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.ciDedicatedHostedRunnerUsage' + url: https://docs.gitlab.com/api/graphql/reference/#querycidedicatedhostedrunnerusage + x-stackQL-graphQL: + id: gitlab.ci.ci_dedicated_hosted_runner_usage.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.ciDedicatedHostedRunnerUsage.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.ciDedicatedHostedRunnerUsage.pageInfo.endCursor + terminateOnJsonPath: $.data.ciDedicatedHostedRunnerUsage.pageInfo.hasNextPage + query: 'query { ciDedicatedHostedRunnerUsage(first: 100{{ .cursor }}{{ if .billing_month }}, billingMonth: "{{ .billing_month }}"{{ end }}{{ if .grouping }}, grouping: {{ .grouping }}{{ end }}{{ if .runner_id }}, runnerId: "{{ .runner_id }}"{{ end }}{{ if .year }}, year: {{ .year }}{{ end }}) { nodes { billing_month: billingMonth billing_month_iso8601: billingMonthIso8601 compute_minutes: computeMinutes compute_minutes_usage: computeMinutesUsage duration_minutes: durationMinutes duration_seconds: durationSeconds } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: billing_month + in: query + required: false + description: First day of the month to retrieve data for. + schema: + type: string + - name: grouping + in: query + required: false + description: Groups usage data by instance aggregate or root namespace. + schema: + type: string + enum: + - INSTANCE_AGGREGATE + - PER_ROOT_NAMESPACE + - name: runner_id + in: query + required: false + description: Runner ID to retrieve data for. + schema: + type: string + - name: year + in: query + required: false + description: Year to retrieve data for. + schema: + type: integer + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + ciDedicatedHostedRunnerUsage: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + billing_month: + type: string + description: Month of the usage data. + billing_month_iso8601: + type: string + description: Timestamp of the billing month in ISO 8601 format. + compute_minutes: + type: integer + description: Total compute minutes used across all namespaces. Values are rounded down to the nearest integer. + compute_minutes_usage: + type: number + description: Total compute minutes used across all namespaces. + duration_minutes: + type: number + description: Total duration in minutes of runner usage. + duration_seconds: + type: integer + description: Total duration in seconds of runner usage. Values are rounded down to the nearest integer. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=ci_minutes_project_monthly_usage&method=list: + post: + operationId: ci_minutes_project_monthly_usage_list + summary: Compute usage data for projects in a namespace for a given month. Returns project usage independent of whether a namespace-level usage record exists. + description: Compute usage data for projects in a namespace for a given month. Returns project usage independent of whether a namespace-level usage record exists. Generated from the GitLab GraphQL schema field Query.ciMinutesProjectMonthlyUsage (connection of CiMinutesProjectMonthlyUsage nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.ciMinutesProjectMonthlyUsage' + url: https://docs.gitlab.com/api/graphql/reference/#queryciminutesprojectmonthlyusage + x-stackQL-graphQL: + id: gitlab.ci.ci_minutes_project_monthly_usage.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.ciMinutesProjectMonthlyUsage.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.ciMinutesProjectMonthlyUsage.pageInfo.endCursor + terminateOnJsonPath: $.data.ciMinutesProjectMonthlyUsage.pageInfo.hasNextPage + query: 'query { ciMinutesProjectMonthlyUsage(first: 100{{ .cursor }}{{ if .date }}, date: "{{ .date }}"{{ end }}{{ if .namespace_id }}, namespaceId: "{{ .namespace_id }}"{{ end }}) { nodes { minutes shared_runners_duration: sharedRunnersDuration project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: date + in: query + required: false + description: Date for which to retrieve the usage data, should be the first day of a month. Defaults to the current month. + schema: + type: string + - name: namespace_id + in: query + required: false + description: Global ID of the Namespace for the project compute usage. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + ciMinutesProjectMonthlyUsage: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + minutes: + type: integer + description: Number of compute minutes used by the project in the month. + shared_runners_duration: + type: integer + description: Total duration (in seconds) of shared runners use by the project for the month. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=ci_minutes_usage&method=list: + post: + operationId: ci_minutes_usage_list + summary: Compute usage data for a namespace. + description: Compute usage data for a namespace. Generated from the GitLab GraphQL schema field Query.ciMinutesUsage (connection of CiMinutesNamespaceMonthlyUsage nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.ciMinutesUsage' + url: https://docs.gitlab.com/api/graphql/reference/#queryciminutesusage + x-stackQL-graphQL: + id: gitlab.ci.ci_minutes_usage.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.ciMinutesUsage.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.ciMinutesUsage.pageInfo.endCursor + terminateOnJsonPath: $.data.ciMinutesUsage.pageInfo.hasNextPage + query: 'query { ciMinutesUsage(first: 100{{ .cursor }}{{ if .date }}, date: "{{ .date }}"{{ end }}{{ if .namespace_id }}, namespaceId: "{{ .namespace_id }}"{{ end }}) { nodes { minutes month month_iso8601: monthIso8601 shared_runners_duration: sharedRunnersDuration } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: date + in: query + required: false + description: Date for which to retrieve the usage data, should be the first day of a month. + schema: + type: string + - name: namespace_id + in: query + required: false + description: Global ID of the Namespace for the monthly compute usage. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + ciMinutesUsage: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + minutes: + type: integer + description: Total number of compute minutes used by all projects in the namespace. + month: + type: string + description: Month related to the usage data. + month_iso8601: + type: string + description: Month related to the usage data in ISO 8601 date format. + shared_runners_duration: + type: integer + description: Total duration (in seconds) of shared runners use by the namespace for the month. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=ci_pipeline_stage&method=get: + post: + operationId: ci_pipeline_stage_get + summary: Stage belonging to a CI pipeline. + description: Stage belonging to a CI pipeline. Generated from the GitLab GraphQL schema field Query.ciPipelineStage (CiStage). + externalDocs: + description: 'GitLab GraphQL API reference: Query.ciPipelineStage' + url: https://docs.gitlab.com/api/graphql/reference/#querycipipelinestage + x-stackQL-graphQL: + id: gitlab.ci.ci_pipeline_stage.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { ciPipelineStage(id: "{{ .id }}") { id name status } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Global ID of the CI stage. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + ciPipelineStage: + type: object + properties: + id: + type: string + description: ID of the stage. + name: + type: string + description: Name of the stage. + status: + type: string + description: Status of the pipeline stage. + /api/graphql?resource=ci_variables&method=list: + post: + operationId: ci_variables_list + summary: List of the instance's CI/CD variables. + description: List of the instance's CI/CD variables. Generated from the GitLab GraphQL schema field Query.ciVariables (connection of CiInstanceVariable nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.ciVariables' + url: https://docs.gitlab.com/api/graphql/reference/#querycivariables + x-stackQL-graphQL: + id: gitlab.ci.ci_variables.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.ciVariables.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.ciVariables.pageInfo.endCursor + terminateOnJsonPath: $.data.ciVariables.pageInfo.hasNextPage + query: 'query { ciVariables(first: 100{{ .cursor }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { description hidden id key masked protected raw value variable_type: variableType } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: sort + in: query + required: false + description: Sort order of results. + schema: + type: string + enum: + - KEY_ASC + - KEY_DESC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + ciVariables: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the variable. + hidden: + type: boolean + description: Indicates whether the variable is hidden. + id: + type: string + description: ID of the variable. + key: + type: string + description: Name of the variable. + masked: + type: boolean + description: Indicates whether the variable is masked. + protected: + type: boolean + description: Indicates whether the variable is protected. + raw: + type: boolean + description: Indicates whether the variable is raw. + value: + type: string + description: Value of the variable. + variable_type: + type: string + enum: + - ENV_VAR + - FILE + description: Type of the variable. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_ci_variables&method=list: + post: + operationId: group_ci_variables_list + summary: List of the group's CI/CD variables. + description: List of the group's CI/CD variables. Generated from the GitLab GraphQL schema field Group.ciVariables (connection of CiGroupVariable nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.ciVariables' + url: https://docs.gitlab.com/api/graphql/reference/#groupcivariables + x-stackQL-graphQL: + id: gitlab.ci.group_ci_variables.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.ciVariables.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.ciVariables.pageInfo.endCursor + terminateOnJsonPath: $.data.group.ciVariables.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { ciVariables(first: 100{{ .cursor }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { description environment_scope: environmentScope hidden id key masked protected raw value variable_type: variableType } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: sort + in: query + required: false + description: Sort order of results. + schema: + type: string + enum: + - KEY_ASC + - KEY_DESC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + ciVariables: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the variable. + environment_scope: + type: string + description: Scope defining the environments that can use the variable. + hidden: + type: boolean + description: Indicates whether the variable is hidden. + id: + type: string + description: ID of the variable. + key: + type: string + description: Name of the variable. + masked: + type: boolean + description: Indicates whether the variable is masked. + protected: + type: boolean + description: Indicates whether the variable is protected. + raw: + type: boolean + description: Indicates whether the variable is raw. + value: + type: string + description: Value of the variable. + variable_type: + type: string + enum: + - ENV_VAR + - FILE + description: Type of the variable. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_pipeline_analytics&method=get: + post: + operationId: group_pipeline_analytics_get + summary: Pipeline analytics. + description: Pipeline analytics. Generated from the GitLab GraphQL schema field Group.pipelineAnalytics (PipelineAnalytics). + externalDocs: + description: 'GitLab GraphQL API reference: Group.pipelineAnalytics' + url: https://docs.gitlab.com/api/graphql/reference/#grouppipelineanalytics + x-stackQL-graphQL: + id: gitlab.ci.group_pipeline_analytics.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { pipelineAnalytics{{ if or .from_time .ref .source .to_time }}({{ if .from_time }}, fromTime: "{{ .from_time }}"{{ end }}{{ if .ref }}, ref: "{{ .ref }}"{{ end }}{{ if .source }}, source: {{ .source }}{{ end }}{{ if .to_time }}, toTime: "{{ .to_time }}"{{ end }}){{ end }} { month_pipelines_labels: monthPipelinesLabels month_pipelines_successful: monthPipelinesSuccessful month_pipelines_totals: monthPipelinesTotals pipeline_times_labels: pipelineTimesLabels pipeline_times_values: pipelineTimesValues week_pipelines_labels: weekPipelinesLabels week_pipelines_successful: weekPipelinesSuccessful week_pipelines_totals: weekPipelinesTotals year_pipelines_labels: yearPipelinesLabels year_pipelines_successful: yearPipelinesSuccessful year_pipelines_totals: yearPipelinesTotals } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: from_time + in: query + required: false + description: Start of the requested time (in UTC). Defaults to the pipelines started in the past week. + schema: + type: string + - name: ref + in: query + required: false + description: Branch that triggered the pipeline. + schema: + type: string + - name: source + in: query + required: false + description: Source of the pipeline. + schema: + type: string + enum: + - UNKNOWN + - PUSH + - WEB + - TRIGGER + - SCHEDULE + - API + - EXTERNAL + - PIPELINE + - CHAT + - WEBIDE + - MERGE_REQUEST_EVENT + - EXTERNAL_PULL_REQUEST_EVENT + - PARENT_PIPELINE + - ONDEMAND_DAST_SCAN + - ONDEMAND_DAST_VALIDATION + - SECURITY_ORCHESTRATION_POLICY + - CONTAINER_REGISTRY_PUSH + - DUO_WORKFLOW + - PIPELINE_EXECUTION_POLICY_SCHEDULE + - DEPENDENCY_MANAGEMENT_SECURITY_UPDATE + - name: to_time + in: query + required: false + description: End of the requested time (in UTC). Defaults to the pipelines started before the current date. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + pipelineAnalytics: + type: object + properties: + month_pipelines_labels: + type: array + items: + type: string + description: Labels for the monthly pipeline count. Only available for projects. + month_pipelines_successful: + type: array + items: + type: integer + description: Total monthly successful pipeline count. Only available for projects. + month_pipelines_totals: + type: array + items: + type: integer + description: Total monthly pipeline count. Only available for projects. + pipeline_times_labels: + type: array + items: + type: string + description: Pipeline times labels. Only available for projects. + pipeline_times_values: + type: array + items: + type: integer + description: Pipeline times. Only available for projects. + week_pipelines_labels: + type: array + items: + type: string + description: Labels for the weekly pipeline count. Only available for projects. + week_pipelines_successful: + type: array + items: + type: integer + description: Total weekly successful pipeline count. Only available for projects. + week_pipelines_totals: + type: array + items: + type: integer + description: Total weekly pipeline count. Only available for projects. + year_pipelines_labels: + type: array + items: + type: string + description: Labels for the yearly pipeline count. Only available for projects. + year_pipelines_successful: + type: array + items: + type: integer + description: Total yearly successful pipeline count. Only available for projects. + year_pipelines_totals: + type: array + items: + type: integer + description: Total yearly pipeline count. Only available for projects. + /api/graphql?resource=group_pipeline_execution_policies&method=list: + post: + operationId: group_pipeline_execution_policies_list + summary: Pipeline Execution Policies of the namespace. + description: Pipeline Execution Policies of the namespace. Generated from the GitLab GraphQL schema field Group.pipelineExecutionPolicies (connection of PipelineExecutionPolicy nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.pipelineExecutionPolicies' + url: https://docs.gitlab.com/api/graphql/reference/#grouppipelineexecutionpolicies + x-stackQL-graphQL: + id: gitlab.ci.group_pipeline_execution_policies.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.pipelineExecutionPolicies.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.pipelineExecutionPolicies.pageInfo.endCursor + terminateOnJsonPath: $.data.group.pipelineExecutionPolicies.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { pipelineExecutionPolicies(first: 100{{ .cursor }}{{ if .deduplicate_policies }}, deduplicatePolicies: {{ .deduplicate_policies }}{{ end }}{{ if .include_unscoped }}, includeUnscoped: {{ .include_unscoped }}{{ end }}{{ if .relationship }}, relationship: {{ .relationship }}{{ end }}) { nodes { description edit_path: editPath enabled name policy_blob_file_path: policyBlobFilePath updated_at: updatedAt warnings yaml } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: deduplicate_policies + in: query + required: false + description: Remove duplicate policies when the same policy is applied via multiple routes. + schema: + type: boolean + - name: include_unscoped + in: query + required: false + description: Filter policies that are scoped to the project. + schema: + type: boolean + - name: relationship + in: query + required: false + description: Filter policies by the given policy relationship. Default is DIRECT. + schema: + type: string + enum: + - DIRECT + - INHERITED + - INHERITED_ONLY + - DESCENDANT + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + pipelineExecutionPolicies: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the policy. + edit_path: + type: string + description: URL of policy edit page. + enabled: + type: boolean + description: Indicates whether the policy is enabled. + name: + type: string + description: Name of the policy. + policy_blob_file_path: + type: string + description: Path to the policy file in the project. + updated_at: + type: string + description: Timestamp of when the policy YAML was last updated. + warnings: + type: array + items: + type: string + description: Warnings associated with the policy. + yaml: + type: string + description: YAML definition of the policy. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_pipeline_execution_schedule_policies&method=list: + post: + operationId: group_pipeline_execution_schedule_policies_list + summary: Pipeline Execution Schedule Policies of the namespace. + description: Pipeline Execution Schedule Policies of the namespace. Generated from the GitLab GraphQL schema field Group.pipelineExecutionSchedulePolicies (connection of PipelineExecutionSchedulePolicy nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.pipelineExecutionSchedulePolicies' + url: https://docs.gitlab.com/api/graphql/reference/#grouppipelineexecutionschedulepolicies + x-stackQL-graphQL: + id: gitlab.ci.group_pipeline_execution_schedule_policies.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.pipelineExecutionSchedulePolicies.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.pipelineExecutionSchedulePolicies.pageInfo.endCursor + terminateOnJsonPath: $.data.group.pipelineExecutionSchedulePolicies.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { pipelineExecutionSchedulePolicies(first: 100{{ .cursor }}{{ if .deduplicate_policies }}, deduplicatePolicies: {{ .deduplicate_policies }}{{ end }}{{ if .include_unscoped }}, includeUnscoped: {{ .include_unscoped }}{{ end }}{{ if .relationship }}, relationship: {{ .relationship }}{{ end }}) { nodes { description edit_path: editPath enabled name policy_blob_file_path: policyBlobFilePath updated_at: updatedAt warnings yaml } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: deduplicate_policies + in: query + required: false + description: Remove duplicate policies when the same policy is applied via multiple routes. + schema: + type: boolean + - name: include_unscoped + in: query + required: false + description: Filter policies that are scoped to the project. + schema: + type: boolean + - name: relationship + in: query + required: false + description: Filter policies by the given policy relationship. Default is DIRECT. + schema: + type: string + enum: + - DIRECT + - INHERITED + - INHERITED_ONLY + - DESCENDANT + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + pipelineExecutionSchedulePolicies: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the policy. + edit_path: + type: string + description: URL of policy edit page. + enabled: + type: boolean + description: Indicates whether the policy is enabled. + name: + type: string + description: Name of the policy. + policy_blob_file_path: + type: string + description: Path to the policy file in the project. + updated_at: + type: string + description: Timestamp of when the policy YAML was last updated. + warnings: + type: array + items: + type: string + description: Warnings associated with the policy. + yaml: + type: string + description: YAML definition of the policy. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_runners&method=list: + post: + operationId: group_runners_list + summary: Find runners visible to the current user. + description: Find runners visible to the current user. Generated from the GitLab GraphQL schema field Group.runners (connection of CiRunner nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.runners' + url: https://docs.gitlab.com/api/graphql/reference/#grouprunners + x-stackQL-graphQL: + id: gitlab.ci.group_runners.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.runners.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.runners.pageInfo.endCursor + terminateOnJsonPath: $.data.group.runners.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { runners(first: 100{{ .cursor }}{{ if .creator_id }}, creatorId: "{{ .creator_id }}"{{ end }}{{ if .creator_username }}, creatorUsername: "{{ .creator_username }}"{{ end }}{{ if .membership }}, membership: {{ .membership }}{{ end }}{{ if .paused }}, paused: {{ .paused }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .status }}, status: {{ .status }}{{ end }}{{ if .type }}, type: {{ .type }}{{ end }}{{ if .upgrade_status }}, upgradeStatus: {{ .upgrade_status }}{{ end }}{{ if .version_prefix }}, versionPrefix: "{{ .version_prefix }}"{{ end }}) { nodes { access_level: accessLevel admin_url: adminUrl contacted_at: contactedAt created_at: createdAt creation_state: creationState description edit_admin_url: editAdminUrl id job_execution_status: jobExecutionStatus locked maintenance_note: maintenanceNote maximum_timeout: maximumTimeout paused private_projects_minutes_cost_factor: privateProjectsMinutesCostFactor public_projects_minutes_cost_factor: publicProjectsMinutesCostFactor register_admin_url: registerAdminUrl run_untagged: runUntagged runner_type: runnerType short_sha: shortSha status tag_list: tagList token_expires_at: tokenExpiresAt upgrade_status: upgradeStatus } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: creator_id + in: query + required: false + description: Filter runners by creator ID. + schema: + type: string + - name: creator_username + in: query + required: false + description: Filter runners by creator username. + schema: + type: string + - name: membership + in: query + required: false + description: Control which runners to include in the results. + schema: + type: string + enum: + - DIRECT + - DESCENDANTS + - name: paused + in: query + required: false + description: Filter runners by `paused` (true) or `active` (false) status. + schema: + type: boolean + - name: search + in: query + required: false + description: Filter by full token or partial text in description field. + schema: + type: string + - name: sort + in: query + required: false + description: Sort order of results. + schema: + type: string + enum: + - CONTACTED_ASC + - CONTACTED_DESC + - CREATED_ASC + - CREATED_DESC + - TOKEN_EXPIRES_AT_ASC + - TOKEN_EXPIRES_AT_DESC + - name: status + in: query + required: false + description: Filter runners by status. + schema: + type: string + enum: + - ONLINE + - OFFLINE + - STALE + - NEVER_CONTACTED + - name: type + in: query + required: false + description: Filter runners by type. + schema: + type: string + enum: + - INSTANCE_TYPE + - GROUP_TYPE + - PROJECT_TYPE + - name: upgrade_status + in: query + required: false + description: Filter by upgrade status. + schema: + type: string + enum: + - INVALID + - NOT_AVAILABLE + - AVAILABLE + - RECOMMENDED + - name: version_prefix + in: query + required: false + description: Filter runners by version. Runners that contain runner managers with the version at the start of the search term are returned. For example, the search term '14.' returns runner managers with versions '14.11.1' and '14.2.3'. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + runners: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + access_level: + type: string + enum: + - NOT_PROTECTED + - REF_PROTECTED + description: Access level of the runner. + admin_url: + type: string + description: Admin URL of the runner. Only available for administrators. + contacted_at: + type: string + description: Timestamp of last contact from the runner. + created_at: + type: string + description: Timestamp of creation of the runner. + creation_state: + type: string + enum: + - STARTED + - FINISHED + description: Runner creation state. Used to determine if a runner has been registered and has contacted the GitLab instance. + description: + type: string + description: Description of the runner. + edit_admin_url: + type: string + description: Admin form URL of the runner. Only available for administrators. + id: + type: string + description: ID of the runner. + job_execution_status: + type: string + enum: + - IDLE + - ACTIVE + description: Job execution status of the runner. + locked: + type: boolean + description: Indicates the runner is locked. + maintenance_note: + type: string + description: Runner's maintenance notes. + maximum_timeout: + type: integer + description: Maximum timeout (in seconds) for jobs processed by the runner. + paused: + type: boolean + description: Indicates the runner is paused and not available to run jobs. + private_projects_minutes_cost_factor: + type: number + description: Private projects' "compute cost factor" associated with the runner (GitLab.com only). + public_projects_minutes_cost_factor: + type: number + description: Public projects' "compute cost factor" associated with the runner (GitLab.com only). + register_admin_url: + type: string + description: URL of the temporary registration page of the runner. Only available before the runner is registered. Only available for administrators. + run_untagged: + type: boolean + description: Indicates the runner is able to run untagged jobs. + runner_type: + type: string + enum: + - INSTANCE_TYPE + - GROUP_TYPE + - PROJECT_TYPE + description: Type of the runner. + short_sha: + type: string + description: First eight characters of the runner's token used to authenticate new job requests. Used as the runner's unique ID. + status: + type: string + enum: + - ONLINE + - OFFLINE + - STALE + - NEVER_CONTACTED + description: Status of the runner. + tag_list: + type: array + items: + type: string + description: Tags associated with the runner. + token_expires_at: + type: string + description: Runner token expiration time. + upgrade_status: + type: string + enum: + - INVALID + - NOT_AVAILABLE + - AVAILABLE + - RECOMMENDED + description: Availability of upgrades for the runner. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_api_fuzzing_ci_configuration&method=get: + post: + operationId: project_api_fuzzing_ci_configuration_get + summary: 'API fuzzing configuration for the project. ' + description: API fuzzing configuration for the project. Generated from the GitLab GraphQL schema field Project.apiFuzzingCiConfiguration (ApiFuzzingCiConfiguration). + externalDocs: + description: 'GitLab GraphQL API reference: Project.apiFuzzingCiConfiguration' + url: https://docs.gitlab.com/api/graphql/reference/#projectapifuzzingciconfiguration + x-stackQL-graphQL: + id: gitlab.ci.project_api_fuzzing_ci_configuration.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { apiFuzzingCiConfiguration { scan_modes: scanModes } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + apiFuzzingCiConfiguration: + type: object + properties: + scan_modes: + type: array + items: + type: string + enum: + - HAR + - OPENAPI + - POSTMAN + description: All available scan modes. + /api/graphql?resource=project_ci_access_authorized_agents&method=list: + post: + operationId: project_ci_access_authorized_agents_list + summary: Authorized cluster agents for the project through ci_access keyword. + description: Authorized cluster agents for the project through ci_access keyword. Generated from the GitLab GraphQL schema field Project.ciAccessAuthorizedAgents (connection of ClusterAgentAuthorizationCiAccess nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.ciAccessAuthorizedAgents' + url: https://docs.gitlab.com/api/graphql/reference/#projectciaccessauthorizedagents + x-stackQL-graphQL: + id: gitlab.ci.project_ci_access_authorized_agents.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.ciAccessAuthorizedAgents.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.ciAccessAuthorizedAgents.pageInfo.endCursor + terminateOnJsonPath: $.data.project.ciAccessAuthorizedAgents.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { ciAccessAuthorizedAgents(first: 100{{ .cursor }}) { nodes { config } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + ciAccessAuthorizedAgents: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + config: + type: string + description: Configuration for the authorized project. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_ci_cd_settings&method=get: + post: + operationId: project_ci_cd_settings_get + summary: CI/CD settings for the project. + description: CI/CD settings for the project. Generated from the GitLab GraphQL schema field Project.ciCdSettings (ProjectCiCdSetting). + externalDocs: + description: 'GitLab GraphQL API reference: Project.ciCdSettings' + url: https://docs.gitlab.com/api/graphql/reference/#projectcicdsettings + x-stackQL-graphQL: + id: gitlab.ci.project_ci_cd_settings.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { ciCdSettings { cross_project_push_for_job_token_allowed: crossProjectPushForJobTokenAllowed display_pipeline_variables: displayPipelineVariables group_runners_enabled: groupRunnersEnabled inbound_job_token_scope_enabled: inboundJobTokenScopeEnabled job_token_scope_enabled: jobTokenScopeEnabled keep_latest_artifact: keepLatestArtifact max_pipelines_per_merge_train: maxPipelinesPerMergeTrain merge_pipelines_enabled: mergePipelinesEnabled merge_train_enforcement: mergeTrainEnforcement merge_trains_enabled: mergeTrainsEnabled merge_trains_skip_train_allowed: mergeTrainsSkipTrainAllowed pipeline_variables_minimum_override_role: pipelineVariablesMinimumOverrideRole push_repository_for_job_token_allowed: pushRepositoryForJobTokenAllowed resource_group_default_process_mode: resourceGroupDefaultProcessMode skip_branch_pipelines_for_mrs: skipBranchPipelinesForMrs project { id full_path: fullPath name } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + ciCdSettings: + type: object + properties: + cross_project_push_for_job_token_allowed: + type: boolean + description: Indicates the ability to push to this repository using a job token from an allowlisted project + display_pipeline_variables: + type: boolean + description: Indicates whether pipeline variables can be displayed in the UI. + group_runners_enabled: + type: boolean + description: Indicates whether group runners are enabled for the project. + inbound_job_token_scope_enabled: + type: boolean + description: Indicates whether CI/CD job tokens generated in other projects have restricted access to this project. + job_token_scope_enabled: + type: boolean + description: Indicates whether CI/CD job tokens generated in this project have restricted access to other projects. + keep_latest_artifact: + type: boolean + description: Indicates whether the latest artifact should be kept for the project. + max_pipelines_per_merge_train: + type: integer + description: Maximum number of parallel pipelines per merge train. When null, the plan limit applies. + merge_pipelines_enabled: + type: boolean + description: Indicates whether merged results pipelines are enabled. + merge_train_enforcement: + type: string + enum: + - ALLOW_BYPASS + - ENFORCE_FOR_ALL_USERS + - ENFORCE_WITH_OWNER_OVERRIDE + description: Merge train enforcement level for the project. Ignored unless the `merge_train_enforcement` feature flag is enabled. + merge_trains_enabled: + type: boolean + description: Whether merge trains are enabled. + merge_trains_skip_train_allowed: + type: boolean + description: Whether merge immediately is allowed for merge trains. + pipeline_variables_minimum_override_role: + type: string + description: Minimum role required to set variables when creating a pipeline or running a job. + push_repository_for_job_token_allowed: + type: boolean + description: Indicates the ability to push to the original project repository using a job token + resource_group_default_process_mode: + type: string + enum: + - UNORDERED + - OLDEST_FIRST + - NEWEST_FIRST + - NEWEST_READY_FIRST + description: Default process mode for resource groups. + skip_branch_pipelines_for_mrs: + type: boolean + description: Indicates whether branch pipelines are skipped if a merge request is open. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=project_ci_job_token_scope&method=get: + post: + operationId: project_ci_job_token_scope_get + summary: The CI Job Tokens scope of access. + description: The CI Job Tokens scope of access. Generated from the GitLab GraphQL schema field Project.ciJobTokenScope (CiJobTokenScopeType). + externalDocs: + description: 'GitLab GraphQL API reference: Project.ciJobTokenScope' + url: https://docs.gitlab.com/api/graphql/reference/#projectcijobtokenscope + x-stackQL-graphQL: + id: gitlab.ci.project_ci_job_token_scope.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { ciJobTokenScope { group_allowlist_autopopulated_ids: groupAllowlistAutopopulatedIds groups_allowlist_count: groupsAllowlistCount inbound_allowlist_autopopulated_ids: inboundAllowlistAutopopulatedIds inbound_allowlist_count: inboundAllowlistCount } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + ciJobTokenScope: + type: object + properties: + group_allowlist_autopopulated_ids: + type: array + items: + type: string + description: List of IDs of groups which have been created by the autopopulation process. + groups_allowlist_count: + type: integer + description: Count of groups that can access the current project by authenticating with a CI/CD job token. The count does not include subgroups. + inbound_allowlist_autopopulated_ids: + type: array + items: + type: string + description: List of IDs of projects which have been created by the autopopulation process. + inbound_allowlist_count: + type: integer + description: Count of projects that can access the current project by authenticating with a CI/CD job token. The count does not include nested projects. + /api/graphql?resource=project_ci_template&method=get: + post: + operationId: project_ci_template_get + summary: Find a single CI/CD template by name. + description: Find a single CI/CD template by name. Generated from the GitLab GraphQL schema field Project.ciTemplate (CiTemplate). + externalDocs: + description: 'GitLab GraphQL API reference: Project.ciTemplate' + url: https://docs.gitlab.com/api/graphql/reference/#projectcitemplate + x-stackQL-graphQL: + id: gitlab.ci.project_ci_template.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { ciTemplate(name: "{{ .name }}") { content name } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: name + in: query + required: true + description: Name of the CI/CD template to search for. Template must be formatted as `Name.gitlab-ci.yml`. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + ciTemplate: + type: object + properties: + content: + type: string + description: Contents of the CI template. + name: + type: string + description: Name of the CI template. + /api/graphql?resource=project_ci_variables&method=list: + post: + operationId: project_ci_variables_list + summary: List of the project's CI/CD variables. + description: List of the project's CI/CD variables. Generated from the GitLab GraphQL schema field Project.ciVariables (connection of CiProjectVariable nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.ciVariables' + url: https://docs.gitlab.com/api/graphql/reference/#projectcivariables + x-stackQL-graphQL: + id: gitlab.ci.project_ci_variables.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.ciVariables.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.ciVariables.pageInfo.endCursor + terminateOnJsonPath: $.data.project.ciVariables.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { ciVariables(first: 100{{ .cursor }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { description environment_scope: environmentScope hidden id key masked protected raw value variable_type: variableType } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: sort + in: query + required: false + description: Sort order of results. + schema: + type: string + enum: + - KEY_ASC + - KEY_DESC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + ciVariables: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the variable. + environment_scope: + type: string + description: Scope defining the environments that can use the variable. + hidden: + type: boolean + description: Indicates whether the variable is hidden. + id: + type: string + description: ID of the variable. + key: + type: string + description: Name of the variable. + masked: + type: boolean + description: Indicates whether the variable is masked. + protected: + type: boolean + description: Indicates whether the variable is protected. + raw: + type: boolean + description: Indicates whether the variable is raw. + value: + type: string + description: Value of the variable. + variable_type: + type: string + enum: + - ENV_VAR + - FILE + description: Type of the variable. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_inherited_ci_variables&method=list: + post: + operationId: project_inherited_ci_variables_list + summary: List of CI/CD variables the project inherited from its parent group and ancestors. + description: List of CI/CD variables the project inherited from its parent group and ancestors. Generated from the GitLab GraphQL schema field Project.inheritedCiVariables (connection of InheritedCiVariable nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.inheritedCiVariables' + url: https://docs.gitlab.com/api/graphql/reference/#projectinheritedcivariables + x-stackQL-graphQL: + id: gitlab.ci.project_inherited_ci_variables.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.inheritedCiVariables.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.inheritedCiVariables.pageInfo.endCursor + terminateOnJsonPath: $.data.project.inheritedCiVariables.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { inheritedCiVariables(first: 100{{ .cursor }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { description environment_scope: environmentScope group_ci_cd_settings_path: groupCiCdSettingsPath group_name: groupName hidden id key masked protected raw variable_type: variableType } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: sort + in: query + required: false + description: Sort variables by the criteria. + schema: + type: string + enum: + - CREATED_DESC + - CREATED_ASC + - KEY_DESC + - KEY_ASC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + inheritedCiVariables: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the variable. + environment_scope: + type: string + description: Scope defining the environments that can use the variable. + group_ci_cd_settings_path: + type: string + description: Indicates the path to the CI/CD settings of the group the variable belongs to. + group_name: + type: string + description: Indicates group the variable belongs to. + hidden: + type: boolean + description: Indicates whether the variable is hidden. + id: + type: string + description: ID of the variable. + key: + type: string + description: Name of the variable. + masked: + type: boolean + description: Indicates whether the variable is masked. + protected: + type: boolean + description: Indicates whether the variable is protected. + raw: + type: boolean + description: Indicates whether the variable is raw. + variable_type: + type: string + enum: + - ENV_VAR + - FILE + description: Type of the variable. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_job&method=get: + post: + operationId: project_job_get + summary: One job belonging to the project, selected by ID. + description: One job belonging to the project, selected by ID. Generated from the GitLab GraphQL schema field Project.job (CiJob). + externalDocs: + description: 'GitLab GraphQL API reference: Project.job' + url: https://docs.gitlab.com/api/graphql/reference/#projectjob + x-stackQL-graphQL: + id: gitlab.ci.project_job.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { job(id: "{{ .id }}") { active allow_failure: allowFailure browse_artifacts_path: browseArtifactsPath can_play_job: canPlayJob cancelable commit_path: commitPath coverage created_at: createdAt created_by_tag: createdByTag duration erased_at: erasedAt exit_code: exitCode failure_message: failureMessage finished_at: finishedAt id kind manual_job: manualJob name play_path: playPath playable queued_at: queuedAt queued_duration: queuedDuration ref_name: refName ref_path: refPath retried retry_path: retryPath retryable scheduled scheduled_at: scheduledAt scheduling_type: schedulingType short_sha: shortSha source started_at: startedAt status stuck tags triggered web_path: webPath project { id full_path: fullPath name } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: id + in: query + required: true + description: ID of the job. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + job: + type: object + properties: + active: + type: boolean + description: Indicates the job is active. + allow_failure: + type: boolean + description: Whether the job is allowed to fail. + browse_artifacts_path: + type: string + description: URL for browsing the artifact's archive. + can_play_job: + type: boolean + description: Indicates whether the current user can play the job. + cancelable: + type: boolean + description: Indicates the job can be canceled. + commit_path: + type: string + description: Path to the commit that triggered the job. + coverage: + type: number + description: Coverage level of the job. + created_at: + type: string + description: When the job was created. + created_by_tag: + type: boolean + description: Whether the job was created by a tag. + duration: + type: integer + description: Duration of the job in seconds. + erased_at: + type: string + description: When the job was erased. + exit_code: + type: integer + description: Exit code of the job. Available for jobs that started after upgrading to GitLab 16.10 and failed with an exit code. + failure_message: + type: string + description: Message on why the job failed. + finished_at: + type: string + description: When a job has finished running. + id: + type: string + description: ID of the job. + kind: + type: string + enum: + - BUILD + - BRIDGE + description: Indicates the type of job. + manual_job: + type: boolean + description: Whether the job has a manual action. + name: + type: string + description: Name of the job. + play_path: + type: string + description: Play path of the job. + playable: + type: boolean + description: Indicates the job can be played. + queued_at: + type: string + description: When the job was enqueued and marked as pending. + queued_duration: + type: string + description: How long the job was enqueued before starting. + ref_name: + type: string + description: Ref name of the job. + ref_path: + type: string + description: Path to the ref. + retried: + type: boolean + description: Indicates that the job has been retried. + retry_path: + type: string + description: Retry path of the job. + retryable: + type: boolean + description: Indicates the job can be retried. + scheduled: + type: boolean + description: Indicates the job is scheduled. + scheduled_at: + type: string + description: Schedule for the build. + scheduling_type: + type: string + description: Type of job scheduling. Value is `dag` if the job uses the `needs` keyword, and `stage` otherwise. + short_sha: + type: string + description: Short SHA1 ID of the commit. + source: + type: string + description: Policy or action that initiated the job. If not set, the value is inherited from the pipeline. + started_at: + type: string + description: When the job was started. + status: + type: string + enum: + - CREATED + - WAITING_FOR_RESOURCE + - PREPARING + - WAITING_FOR_CALLBACK + - PENDING + - RUNNING + - SUCCESS + - FAILED + - CANCELING + - CANCELED + - SKIPPED + - MANUAL + - SCHEDULED + description: Status of the job. + stuck: + type: boolean + description: Indicates the job is stuck. + tags: + type: array + items: + type: string + description: Tags for the current job. + triggered: + type: boolean + description: Whether the job was triggered. + web_path: + type: string + description: Web path of the job. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=project_jobs&method=list: + post: + operationId: project_jobs_list + summary: Jobs of a project. This field can only be resolved for one project in any single request. + description: Jobs of a project. This field can only be resolved for one project in any single request. Generated from the GitLab GraphQL schema field Project.jobs (connection of CiJob nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.jobs' + url: https://docs.gitlab.com/api/graphql/reference/#projectjobs + x-stackQL-graphQL: + id: gitlab.ci.project_jobs.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.jobs.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.jobs.pageInfo.endCursor + terminateOnJsonPath: $.data.project.jobs.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { jobs(first: 100{{ .cursor }}{{ if .kind }}, kind: {{ .kind }}{{ end }}{{ if .pipeline_iid }}, pipelineIid: "{{ .pipeline_iid }}"{{ end }}{{ if .with_artifacts }}, withArtifacts: {{ .with_artifacts }}{{ end }}) { nodes { active allow_failure: allowFailure browse_artifacts_path: browseArtifactsPath can_play_job: canPlayJob cancelable commit_path: commitPath coverage created_at: createdAt created_by_tag: createdByTag duration erased_at: erasedAt exit_code: exitCode failure_message: failureMessage finished_at: finishedAt id kind manual_job: manualJob name play_path: playPath playable queued_at: queuedAt queued_duration: queuedDuration ref_name: refName ref_path: refPath retried retry_path: retryPath retryable scheduled scheduled_at: scheduledAt scheduling_type: schedulingType short_sha: shortSha source started_at: startedAt status stuck tags triggered web_path: webPath project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: kind + in: query + required: false + description: Filter jobs by kind. + schema: + type: string + enum: + - BUILD + - BRIDGE + - name: pipeline_iid + in: query + required: false + description: Filter jobs by the internal pipeline ID (iid). + schema: + type: string + - name: with_artifacts + in: query + required: false + description: Filter by artifacts presence. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + jobs: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + active: + type: boolean + description: Indicates the job is active. + allow_failure: + type: boolean + description: Whether the job is allowed to fail. + browse_artifacts_path: + type: string + description: URL for browsing the artifact's archive. + can_play_job: + type: boolean + description: Indicates whether the current user can play the job. + cancelable: + type: boolean + description: Indicates the job can be canceled. + commit_path: + type: string + description: Path to the commit that triggered the job. + coverage: + type: number + description: Coverage level of the job. + created_at: + type: string + description: When the job was created. + created_by_tag: + type: boolean + description: Whether the job was created by a tag. + duration: + type: integer + description: Duration of the job in seconds. + erased_at: + type: string + description: When the job was erased. + exit_code: + type: integer + description: Exit code of the job. Available for jobs that started after upgrading to GitLab 16.10 and failed with an exit code. + failure_message: + type: string + description: Message on why the job failed. + finished_at: + type: string + description: When a job has finished running. + id: + type: string + description: ID of the job. + kind: + type: string + enum: + - BUILD + - BRIDGE + description: Indicates the type of job. + manual_job: + type: boolean + description: Whether the job has a manual action. + name: + type: string + description: Name of the job. + play_path: + type: string + description: Play path of the job. + playable: + type: boolean + description: Indicates the job can be played. + queued_at: + type: string + description: When the job was enqueued and marked as pending. + queued_duration: + type: string + description: How long the job was enqueued before starting. + ref_name: + type: string + description: Ref name of the job. + ref_path: + type: string + description: Path to the ref. + retried: + type: boolean + description: Indicates that the job has been retried. + retry_path: + type: string + description: Retry path of the job. + retryable: + type: boolean + description: Indicates the job can be retried. + scheduled: + type: boolean + description: Indicates the job is scheduled. + scheduled_at: + type: string + description: Schedule for the build. + scheduling_type: + type: string + description: Type of job scheduling. Value is `dag` if the job uses the `needs` keyword, and `stage` otherwise. + short_sha: + type: string + description: Short SHA1 ID of the commit. + source: + type: string + description: Policy or action that initiated the job. If not set, the value is inherited from the pipeline. + started_at: + type: string + description: When the job was started. + status: + type: string + enum: + - CREATED + - WAITING_FOR_RESOURCE + - PREPARING + - WAITING_FOR_CALLBACK + - PENDING + - RUNNING + - SUCCESS + - FAILED + - CANCELING + - CANCELED + - SKIPPED + - MANUAL + - SCHEDULED + description: Status of the job. + stuck: + type: boolean + description: Indicates the job is stuck. + tags: + type: array + items: + type: string + description: Tags for the current job. + triggered: + type: boolean + description: Whether the job was triggered. + web_path: + type: string + description: Web path of the job. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_pipeline_analytics&method=get: + post: + operationId: project_pipeline_analytics_get + summary: Pipeline analytics. + description: Pipeline analytics. Generated from the GitLab GraphQL schema field Project.pipelineAnalytics (PipelineAnalytics). + externalDocs: + description: 'GitLab GraphQL API reference: Project.pipelineAnalytics' + url: https://docs.gitlab.com/api/graphql/reference/#projectpipelineanalytics + x-stackQL-graphQL: + id: gitlab.ci.project_pipeline_analytics.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { pipelineAnalytics{{ if or .from_time .ref .source .to_time }}({{ if .from_time }}, fromTime: "{{ .from_time }}"{{ end }}{{ if .ref }}, ref: "{{ .ref }}"{{ end }}{{ if .source }}, source: {{ .source }}{{ end }}{{ if .to_time }}, toTime: "{{ .to_time }}"{{ end }}){{ end }} { month_pipelines_labels: monthPipelinesLabels month_pipelines_successful: monthPipelinesSuccessful month_pipelines_totals: monthPipelinesTotals pipeline_times_labels: pipelineTimesLabels pipeline_times_values: pipelineTimesValues week_pipelines_labels: weekPipelinesLabels week_pipelines_successful: weekPipelinesSuccessful week_pipelines_totals: weekPipelinesTotals year_pipelines_labels: yearPipelinesLabels year_pipelines_successful: yearPipelinesSuccessful year_pipelines_totals: yearPipelinesTotals } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: from_time + in: query + required: false + description: Start of the requested time (in UTC). Defaults to the pipelines started in the past week. + schema: + type: string + - name: ref + in: query + required: false + description: Branch that triggered the pipeline. + schema: + type: string + - name: source + in: query + required: false + description: Source of the pipeline. + schema: + type: string + enum: + - UNKNOWN + - PUSH + - WEB + - TRIGGER + - SCHEDULE + - API + - EXTERNAL + - PIPELINE + - CHAT + - WEBIDE + - MERGE_REQUEST_EVENT + - EXTERNAL_PULL_REQUEST_EVENT + - PARENT_PIPELINE + - ONDEMAND_DAST_SCAN + - ONDEMAND_DAST_VALIDATION + - SECURITY_ORCHESTRATION_POLICY + - CONTAINER_REGISTRY_PUSH + - DUO_WORKFLOW + - PIPELINE_EXECUTION_POLICY_SCHEDULE + - DEPENDENCY_MANAGEMENT_SECURITY_UPDATE + - name: to_time + in: query + required: false + description: End of the requested time (in UTC). Defaults to the pipelines started before the current date. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + pipelineAnalytics: + type: object + properties: + month_pipelines_labels: + type: array + items: + type: string + description: Labels for the monthly pipeline count. Only available for projects. + month_pipelines_successful: + type: array + items: + type: integer + description: Total monthly successful pipeline count. Only available for projects. + month_pipelines_totals: + type: array + items: + type: integer + description: Total monthly pipeline count. Only available for projects. + pipeline_times_labels: + type: array + items: + type: string + description: Pipeline times labels. Only available for projects. + pipeline_times_values: + type: array + items: + type: integer + description: Pipeline times. Only available for projects. + week_pipelines_labels: + type: array + items: + type: string + description: Labels for the weekly pipeline count. Only available for projects. + week_pipelines_successful: + type: array + items: + type: integer + description: Total weekly successful pipeline count. Only available for projects. + week_pipelines_totals: + type: array + items: + type: integer + description: Total weekly pipeline count. Only available for projects. + year_pipelines_labels: + type: array + items: + type: string + description: Labels for the yearly pipeline count. Only available for projects. + year_pipelines_successful: + type: array + items: + type: integer + description: Total yearly successful pipeline count. Only available for projects. + year_pipelines_totals: + type: array + items: + type: integer + description: Total yearly pipeline count. Only available for projects. + /api/graphql?resource=project_pipeline_counts&method=get: + post: + operationId: project_pipeline_counts_get + summary: Pipeline counts of the project. + description: Pipeline counts of the project. Generated from the GitLab GraphQL schema field Project.pipelineCounts (PipelineCounts). + externalDocs: + description: 'GitLab GraphQL API reference: Project.pipelineCounts' + url: https://docs.gitlab.com/api/graphql/reference/#projectpipelinecounts + x-stackQL-graphQL: + id: gitlab.ci.project_pipeline_counts.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { pipelineCounts{{ if or .ref .sha .source }}({{ if .ref }}, ref: "{{ .ref }}"{{ end }}{{ if .sha }}, sha: "{{ .sha }}"{{ end }}{{ if .source }}, source: "{{ .source }}"{{ end }}){{ end }} { all_: all finished pending running } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: ref + in: query + required: false + description: Filter pipelines by the ref they are run for. + schema: + type: string + - name: sha + in: query + required: false + description: Filter pipelines by the SHA of the commit they are run for. + schema: + type: string + - name: source + in: query + required: false + description: Filter pipelines by their source. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + pipelineCounts: + type: object + properties: + all_: + type: integer + description: Total number of pipelines for the project. + finished: + type: integer + description: Number of pipelines with scope FINISHED for the project + pending: + type: integer + description: Number of pipelines with scope PENDING for the project + running: + type: integer + description: Number of pipelines with scope RUNNING for the project + /api/graphql?resource=project_pipeline_execution_policies&method=list: + post: + operationId: project_pipeline_execution_policies_list + summary: Pipeline Execution Policies of the project. + description: Pipeline Execution Policies of the project. Generated from the GitLab GraphQL schema field Project.pipelineExecutionPolicies (connection of PipelineExecutionPolicy nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.pipelineExecutionPolicies' + url: https://docs.gitlab.com/api/graphql/reference/#projectpipelineexecutionpolicies + x-stackQL-graphQL: + id: gitlab.ci.project_pipeline_execution_policies.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.pipelineExecutionPolicies.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.pipelineExecutionPolicies.pageInfo.endCursor + terminateOnJsonPath: $.data.project.pipelineExecutionPolicies.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { pipelineExecutionPolicies(first: 100{{ .cursor }}{{ if .deduplicate_policies }}, deduplicatePolicies: {{ .deduplicate_policies }}{{ end }}{{ if .include_unscoped }}, includeUnscoped: {{ .include_unscoped }}{{ end }}{{ if .relationship }}, relationship: {{ .relationship }}{{ end }}) { nodes { description edit_path: editPath enabled name policy_blob_file_path: policyBlobFilePath updated_at: updatedAt warnings yaml } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: deduplicate_policies + in: query + required: false + description: Remove duplicate policies when the same policy is applied via multiple routes. + schema: + type: boolean + - name: include_unscoped + in: query + required: false + description: Filter policies that are scoped to the project. + schema: + type: boolean + - name: relationship + in: query + required: false + description: Filter policies by the given policy relationship. Default is DIRECT. + schema: + type: string + enum: + - DIRECT + - INHERITED + - INHERITED_ONLY + - DESCENDANT + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + pipelineExecutionPolicies: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the policy. + edit_path: + type: string + description: URL of policy edit page. + enabled: + type: boolean + description: Indicates whether the policy is enabled. + name: + type: string + description: Name of the policy. + policy_blob_file_path: + type: string + description: Path to the policy file in the project. + updated_at: + type: string + description: Timestamp of when the policy YAML was last updated. + warnings: + type: array + items: + type: string + description: Warnings associated with the policy. + yaml: + type: string + description: YAML definition of the policy. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_pipeline_execution_schedule_policies&method=list: + post: + operationId: project_pipeline_execution_schedule_policies_list + summary: Pipeline Execution Schedule Policies of the namespace. + description: Pipeline Execution Schedule Policies of the namespace. Generated from the GitLab GraphQL schema field Project.pipelineExecutionSchedulePolicies (connection of PipelineExecutionSchedulePolicy nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.pipelineExecutionSchedulePolicies' + url: https://docs.gitlab.com/api/graphql/reference/#projectpipelineexecutionschedulepolicies + x-stackQL-graphQL: + id: gitlab.ci.project_pipeline_execution_schedule_policies.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.pipelineExecutionSchedulePolicies.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.pipelineExecutionSchedulePolicies.pageInfo.endCursor + terminateOnJsonPath: $.data.project.pipelineExecutionSchedulePolicies.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { pipelineExecutionSchedulePolicies(first: 100{{ .cursor }}{{ if .deduplicate_policies }}, deduplicatePolicies: {{ .deduplicate_policies }}{{ end }}{{ if .include_unscoped }}, includeUnscoped: {{ .include_unscoped }}{{ end }}{{ if .relationship }}, relationship: {{ .relationship }}{{ end }}) { nodes { description edit_path: editPath enabled name policy_blob_file_path: policyBlobFilePath updated_at: updatedAt warnings yaml } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: deduplicate_policies + in: query + required: false + description: Remove duplicate policies when the same policy is applied via multiple routes. + schema: + type: boolean + - name: include_unscoped + in: query + required: false + description: Filter policies that are scoped to the project. + schema: + type: boolean + - name: relationship + in: query + required: false + description: Filter policies by the given policy relationship. Default is DIRECT. + schema: + type: string + enum: + - DIRECT + - INHERITED + - INHERITED_ONLY + - DESCENDANT + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + pipelineExecutionSchedulePolicies: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the policy. + edit_path: + type: string + description: URL of policy edit page. + enabled: + type: boolean + description: Indicates whether the policy is enabled. + name: + type: string + description: Name of the policy. + policy_blob_file_path: + type: string + description: Path to the policy file in the project. + updated_at: + type: string + description: Timestamp of when the policy YAML was last updated. + warnings: + type: array + items: + type: string + description: Warnings associated with the policy. + yaml: + type: string + description: YAML definition of the policy. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_pipeline_schedule_status_counts&method=get: + post: + operationId: project_pipeline_schedule_status_counts_get + summary: Counts of pipeline schedules by status. + description: Counts of pipeline schedules by status. Generated from the GitLab GraphQL schema field Project.pipelineScheduleStatusCounts (PipelineScheduleStatusCount). + externalDocs: + description: 'GitLab GraphQL API reference: Project.pipelineScheduleStatusCounts' + url: https://docs.gitlab.com/api/graphql/reference/#projectpipelineschedulestatuscounts + x-stackQL-graphQL: + id: gitlab.ci.project_pipeline_schedule_status_counts.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { pipelineScheduleStatusCounts { active inactive total } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + pipelineScheduleStatusCounts: + type: object + properties: + active: + type: integer + description: Number of active pipeline schedules. + inactive: + type: integer + description: Number of inactive pipeline schedules. + total: + type: integer + description: Total number of pipeline schedules. + /api/graphql?resource=project_pipeline_schedules&method=list: + post: + operationId: project_pipeline_schedules_list + summary: Pipeline schedules of the project. This field can only be resolved for one project per request. + description: Pipeline schedules of the project. This field can only be resolved for one project per request. Generated from the GitLab GraphQL schema field Project.pipelineSchedules (connection of PipelineSchedule nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.pipelineSchedules' + url: https://docs.gitlab.com/api/graphql/reference/#projectpipelineschedules + x-stackQL-graphQL: + id: gitlab.ci.project_pipeline_schedules.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.pipelineSchedules.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.pipelineSchedules.pageInfo.endCursor + terminateOnJsonPath: $.data.project.pipelineSchedules.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { pipelineSchedules(first: 100{{ .cursor }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .status }}, status: {{ .status }}{{ end }}) { nodes { active created_at: createdAt cron cron_timezone: cronTimezone description edit_path: editPath for_tag: forTag id next_run_at: nextRunAt real_next_run: realNextRun ref ref_for_display: refForDisplay ref_path: refPath updated_at: updatedAt project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: sort + in: query + required: false + description: List pipeline schedules by sort order. Default is `id_desc`. + schema: + type: string + enum: + - ID_DESC + - ID_ASC + - DESCRIPTION_DESC + - DESCRIPTION_ASC + - REF_DESC + - REF_ASC + - NEXT_RUN_AT_DESC + - NEXT_RUN_AT_ASC + - CREATED_AT_DESC + - CREATED_AT_ASC + - UPDATED_AT_DESC + - UPDATED_AT_ASC + - name: status + in: query + required: false + description: Filter pipeline schedules by active status. + schema: + type: string + enum: + - ACTIVE + - INACTIVE + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + pipelineSchedules: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + active: + type: boolean + description: Indicates if the pipeline schedule is active. + created_at: + type: string + description: Timestamp of when the pipeline schedule was created. + cron: + type: string + description: Cron notation for the schedule. + cron_timezone: + type: string + description: Timezone for the pipeline schedule. + description: + type: string + description: Description of the pipeline schedule. + edit_path: + type: string + description: Edit path of the pipeline schedule. + for_tag: + type: boolean + description: Indicates if a pipelines schedule belongs to a tag. + id: + type: string + description: ID of the pipeline schedule. + next_run_at: + type: string + description: Time when the next pipeline will run. + real_next_run: + type: string + description: Time when the next pipeline will run. + ref: + type: string + description: Ref of the pipeline schedule. + ref_for_display: + type: string + description: Git ref for the pipeline schedule. + ref_path: + type: string + description: Path to the ref that triggered the pipeline. + updated_at: + type: string + description: Timestamp of when the pipeline schedule was last updated. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_pipeline&method=get: + post: + operationId: project_pipeline_get + summary: Pipeline of the project. If no arguments are provided, returns the latest pipeline for the head commit on the default branch + description: Pipeline of the project. If no arguments are provided, returns the latest pipeline for the head commit on the default branch Generated from the GitLab GraphQL schema field Project.pipeline (Pipeline). + externalDocs: + description: 'GitLab GraphQL API reference: Project.pipeline' + url: https://docs.gitlab.com/api/graphql/reference/#projectpipeline + x-stackQL-graphQL: + id: gitlab.ci.project_pipeline.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { pipeline{{ if or .id .iid .sha }}({{ if .id }}, id: "{{ .id }}"{{ end }}{{ if .iid }}, iid: "{{ .iid }}"{{ end }}{{ if .sha }}, sha: "{{ .sha }}"{{ end }}){{ end }} { active before_sha: beforeSha cancelable child commit_path: commitPath committed_at: committedAt complete compute_minutes: computeMinutes config_source: configSource coverage created_at: createdAt duration failed_jobs_count: failedJobsCount failure_reason: failureReason finished_at: finishedAt has_manual_actions: hasManualActions has_scheduled_actions: hasScheduledActions id iid latest merge_request_event_type: mergeRequestEventType name path queued_duration: queuedDuration ref ref_path: refPath ref_text: refText retryable sha source started_at: startedAt status stuck total_jobs: totalJobs trigger triggered_by_path: triggeredByPath troubleshoot_job_with_ai: troubleshootJobWithAi type updated_at: updatedAt uses_needs: usesNeeds warnings yaml_error_messages: yamlErrorMessages yaml_errors: yamlErrors user { id username name } project { id full_path: fullPath name } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: id + in: query + required: false + description: Global ID of the Pipeline. For example, "gid://gitlab/Ci::Pipeline/314". + schema: + type: string + - name: iid + in: query + required: false + description: IID of the Pipeline. For example, "1". + schema: + type: string + - name: sha + in: query + required: false + description: SHA of the Pipeline. For example, "dyd0f15ay83993f5ab66k927w28673882x99100b". + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + pipeline: + type: object + properties: + active: + type: boolean + description: Indicates if the pipeline is active. + before_sha: + type: string + description: Base SHA of the source branch. + cancelable: + type: boolean + description: Specifies if a pipeline can be canceled. + child: + type: boolean + description: If the pipeline is a child or not. + commit_path: + type: string + description: Path to the commit that triggered the pipeline. + committed_at: + type: string + description: Timestamp of the pipeline's commit. + complete: + type: boolean + description: Indicates if a pipeline is complete. + compute_minutes: + type: number + description: Total minutes consumed by the pipeline. + config_source: + type: string + enum: + - UNKNOWN_SOURCE + - REPOSITORY_SOURCE + - AUTO_DEVOPS_SOURCE + - WEBIDE_SOURCE + - REMOTE_SOURCE + - EXTERNAL_PROJECT_SOURCE + - BRIDGE_SOURCE + - PARAMETER_SOURCE + - COMPLIANCE_SOURCE + - SECURITY_POLICIES_DEFAULT_SOURCE + - PIPELINE_EXECUTION_POLICY_FORCED + - SECURITY_SCAN_PROFILES_SOURCE + description: Configuration source of the pipeline (UNKNOWN_SOURCE, REPOSITORY_SOURCE, AUTO_DEVOPS_SOURCE, WEBIDE_SOURCE, REMOTE_SOURCE, EXTERNAL_PROJECT_SOURCE, BRIDGE_SOURCE, PARAMETER_SOURCE, COMPLIANCE_SOURCE, SECURITY_POLICIES_DEFAULT_SOURCE, PIPELINE_EXECUTION_POLICY_FORCED, SECURITY_SCAN_PROFILES_SOURCE) + coverage: + type: number + description: Coverage percentage. + created_at: + type: string + description: Timestamp of the pipeline's creation. + duration: + type: integer + description: Duration of the pipeline in seconds. + failed_jobs_count: + type: integer + description: Number of failed jobs in the pipeline, including trigger jobs and external jobs. + failure_reason: + type: string + description: Reason why the pipeline failed. + finished_at: + type: string + description: Timestamp of the pipeline's completion. + has_manual_actions: + type: boolean + description: Indicates if the pipeline has manual actions. + has_scheduled_actions: + type: boolean + description: Indicates if the pipeline has scheduled actions. + id: + type: string + description: ID of the pipeline. + iid: + type: string + description: Internal ID of the pipeline. + latest: + type: boolean + description: If the pipeline is the latest one or not. + merge_request_event_type: + type: string + enum: + - MERGED_RESULT + - DETACHED + - MERGE_TRAIN + description: Event type of the pipeline associated with a merge request. + name: + type: string + description: Name of the pipeline. + path: + type: string + description: Relative path to the pipeline's page. + queued_duration: + type: string + description: How long the pipeline was queued before starting. + ref: + type: string + description: Reference to the branch from which the pipeline was triggered. + ref_path: + type: string + description: Reference path to the branch from which the pipeline was triggered. + ref_text: + type: string + description: Reference text from the presenter. + retryable: + type: boolean + description: Specifies if a pipeline's jobs can be retried. + sha: + type: string + description: SHA of the pipeline's commit. + source: + type: string + description: Source of the pipeline. + started_at: + type: string + description: Timestamp when the pipeline was started. + status: + type: string + enum: + - CREATED + - WAITING_FOR_RESOURCE + - PREPARING + - WAITING_FOR_CALLBACK + - PENDING + - RUNNING + - FAILED + - SUCCESS + - CANCELING + - CANCELED + - SKIPPED + - MANUAL + - SCHEDULED + description: Status of the pipeline (CREATED, WAITING_FOR_RESOURCE, PREPARING, WAITING_FOR_CALLBACK, PENDING, RUNNING, FAILED, SUCCESS, CANCELED, CANCELING, SKIPPED, MANUAL, SCHEDULED) + stuck: + type: boolean + description: If the pipeline is stuck. + total_jobs: + type: integer + description: Total number of jobs in the pipeline. + trigger: + type: boolean + description: If the pipeline was created by a Trigger request. + triggered_by_path: + type: string + description: Path that triggered the pipeline. + troubleshoot_job_with_ai: + type: boolean + description: If the user can troubleshoot jobs of a pipeline. + type: + type: string + description: Type of the pipeline. + updated_at: + type: string + description: Timestamp of the pipeline's last activity. + uses_needs: + type: boolean + description: Indicates if the pipeline has jobs with `needs` dependencies. + warnings: + type: boolean + description: Indicates if a pipeline has warnings. + yaml_error_messages: + type: string + description: Pipeline YAML errors. + yaml_errors: + type: boolean + description: If the pipeline has YAML errors. + user: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=project_pipelines&method=list: + post: + operationId: project_pipelines_list + summary: Pipelines of the project. + description: Pipelines of the project. Generated from the GitLab GraphQL schema field Project.pipelines (connection of Pipeline nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.pipelines' + url: https://docs.gitlab.com/api/graphql/reference/#projectpipelines + x-stackQL-graphQL: + id: gitlab.ci.project_pipelines.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.pipelines.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.pipelines.pageInfo.endCursor + terminateOnJsonPath: $.data.project.pipelines.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { pipelines(first: 100{{ .cursor }}{{ if .ref }}, ref: "{{ .ref }}"{{ end }}{{ if .ref_type }}, refType: {{ .ref_type }}{{ end }}{{ if .scope }}, scope: {{ .scope }}{{ end }}{{ if .sha }}, sha: "{{ .sha }}"{{ end }}{{ if .source }}, source: "{{ .source }}"{{ end }}{{ if .status }}, status: {{ .status }}{{ end }}{{ if .updated_after }}, updatedAfter: "{{ .updated_after }}"{{ end }}{{ if .updated_before }}, updatedBefore: "{{ .updated_before }}"{{ end }}{{ if .username }}, username: "{{ .username }}"{{ end }}) { nodes { active before_sha: beforeSha cancelable child commit_path: commitPath committed_at: committedAt complete compute_minutes: computeMinutes config_source: configSource coverage created_at: createdAt duration failed_jobs_count: failedJobsCount failure_reason: failureReason finished_at: finishedAt has_manual_actions: hasManualActions has_scheduled_actions: hasScheduledActions id iid latest merge_request_event_type: mergeRequestEventType name path queued_duration: queuedDuration ref ref_path: refPath ref_text: refText retryable sha source started_at: startedAt status stuck total_jobs: totalJobs trigger triggered_by_path: triggeredByPath troubleshoot_job_with_ai: troubleshootJobWithAi type updated_at: updatedAt uses_needs: usesNeeds warnings yaml_error_messages: yamlErrorMessages yaml_errors: yamlErrors user { id username name } project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: ref + in: query + required: false + description: Filter pipelines by the ref they are run for. + schema: + type: string + - name: ref_type + in: query + required: false + description: Type of ref. + schema: + type: string + enum: + - HEADS + - TAGS + - name: scope + in: query + required: false + description: Filter pipelines by scope. + schema: + type: string + enum: + - RUNNING + - PENDING + - FINISHED + - BRANCHES + - TAGS + - name: sha + in: query + required: false + description: Filter pipelines by the sha of the commit they are run for. + schema: + type: string + - name: source + in: query + required: false + description: Filter pipelines by their source. + schema: + type: string + - name: status + in: query + required: false + description: Filter pipelines by their status. + schema: + type: string + enum: + - CREATED + - WAITING_FOR_RESOURCE + - PREPARING + - WAITING_FOR_CALLBACK + - PENDING + - RUNNING + - FAILED + - SUCCESS + - CANCELING + - CANCELED + - SKIPPED + - MANUAL + - SCHEDULED + - name: updated_after + in: query + required: false + description: Pipelines updated after the date. + schema: + type: string + - name: updated_before + in: query + required: false + description: Pipelines updated before the date. + schema: + type: string + - name: username + in: query + required: false + description: Filter pipelines by the user that triggered the pipeline. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + pipelines: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + active: + type: boolean + description: Indicates if the pipeline is active. + before_sha: + type: string + description: Base SHA of the source branch. + cancelable: + type: boolean + description: Specifies if a pipeline can be canceled. + child: + type: boolean + description: If the pipeline is a child or not. + commit_path: + type: string + description: Path to the commit that triggered the pipeline. + committed_at: + type: string + description: Timestamp of the pipeline's commit. + complete: + type: boolean + description: Indicates if a pipeline is complete. + compute_minutes: + type: number + description: Total minutes consumed by the pipeline. + config_source: + type: string + enum: + - UNKNOWN_SOURCE + - REPOSITORY_SOURCE + - AUTO_DEVOPS_SOURCE + - WEBIDE_SOURCE + - REMOTE_SOURCE + - EXTERNAL_PROJECT_SOURCE + - BRIDGE_SOURCE + - PARAMETER_SOURCE + - COMPLIANCE_SOURCE + - SECURITY_POLICIES_DEFAULT_SOURCE + - PIPELINE_EXECUTION_POLICY_FORCED + - SECURITY_SCAN_PROFILES_SOURCE + description: Configuration source of the pipeline (UNKNOWN_SOURCE, REPOSITORY_SOURCE, AUTO_DEVOPS_SOURCE, WEBIDE_SOURCE, REMOTE_SOURCE, EXTERNAL_PROJECT_SOURCE, BRIDGE_SOURCE, PARAMETER_SOURCE, COMPLIANCE_SOURCE, SECURITY_POLICIES_DEFAULT_SOURCE, PIPELINE_EXECUTION_POLICY_FORCED, SECURITY_SCAN_PROFILES_SOURCE) + coverage: + type: number + description: Coverage percentage. + created_at: + type: string + description: Timestamp of the pipeline's creation. + duration: + type: integer + description: Duration of the pipeline in seconds. + failed_jobs_count: + type: integer + description: Number of failed jobs in the pipeline, including trigger jobs and external jobs. + failure_reason: + type: string + description: Reason why the pipeline failed. + finished_at: + type: string + description: Timestamp of the pipeline's completion. + has_manual_actions: + type: boolean + description: Indicates if the pipeline has manual actions. + has_scheduled_actions: + type: boolean + description: Indicates if the pipeline has scheduled actions. + id: + type: string + description: ID of the pipeline. + iid: + type: string + description: Internal ID of the pipeline. + latest: + type: boolean + description: If the pipeline is the latest one or not. + merge_request_event_type: + type: string + enum: + - MERGED_RESULT + - DETACHED + - MERGE_TRAIN + description: Event type of the pipeline associated with a merge request. + name: + type: string + description: Name of the pipeline. + path: + type: string + description: Relative path to the pipeline's page. + queued_duration: + type: string + description: How long the pipeline was queued before starting. + ref: + type: string + description: Reference to the branch from which the pipeline was triggered. + ref_path: + type: string + description: Reference path to the branch from which the pipeline was triggered. + ref_text: + type: string + description: Reference text from the presenter. + retryable: + type: boolean + description: Specifies if a pipeline's jobs can be retried. + sha: + type: string + description: SHA of the pipeline's commit. + source: + type: string + description: Source of the pipeline. + started_at: + type: string + description: Timestamp when the pipeline was started. + status: + type: string + enum: + - CREATED + - WAITING_FOR_RESOURCE + - PREPARING + - WAITING_FOR_CALLBACK + - PENDING + - RUNNING + - FAILED + - SUCCESS + - CANCELING + - CANCELED + - SKIPPED + - MANUAL + - SCHEDULED + description: Status of the pipeline (CREATED, WAITING_FOR_RESOURCE, PREPARING, WAITING_FOR_CALLBACK, PENDING, RUNNING, FAILED, SUCCESS, CANCELED, CANCELING, SKIPPED, MANUAL, SCHEDULED) + stuck: + type: boolean + description: If the pipeline is stuck. + total_jobs: + type: integer + description: Total number of jobs in the pipeline. + trigger: + type: boolean + description: If the pipeline was created by a Trigger request. + triggered_by_path: + type: string + description: Path that triggered the pipeline. + troubleshoot_job_with_ai: + type: boolean + description: If the user can troubleshoot jobs of a pipeline. + type: + type: string + description: Type of the pipeline. + updated_at: + type: string + description: Timestamp of the pipeline's last activity. + uses_needs: + type: boolean + description: Indicates if the pipeline has jobs with `needs` dependencies. + warnings: + type: boolean + description: Indicates if a pipeline has warnings. + yaml_error_messages: + type: string + description: Pipeline YAML errors. + yaml_errors: + type: boolean + description: If the pipeline has YAML errors. + user: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_runners&method=list: + post: + operationId: project_runners_list + summary: Find runners visible to the current user. + description: Find runners visible to the current user. Generated from the GitLab GraphQL schema field Project.runners (connection of CiRunner nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.runners' + url: https://docs.gitlab.com/api/graphql/reference/#projectrunners + x-stackQL-graphQL: + id: gitlab.ci.project_runners.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.runners.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.runners.pageInfo.endCursor + terminateOnJsonPath: $.data.project.runners.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { runners(first: 100{{ .cursor }}{{ if .creator_id }}, creatorId: "{{ .creator_id }}"{{ end }}{{ if .creator_username }}, creatorUsername: "{{ .creator_username }}"{{ end }}{{ if .paused }}, paused: {{ .paused }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .status }}, status: {{ .status }}{{ end }}{{ if .type }}, type: {{ .type }}{{ end }}{{ if .upgrade_status }}, upgradeStatus: {{ .upgrade_status }}{{ end }}{{ if .version_prefix }}, versionPrefix: "{{ .version_prefix }}"{{ end }}) { nodes { access_level: accessLevel admin_url: adminUrl contacted_at: contactedAt created_at: createdAt creation_state: creationState description edit_admin_url: editAdminUrl id job_execution_status: jobExecutionStatus locked maintenance_note: maintenanceNote maximum_timeout: maximumTimeout paused private_projects_minutes_cost_factor: privateProjectsMinutesCostFactor public_projects_minutes_cost_factor: publicProjectsMinutesCostFactor register_admin_url: registerAdminUrl run_untagged: runUntagged runner_type: runnerType short_sha: shortSha status tag_list: tagList token_expires_at: tokenExpiresAt upgrade_status: upgradeStatus } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: creator_id + in: query + required: false + description: Filter runners by creator ID. + schema: + type: string + - name: creator_username + in: query + required: false + description: Filter runners by creator username. + schema: + type: string + - name: paused + in: query + required: false + description: Filter runners by `paused` (true) or `active` (false) status. + schema: + type: boolean + - name: search + in: query + required: false + description: Filter by full token or partial text in description field. + schema: + type: string + - name: sort + in: query + required: false + description: Sort order of results. + schema: + type: string + enum: + - CONTACTED_ASC + - CONTACTED_DESC + - CREATED_ASC + - CREATED_DESC + - TOKEN_EXPIRES_AT_ASC + - TOKEN_EXPIRES_AT_DESC + - name: status + in: query + required: false + description: Filter runners by status. + schema: + type: string + enum: + - ONLINE + - OFFLINE + - STALE + - NEVER_CONTACTED + - name: type + in: query + required: false + description: Filter runners by type. + schema: + type: string + enum: + - INSTANCE_TYPE + - GROUP_TYPE + - PROJECT_TYPE + - name: upgrade_status + in: query + required: false + description: Filter by upgrade status. + schema: + type: string + enum: + - INVALID + - NOT_AVAILABLE + - AVAILABLE + - RECOMMENDED + - name: version_prefix + in: query + required: false + description: Filter runners by version. Runners that contain runner managers with the version at the start of the search term are returned. For example, the search term '14.' returns runner managers with versions '14.11.1' and '14.2.3'. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + runners: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + access_level: + type: string + enum: + - NOT_PROTECTED + - REF_PROTECTED + description: Access level of the runner. + admin_url: + type: string + description: Admin URL of the runner. Only available for administrators. + contacted_at: + type: string + description: Timestamp of last contact from the runner. + created_at: + type: string + description: Timestamp of creation of the runner. + creation_state: + type: string + enum: + - STARTED + - FINISHED + description: Runner creation state. Used to determine if a runner has been registered and has contacted the GitLab instance. + description: + type: string + description: Description of the runner. + edit_admin_url: + type: string + description: Admin form URL of the runner. Only available for administrators. + id: + type: string + description: ID of the runner. + job_execution_status: + type: string + enum: + - IDLE + - ACTIVE + description: Job execution status of the runner. + locked: + type: boolean + description: Indicates the runner is locked. + maintenance_note: + type: string + description: Runner's maintenance notes. + maximum_timeout: + type: integer + description: Maximum timeout (in seconds) for jobs processed by the runner. + paused: + type: boolean + description: Indicates the runner is paused and not available to run jobs. + private_projects_minutes_cost_factor: + type: number + description: Private projects' "compute cost factor" associated with the runner (GitLab.com only). + public_projects_minutes_cost_factor: + type: number + description: Public projects' "compute cost factor" associated with the runner (GitLab.com only). + register_admin_url: + type: string + description: URL of the temporary registration page of the runner. Only available before the runner is registered. Only available for administrators. + run_untagged: + type: boolean + description: Indicates the runner is able to run untagged jobs. + runner_type: + type: string + enum: + - INSTANCE_TYPE + - GROUP_TYPE + - PROJECT_TYPE + description: Type of the runner. + short_sha: + type: string + description: First eight characters of the runner's token used to authenticate new job requests. Used as the runner's unique ID. + status: + type: string + enum: + - ONLINE + - OFFLINE + - STALE + - NEVER_CONTACTED + description: Status of the runner. + tag_list: + type: array + items: + type: string + description: Tags associated with the runner. + token_expires_at: + type: string + description: Runner token expiration time. + upgrade_status: + type: string + enum: + - INVALID + - NOT_AVAILABLE + - AVAILABLE + - RECOMMENDED + description: Availability of upgrades for the runner. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=runner&method=get: + post: + operationId: runner_get + summary: Find a runner. + description: Find a runner. Generated from the GitLab GraphQL schema field Query.runner (CiRunner). + externalDocs: + description: 'GitLab GraphQL API reference: Query.runner' + url: https://docs.gitlab.com/api/graphql/reference/#queryrunner + x-stackQL-graphQL: + id: gitlab.ci.runner.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { runner(id: "{{ .id }}") { access_level: accessLevel admin_url: adminUrl contacted_at: contactedAt created_at: createdAt creation_state: creationState description edit_admin_url: editAdminUrl id job_execution_status: jobExecutionStatus locked maintenance_note: maintenanceNote maximum_timeout: maximumTimeout paused private_projects_minutes_cost_factor: privateProjectsMinutesCostFactor public_projects_minutes_cost_factor: publicProjectsMinutesCostFactor register_admin_url: registerAdminUrl run_untagged: runUntagged runner_type: runnerType short_sha: shortSha status tag_list: tagList token_expires_at: tokenExpiresAt upgrade_status: upgradeStatus } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Runner ID. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + runner: + type: object + properties: + access_level: + type: string + enum: + - NOT_PROTECTED + - REF_PROTECTED + description: Access level of the runner. + admin_url: + type: string + description: Admin URL of the runner. Only available for administrators. + contacted_at: + type: string + description: Timestamp of last contact from the runner. + created_at: + type: string + description: Timestamp of creation of the runner. + creation_state: + type: string + enum: + - STARTED + - FINISHED + description: Runner creation state. Used to determine if a runner has been registered and has contacted the GitLab instance. + description: + type: string + description: Description of the runner. + edit_admin_url: + type: string + description: Admin form URL of the runner. Only available for administrators. + id: + type: string + description: ID of the runner. + job_execution_status: + type: string + enum: + - IDLE + - ACTIVE + description: Job execution status of the runner. + locked: + type: boolean + description: Indicates the runner is locked. + maintenance_note: + type: string + description: Runner's maintenance notes. + maximum_timeout: + type: integer + description: Maximum timeout (in seconds) for jobs processed by the runner. + paused: + type: boolean + description: Indicates the runner is paused and not available to run jobs. + private_projects_minutes_cost_factor: + type: number + description: Private projects' "compute cost factor" associated with the runner (GitLab.com only). + public_projects_minutes_cost_factor: + type: number + description: Public projects' "compute cost factor" associated with the runner (GitLab.com only). + register_admin_url: + type: string + description: URL of the temporary registration page of the runner. Only available before the runner is registered. Only available for administrators. + run_untagged: + type: boolean + description: Indicates the runner is able to run untagged jobs. + runner_type: + type: string + enum: + - INSTANCE_TYPE + - GROUP_TYPE + - PROJECT_TYPE + description: Type of the runner. + short_sha: + type: string + description: First eight characters of the runner's token used to authenticate new job requests. Used as the runner's unique ID. + status: + type: string + enum: + - ONLINE + - OFFLINE + - STALE + - NEVER_CONTACTED + description: Status of the runner. + tag_list: + type: array + items: + type: string + description: Tags associated with the runner. + token_expires_at: + type: string + description: Runner token expiration time. + upgrade_status: + type: string + enum: + - INVALID + - NOT_AVAILABLE + - AVAILABLE + - RECOMMENDED + description: Availability of upgrades for the runner. + /api/graphql?resource=runners&method=list: + post: + operationId: runners_list + summary: Get all runners in the GitLab instance (project and shared). Access is restricted to users with administrator access. + description: Get all runners in the GitLab instance (project and shared). Access is restricted to users with administrator access. Generated from the GitLab GraphQL schema field Query.runners (connection of CiRunner nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.runners' + url: https://docs.gitlab.com/api/graphql/reference/#queryrunners + x-stackQL-graphQL: + id: gitlab.ci.runners.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.runners.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.runners.pageInfo.endCursor + terminateOnJsonPath: $.data.runners.pageInfo.hasNextPage + query: 'query { runners(first: 100{{ .cursor }}{{ if .creator_id }}, creatorId: "{{ .creator_id }}"{{ end }}{{ if .creator_username }}, creatorUsername: "{{ .creator_username }}"{{ end }}{{ if .paused }}, paused: {{ .paused }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .status }}, status: {{ .status }}{{ end }}{{ if .type }}, type: {{ .type }}{{ end }}{{ if .upgrade_status }}, upgradeStatus: {{ .upgrade_status }}{{ end }}{{ if .version_prefix }}, versionPrefix: "{{ .version_prefix }}"{{ end }}) { nodes { access_level: accessLevel admin_url: adminUrl contacted_at: contactedAt created_at: createdAt creation_state: creationState description edit_admin_url: editAdminUrl id job_execution_status: jobExecutionStatus locked maintenance_note: maintenanceNote maximum_timeout: maximumTimeout paused private_projects_minutes_cost_factor: privateProjectsMinutesCostFactor public_projects_minutes_cost_factor: publicProjectsMinutesCostFactor register_admin_url: registerAdminUrl run_untagged: runUntagged runner_type: runnerType short_sha: shortSha status tag_list: tagList token_expires_at: tokenExpiresAt upgrade_status: upgradeStatus } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: creator_id + in: query + required: false + description: Filter runners by creator ID. + schema: + type: string + - name: creator_username + in: query + required: false + description: Filter runners by creator username. + schema: + type: string + - name: paused + in: query + required: false + description: Filter runners by `paused` (true) or `active` (false) status. + schema: + type: boolean + - name: search + in: query + required: false + description: Filter by full token or partial text in description field. + schema: + type: string + - name: sort + in: query + required: false + description: Sort order of results. + schema: + type: string + enum: + - CONTACTED_ASC + - CONTACTED_DESC + - CREATED_ASC + - CREATED_DESC + - TOKEN_EXPIRES_AT_ASC + - TOKEN_EXPIRES_AT_DESC + - name: status + in: query + required: false + description: Filter runners by status. + schema: + type: string + enum: + - ONLINE + - OFFLINE + - STALE + - NEVER_CONTACTED + - name: type + in: query + required: false + description: Filter runners by type. + schema: + type: string + enum: + - INSTANCE_TYPE + - GROUP_TYPE + - PROJECT_TYPE + - name: upgrade_status + in: query + required: false + description: Filter by upgrade status. + schema: + type: string + enum: + - INVALID + - NOT_AVAILABLE + - AVAILABLE + - RECOMMENDED + - name: version_prefix + in: query + required: false + description: Filter runners by version. Runners that contain runner managers with the version at the start of the search term are returned. For example, the search term '14.' returns runner managers with versions '14.11.1' and '14.2.3'. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + runners: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + access_level: + type: string + enum: + - NOT_PROTECTED + - REF_PROTECTED + description: Access level of the runner. + admin_url: + type: string + description: Admin URL of the runner. Only available for administrators. + contacted_at: + type: string + description: Timestamp of last contact from the runner. + created_at: + type: string + description: Timestamp of creation of the runner. + creation_state: + type: string + enum: + - STARTED + - FINISHED + description: Runner creation state. Used to determine if a runner has been registered and has contacted the GitLab instance. + description: + type: string + description: Description of the runner. + edit_admin_url: + type: string + description: Admin form URL of the runner. Only available for administrators. + id: + type: string + description: ID of the runner. + job_execution_status: + type: string + enum: + - IDLE + - ACTIVE + description: Job execution status of the runner. + locked: + type: boolean + description: Indicates the runner is locked. + maintenance_note: + type: string + description: Runner's maintenance notes. + maximum_timeout: + type: integer + description: Maximum timeout (in seconds) for jobs processed by the runner. + paused: + type: boolean + description: Indicates the runner is paused and not available to run jobs. + private_projects_minutes_cost_factor: + type: number + description: Private projects' "compute cost factor" associated with the runner (GitLab.com only). + public_projects_minutes_cost_factor: + type: number + description: Public projects' "compute cost factor" associated with the runner (GitLab.com only). + register_admin_url: + type: string + description: URL of the temporary registration page of the runner. Only available before the runner is registered. Only available for administrators. + run_untagged: + type: boolean + description: Indicates the runner is able to run untagged jobs. + runner_type: + type: string + enum: + - INSTANCE_TYPE + - GROUP_TYPE + - PROJECT_TYPE + description: Type of the runner. + short_sha: + type: string + description: First eight characters of the runner's token used to authenticate new job requests. Used as the runner's unique ID. + status: + type: string + enum: + - ONLINE + - OFFLINE + - STALE + - NEVER_CONTACTED + description: Status of the runner. + tag_list: + type: array + items: + type: string + description: Tags associated with the runner. + token_expires_at: + type: string + description: Runner token expiration time. + upgrade_status: + type: string + enum: + - INVALID + - NOT_AVAILABLE + - AVAILABLE + - RECOMMENDED + description: Availability of upgrades for the runner. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + ci_application_settings: + id: gitlab.ci.ci_application_settings + name: ci_application_settings + title: Ci Application Settings + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=ci_application_settings&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.ciApplicationSettings + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/ci_application_settings/methods/get' + insert: [] + update: [] + delete: [] + ci_dedicated_hosted_runner_filters: + id: gitlab.ci.ci_dedicated_hosted_runner_filters + name: ci_dedicated_hosted_runner_filters + title: Ci Dedicated Hosted Runner Filters + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=ci_dedicated_hosted_runner_filters&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.ciDedicatedHostedRunnerFilters + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/ci_dedicated_hosted_runner_filters/methods/get' + insert: [] + update: [] + delete: [] + ci_dedicated_hosted_runner_usage: + id: gitlab.ci.ci_dedicated_hosted_runner_usage + name: ci_dedicated_hosted_runner_usage + title: Ci Dedicated Hosted Runner Usage + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=ci_dedicated_hosted_runner_usage&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.ciDedicatedHostedRunnerUsage.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/ci_dedicated_hosted_runner_usage/methods/list' + insert: [] + update: [] + delete: [] + ci_minutes_project_monthly_usage: + id: gitlab.ci.ci_minutes_project_monthly_usage + name: ci_minutes_project_monthly_usage + title: Ci Minutes Project Monthly Usage + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=ci_minutes_project_monthly_usage&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.ciMinutesProjectMonthlyUsage.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/ci_minutes_project_monthly_usage/methods/list' + insert: [] + update: [] + delete: [] + ci_minutes_usage: + id: gitlab.ci.ci_minutes_usage + name: ci_minutes_usage + title: Ci Minutes Usage + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=ci_minutes_usage&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.ciMinutesUsage.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/ci_minutes_usage/methods/list' + insert: [] + update: [] + delete: [] + ci_pipeline_stage: + id: gitlab.ci.ci_pipeline_stage + name: ci_pipeline_stage + title: Ci Pipeline Stage + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=ci_pipeline_stage&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.ciPipelineStage + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/ci_pipeline_stage/methods/get' + insert: [] + update: [] + delete: [] + ci_variables: + id: gitlab.ci.ci_variables + name: ci_variables + title: Ci Variables + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=ci_variables&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.ciVariables.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/ci_variables/methods/list' + insert: [] + update: [] + delete: [] + group_ci_variables: + id: gitlab.ci.group_ci_variables + name: group_ci_variables + title: Group Ci Variables + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_ci_variables&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.ciVariables.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_ci_variables/methods/list' + insert: [] + update: [] + delete: [] + group_pipeline_analytics: + id: gitlab.ci.group_pipeline_analytics + name: group_pipeline_analytics + title: Group Pipeline Analytics + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_pipeline_analytics&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.pipelineAnalytics + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_pipeline_analytics/methods/get' + insert: [] + update: [] + delete: [] + group_pipeline_execution_policies: + id: gitlab.ci.group_pipeline_execution_policies + name: group_pipeline_execution_policies + title: Group Pipeline Execution Policies + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_pipeline_execution_policies&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.pipelineExecutionPolicies.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_pipeline_execution_policies/methods/list' + insert: [] + update: [] + delete: [] + group_pipeline_execution_schedule_policies: + id: gitlab.ci.group_pipeline_execution_schedule_policies + name: group_pipeline_execution_schedule_policies + title: Group Pipeline Execution Schedule Policies + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_pipeline_execution_schedule_policies&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.pipelineExecutionSchedulePolicies.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_pipeline_execution_schedule_policies/methods/list' + insert: [] + update: [] + delete: [] + group_runners: + id: gitlab.ci.group_runners + name: group_runners + title: Group Runners + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_runners&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.runners.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_runners/methods/list' + insert: [] + update: [] + delete: [] + project_api_fuzzing_ci_configuration: + id: gitlab.ci.project_api_fuzzing_ci_configuration + name: project_api_fuzzing_ci_configuration + title: Project Api Fuzzing Ci Configuration + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_api_fuzzing_ci_configuration&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.apiFuzzingCiConfiguration + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_api_fuzzing_ci_configuration/methods/get' + insert: [] + update: [] + delete: [] + project_ci_access_authorized_agents: + id: gitlab.ci.project_ci_access_authorized_agents + name: project_ci_access_authorized_agents + title: Project Ci Access Authorized Agents + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_ci_access_authorized_agents&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.ciAccessAuthorizedAgents.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_ci_access_authorized_agents/methods/list' + insert: [] + update: [] + delete: [] + project_ci_cd_settings: + id: gitlab.ci.project_ci_cd_settings + name: project_ci_cd_settings + title: Project Ci Cd Settings + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_ci_cd_settings&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.ciCdSettings + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_ci_cd_settings/methods/get' + insert: [] + update: [] + delete: [] + project_ci_job_token_scope: + id: gitlab.ci.project_ci_job_token_scope + name: project_ci_job_token_scope + title: Project Ci Job Token Scope + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_ci_job_token_scope&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.ciJobTokenScope + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_ci_job_token_scope/methods/get' + insert: [] + update: [] + delete: [] + project_ci_template: + id: gitlab.ci.project_ci_template + name: project_ci_template + title: Project Ci Template + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_ci_template&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.ciTemplate + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_ci_template/methods/get' + insert: [] + update: [] + delete: [] + project_ci_variables: + id: gitlab.ci.project_ci_variables + name: project_ci_variables + title: Project Ci Variables + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_ci_variables&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.ciVariables.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_ci_variables/methods/list' + insert: [] + update: [] + delete: [] + project_inherited_ci_variables: + id: gitlab.ci.project_inherited_ci_variables + name: project_inherited_ci_variables + title: Project Inherited Ci Variables + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_inherited_ci_variables&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.inheritedCiVariables.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_inherited_ci_variables/methods/list' + insert: [] + update: [] + delete: [] + project_job: + id: gitlab.ci.project_job + name: project_job + title: Project Job + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_job&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.job + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_job/methods/get' + insert: [] + update: [] + delete: [] + project_jobs: + id: gitlab.ci.project_jobs + name: project_jobs + title: Project Jobs + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_jobs&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.jobs.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_jobs/methods/list' + insert: [] + update: [] + delete: [] + project_pipeline_analytics: + id: gitlab.ci.project_pipeline_analytics + name: project_pipeline_analytics + title: Project Pipeline Analytics + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_pipeline_analytics&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.pipelineAnalytics + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_pipeline_analytics/methods/get' + insert: [] + update: [] + delete: [] + project_pipeline_counts: + id: gitlab.ci.project_pipeline_counts + name: project_pipeline_counts + title: Project Pipeline Counts + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_pipeline_counts&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.pipelineCounts + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_pipeline_counts/methods/get' + insert: [] + update: [] + delete: [] + project_pipeline_execution_policies: + id: gitlab.ci.project_pipeline_execution_policies + name: project_pipeline_execution_policies + title: Project Pipeline Execution Policies + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_pipeline_execution_policies&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.pipelineExecutionPolicies.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_pipeline_execution_policies/methods/list' + insert: [] + update: [] + delete: [] + project_pipeline_execution_schedule_policies: + id: gitlab.ci.project_pipeline_execution_schedule_policies + name: project_pipeline_execution_schedule_policies + title: Project Pipeline Execution Schedule Policies + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_pipeline_execution_schedule_policies&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.pipelineExecutionSchedulePolicies.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_pipeline_execution_schedule_policies/methods/list' + insert: [] + update: [] + delete: [] + project_pipeline_schedule_status_counts: + id: gitlab.ci.project_pipeline_schedule_status_counts + name: project_pipeline_schedule_status_counts + title: Project Pipeline Schedule Status Counts + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_pipeline_schedule_status_counts&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.pipelineScheduleStatusCounts + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_pipeline_schedule_status_counts/methods/get' + insert: [] + update: [] + delete: [] + project_pipeline_schedules: + id: gitlab.ci.project_pipeline_schedules + name: project_pipeline_schedules + title: Project Pipeline Schedules + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_pipeline_schedules&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.pipelineSchedules.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_pipeline_schedules/methods/list' + insert: [] + update: [] + delete: [] + project_pipeline: + id: gitlab.ci.project_pipeline + name: project_pipeline + title: Project Pipeline + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_pipeline&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.pipeline + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_pipeline/methods/get' + insert: [] + update: [] + delete: [] + project_pipelines: + id: gitlab.ci.project_pipelines + name: project_pipelines + title: Project Pipelines + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_pipelines&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.pipelines.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_pipelines/methods/list' + insert: [] + update: [] + delete: [] + project_runners: + id: gitlab.ci.project_runners + name: project_runners + title: Project Runners + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_runners&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.runners.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_runners/methods/list' + insert: [] + update: [] + delete: [] + runner: + id: gitlab.ci.runner + name: runner + title: Runner + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=runner&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.runner + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/runner/methods/get' + insert: [] + update: [] + delete: [] + runners: + id: gitlab.ci.runners + name: runners + title: Runners + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=runners&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.runners.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/runners/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/duo.yaml b/providers/src/gitlab/v00.00.00000/services/duo.yaml new file mode 100644 index 00000000..6b24b515 --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/duo.yaml @@ -0,0 +1,501 @@ +openapi: 3.0.3 +info: + title: duo API + description: 'GitLab Duo - AI chat context presets and agentic workflows. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=ai_chat_context_presets&method=get: + post: + operationId: ai_chat_context_presets_get + summary: Get available GitLab Duo Chat context presets for the current user for a specific URL + description: Get available GitLab Duo Chat context presets for the current user for a specific URL Generated from the GitLab GraphQL schema field Query.aiChatContextPresets (ContextPreset). + externalDocs: + description: 'GitLab GraphQL API reference: Query.aiChatContextPresets' + url: https://docs.gitlab.com/api/graphql/reference/#queryaichatcontextpresets + x-stackQL-graphQL: + id: gitlab.duo.ai_chat_context_presets.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { aiChatContextPresets{{ if or .project_id .question_count .resource_id .url }}({{ if .project_id }}, projectId: "{{ .project_id }}"{{ end }}{{ if .question_count }}, questionCount: {{ .question_count }}{{ end }}{{ if .resource_id }}, resourceId: "{{ .resource_id }}"{{ end }}{{ if .url }}, url: "{{ .url }}"{{ end }}){{ end }} { ai_resource_data: aiResourceData questions } }' + x-stackql-protocol: graphql + parameters: + - name: project_id + in: query + required: false + description: Global ID of the project the user is acting on. + schema: + type: string + - name: question_count + in: query + required: false + description: Number of questions for the default screen. + schema: + type: integer + - name: resource_id + in: query + required: false + description: Global ID of the resource from the current page. + schema: + type: string + - name: url + in: query + required: false + description: URL of the page the user is currently on. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + aiChatContextPresets: + type: object + properties: + ai_resource_data: + type: string + description: Serialized representation of the AI resource in the current context. + questions: + type: array + items: + type: string + description: Array of questions that the user can ask GitLab Duo Chat from the current page. + /api/graphql?resource=project_duo_workflow_events&method=list: + post: + operationId: project_duo_workflow_events_list + summary: Checkpoints for GitLab Duo Agent Platform flows, for all users (remote flows only). Returns only the latest checkpoint by default. Use `first` and `after` to page through history. + description: Checkpoints for GitLab Duo Agent Platform flows, for all users (remote flows only). Returns only the latest checkpoint by default. Use `first` and `after` to page through history. Generated from the GitLab GraphQL schema field Project.duoWorkflowEvents (connection of DuoWorkflowEvent nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.duoWorkflowEvents' + url: https://docs.gitlab.com/api/graphql/reference/#projectduoworkflowevents + x-stackQL-graphQL: + id: gitlab.duo.project_duo_workflow_events.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.duoWorkflowEvents.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.duoWorkflowEvents.pageInfo.endCursor + terminateOnJsonPath: $.data.project.duoWorkflowEvents.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { duoWorkflowEvents(first: 100{{ .cursor }}, workflowId: "{{ .workflow_id }}") { nodes { compressed_checkpoint: compressedCheckpoint errors metadata parent_ts: parentTs thread_ts: threadTs workflow_definition: workflowDefinition workflow_goal: workflowGoal workflow_status: workflowStatus } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: workflow_id + in: query + required: true + description: Array of request IDs to fetch. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + duoWorkflowEvents: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + compressed_checkpoint: + type: string + description: Checkpoint of the event, zlib-compressed and Base64-encoded. + errors: + type: array + items: + type: string + description: Message errors. + metadata: + type: string + description: Metadata associated with the event. + parent_ts: + type: string + description: UUID v7 timestamp identifier of the parent message for branched conversations or responses. + thread_ts: + type: string + description: UUID v7 timestamp identifier for the conversation thread/session in LangGraph state management. + workflow_definition: + type: string + description: GitLab Duo Agent Platform flow type based on its capabilities. + workflow_goal: + type: string + description: Goal of the session. + workflow_status: + type: string + enum: + - CREATED + - RUNNING + - PAUSED + - INPUT_REQUIRED + - PLAN_APPROVAL_REQUIRED + - TOOL_CALL_APPROVAL_REQUIRED + - STOPPED + - FAILED + - FINISHED + description: Status of the session. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_duo_workflow_workflows&method=list: + post: + operationId: project_duo_workflow_workflows_list + summary: GitLab Duo Agent Platform flows for a project, for all users (remote flows only). + description: GitLab Duo Agent Platform flows for a project, for all users (remote flows only). Generated from the GitLab GraphQL schema field Project.duoWorkflowWorkflows (connection of DuoWorkflow nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.duoWorkflowWorkflows' + url: https://docs.gitlab.com/api/graphql/reference/#projectduoworkflowworkflows + x-stackQL-graphQL: + id: gitlab.duo.project_duo_workflow_workflows.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.duoWorkflowWorkflows.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.duoWorkflowWorkflows.pageInfo.endCursor + terminateOnJsonPath: $.data.project.duoWorkflowWorkflows.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { duoWorkflowWorkflows(first: 100{{ .cursor }}{{ if .environment }}, environment: {{ .environment }}{{ end }}{{ if .project_path }}, projectPath: "{{ .project_path }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .status_group }}, statusGroup: {{ .status_group }}{{ end }}{{ if .type }}, type: "{{ .type }}"{{ end }}{{ if .updated_after }}, updatedAfter: "{{ .updated_after }}"{{ end }}{{ if .workflow_id }}, workflowId: "{{ .workflow_id }}"{{ end }}) { nodes { agent_privileges_names: agentPrivilegesNames all_executor_logs_urls: allExecutorLogsUrls allow_agent_to_request_user: allowAgentToRequestUser archived created_at: createdAt environment goal human_status: humanStatus id incremental_checkpoints_enabled: incrementalCheckpointsEnabled last_executor_logs_url: lastExecutorLogsUrl mcp_enabled: mcpEnabled name namespace_id: namespaceId pre_approved_agent_privileges_names: preApprovedAgentPrivilegesNames project_id: projectId resource_iid: resourceIid resource_web_url: resourceWebUrl stalled status status_group: statusGroup status_name: statusName summary title tool_call_approvals: toolCallApprovals updated_at: updatedAt user_id: userId web_url: webUrl workflow_definition: workflowDefinition user { id username name } namespace { id full_path: fullPath name } project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: environment + in: query + required: false + description: Environment, for example, IDE or web. + schema: + type: string + enum: + - CHAT_PARTIAL + - CHAT + - AMBIENT + - name: project_path + in: query + required: false + description: Full path of the project that contains the flows. + schema: + type: string + - name: search + in: query + required: false + description: Flow title or goal to search for. + schema: + type: string + - name: sort + in: query + required: false + description: Sort flows by the criteria. + schema: + type: string + enum: + - STATUS_ASC + - STATUS_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: status_group + in: query + required: false + description: Status group to filter flow sessions by. + schema: + type: string + enum: + - ACTIVE + - PAUSED + - AWAITING_INPUT + - COMPLETED + - FAILED + - CANCELED + - name: type + in: query + required: false + description: Type of flow to filter by (for example, software_development or foundational_chat_agents). + schema: + type: string + - name: updated_after + in: query + required: false + description: Filters flows updated after a given date. + schema: + type: string + - name: workflow_id + in: query + required: false + description: Flow ID to filter by. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + duoWorkflowWorkflows: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + agent_privileges_names: + type: array + items: + type: string + description: Privileges granted to the agent during execution. + all_executor_logs_urls: + type: array + items: + type: string + description: List of all the executor logs for the workflow. + allow_agent_to_request_user: + type: boolean + description: Allow the agent to request user input. + archived: + type: boolean + description: Archived due to retention policy. + created_at: + type: string + description: Timestamp of when the session was created. + environment: + type: string + enum: + - CHAT_PARTIAL + - CHAT + - AMBIENT + description: Environment, like IDE or web. + goal: + type: string + description: Goal of the session. + human_status: + type: string + description: Human-readable status of the session. + id: + type: string + description: ID of the session. + incremental_checkpoints_enabled: + type: boolean + description: Indicates incremental checkpoints were enabled for the session at creation. + last_executor_logs_url: + type: string + description: URL to the latest executor logs of the workflow. + mcp_enabled: + type: boolean + description: Has MCP been enabled for the namespace. + name: + type: string + description: Name or title of the object. + namespace_id: + type: string + description: ID of the namespace. + pre_approved_agent_privileges_names: + type: array + items: + type: string + description: Privileges pre-approved for the agent during execution. + project_id: + type: string + description: ID of the project. + resource_iid: + type: integer + description: IID of the associated resource (issue or merge request). + resource_web_url: + type: string + description: Web URL of the associated resource (issue or merge request). + stalled: + type: boolean + description: Workflow got created but has no checkpoints. + status: + type: string + enum: + - CREATED + - RUNNING + - PAUSED + - INPUT_REQUIRED + - PLAN_APPROVAL_REQUIRED + - TOOL_CALL_APPROVAL_REQUIRED + - STOPPED + - FAILED + - FINISHED + description: Status of the session. + status_group: + type: string + enum: + - ACTIVE + - PAUSED + - AWAITING_INPUT + - COMPLETED + - FAILED + - CANCELED + description: Status group of the flow session. + status_name: + type: string + description: Status name of the session. + summary: + type: string + description: Summary of the session. + title: + type: string + description: Title of the session. + tool_call_approvals: + type: string + description: Tools approval per session policy. + updated_at: + type: string + description: Timestamp of when the session was last updated. + user_id: + type: string + description: ID of the user. + web_url: + type: string + description: URL of the object. + workflow_definition: + type: string + description: GitLab Duo Agent Platform flow type based on its capabilities. + user: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + ai_chat_context_presets: + id: gitlab.duo.ai_chat_context_presets + name: ai_chat_context_presets + title: Ai Chat Context Presets + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=ai_chat_context_presets&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.aiChatContextPresets + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/ai_chat_context_presets/methods/get' + insert: [] + update: [] + delete: [] + project_duo_workflow_events: + id: gitlab.duo.project_duo_workflow_events + name: project_duo_workflow_events + title: Project Duo Workflow Events + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_duo_workflow_events&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.duoWorkflowEvents.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_duo_workflow_events/methods/list' + insert: [] + update: [] + delete: [] + project_duo_workflow_workflows: + id: gitlab.duo.project_duo_workflow_workflows + name: project_duo_workflow_workflows + title: Project Duo Workflow Workflows + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_duo_workflow_workflows&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.duoWorkflowWorkflows.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_duo_workflow_workflows/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/groups.yaml b/providers/src/gitlab/v00.00.00000/services/groups.yaml new file mode 100644 index 00000000..39c5d2b5 --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/groups.yaml @@ -0,0 +1,5061 @@ +openapi: 3.0.3 +info: + title: groups API + description: 'Groups, namespaces and group-scoped resources - group details, descendant and shared groups, members, epics, iterations, contacts and organizations. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=group_cluster_agents&method=list: + post: + operationId: group_cluster_agents_list + summary: Cluster agents associated with projects in the group and its subgroups. + description: Cluster agents associated with projects in the group and its subgroups. Generated from the GitLab GraphQL schema field Group.clusterAgents (connection of ClusterAgent nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.clusterAgents' + url: https://docs.gitlab.com/api/graphql/reference/#groupclusteragents + x-stackQL-graphQL: + id: gitlab.groups.group_cluster_agents.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.clusterAgents.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.clusterAgents.pageInfo.endCursor + terminateOnJsonPath: $.data.group.clusterAgents.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { clusterAgents(first: 100{{ .cursor }}{{ if .has_remote_development_enabled }}, hasRemoteDevelopmentEnabled: {{ .has_remote_development_enabled }}{{ end }}{{ if .has_vulnerabilities }}, hasVulnerabilities: {{ .has_vulnerabilities }}{{ end }}{{ if .has_workspaces_agent_config }}, hasWorkspacesAgentConfig: {{ .has_workspaces_agent_config }}{{ end }}) { nodes { created_at: createdAt id is_receptive: isReceptive name updated_at: updatedAt web_path: webPath project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: has_remote_development_enabled + in: query + required: false + description: Returns only cluster agents which have been enabled with the remote development feature. + schema: + type: boolean + - name: has_vulnerabilities + in: query + required: false + description: Returns only cluster agents which have vulnerabilities. + schema: + type: boolean + - name: has_workspaces_agent_config + in: query + required: false + description: Returns only cluster agents which have an associated workspaces agent config. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + clusterAgents: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp the cluster agent was created. + id: + type: string + description: ID of the cluster agent. + is_receptive: + type: boolean + description: Whether the cluster agent is receptive or not. + name: + type: string + description: Name of the cluster agent. + updated_at: + type: string + description: Timestamp the cluster agent was updated. + web_path: + type: string + description: Web path of the cluster agent. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_contact_state_counts&method=get: + post: + operationId: group_contact_state_counts_get + summary: Counts of contacts by state for the group. + description: Counts of contacts by state for the group. Generated from the GitLab GraphQL schema field Group.contactStateCounts (ContactStateCounts). + externalDocs: + description: 'GitLab GraphQL API reference: Group.contactStateCounts' + url: https://docs.gitlab.com/api/graphql/reference/#groupcontactstatecounts + x-stackQL-graphQL: + id: gitlab.groups.group_contact_state_counts.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { contactStateCounts{{ if or .search .state }}({{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}){{ end }} { active all_: all inactive } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: search + in: query + required: false + description: Search term to find contacts with. + schema: + type: string + - name: state + in: query + required: false + description: State of the contacts to search for. + schema: + type: string + enum: + - all + - active + - inactive + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + contactStateCounts: + type: object + properties: + active: + type: integer + description: Number of contacts with state `ACTIVE` + all_: + type: integer + description: Number of contacts with state `ALL` + inactive: + type: integer + description: Number of contacts with state `INACTIVE` + /api/graphql?resource=group_contacts&method=list: + post: + operationId: group_contacts_list + summary: Find contacts of this group. + description: Find contacts of this group. Generated from the GitLab GraphQL schema field Group.contacts (connection of CustomerRelationsContact nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.contacts' + url: https://docs.gitlab.com/api/graphql/reference/#groupcontacts + x-stackQL-graphQL: + id: gitlab.groups.group_contacts.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.contacts.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.contacts.pageInfo.endCursor + terminateOnJsonPath: $.data.group.contacts.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { contacts(first: 100{{ .cursor }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}) { nodes { active created_at: createdAt description email first_name: firstName id last_name: lastName phone updated_at: updatedAt } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: search + in: query + required: false + description: Search term to find contacts with. + schema: + type: string + - name: sort + in: query + required: false + description: Criteria to sort contacts by. + schema: + type: string + enum: + - FIRST_NAME_ASC + - FIRST_NAME_DESC + - LAST_NAME_ASC + - LAST_NAME_DESC + - EMAIL_ASC + - EMAIL_DESC + - PHONE_ASC + - PHONE_DESC + - DESCRIPTION_ASC + - DESCRIPTION_DESC + - ORGANIZATION_ASC + - ORGANIZATION_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: state + in: query + required: false + description: State of the contacts to search for. + schema: + type: string + enum: + - all + - active + - inactive + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + contacts: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + active: + type: boolean + description: State of the contact. + created_at: + type: string + description: Timestamp the contact was created. + description: + type: string + description: Description of or notes for the contact. + email: + type: string + description: Email address of the contact. + first_name: + type: string + description: First name of the contact. + id: + type: string + description: Internal ID of the contact. + last_name: + type: string + description: Last name of the contact. + phone: + type: string + description: Phone number of the contact. + updated_at: + type: string + description: Timestamp the contact was last updated. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_custom_emoji&method=list: + post: + operationId: group_custom_emoji_list + summary: Custom emoji in this namespace. + description: Custom emoji in this namespace. Generated from the GitLab GraphQL schema field Group.customEmoji (connection of CustomEmoji nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.customEmoji' + url: https://docs.gitlab.com/api/graphql/reference/#groupcustomemoji + x-stackQL-graphQL: + id: gitlab.groups.group_custom_emoji.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.customEmoji.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.customEmoji.pageInfo.endCursor + terminateOnJsonPath: $.data.group.customEmoji.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { customEmoji(first: 100{{ .cursor }}{{ if .include_ancestor_groups }}, includeAncestorGroups: {{ .include_ancestor_groups }}{{ end }}) { nodes { created_at: createdAt external id name url } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: include_ancestor_groups + in: query + required: false + description: Includes custom emoji from parent groups. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + customEmoji: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of when the custom emoji was created. + external: + type: boolean + description: Whether the emoji is an external link. + id: + type: string + description: ID of the emoji. + name: + type: string + description: Name of the emoji. + url: + type: string + description: Link to file of the emoji. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_descendant_groups&method=list: + post: + operationId: group_descendant_groups_list + summary: List of descendant groups of this group. + description: List of descendant groups of this group. Generated from the GitLab GraphQL schema field Group.descendantGroups (connection of Group nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.descendantGroups' + url: https://docs.gitlab.com/api/graphql/reference/#groupdescendantgroups + x-stackQL-graphQL: + id: gitlab.groups.group_descendant_groups.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.descendantGroups.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.descendantGroups.pageInfo.endCursor + terminateOnJsonPath: $.data.group.descendantGroups.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { descendantGroups(first: 100{{ .cursor }}{{ if .archived }}, archived: {{ .archived }}{{ end }}{{ if .include_parent_descendants }}, includeParentDescendants: {{ .include_parent_descendants }}{{ end }}{{ if .owned }}, owned: {{ .owned }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { actual_repository_size_limit: actualRepositorySizeLimit actual_size_limit: actualSizeLimit additional_purchased_storage_size: additionalPurchasedStorageSize admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_stale_runner_pruning: allowStaleRunnerPruning archived auto_devops_enabled: autoDevopsEnabled avatar_url: avatarUrl billable_members_count: billableMembersCount contains_locked_projects: containsLockedProjects created_at: createdAt cross_project_pipeline_available: crossProjectPipelineAvailable dependency_proxy_blob_count: dependencyProxyBlobCount dependency_proxy_image_count: dependencyProxyImageCount dependency_proxy_image_prefix: dependencyProxyImagePrefix dependency_proxy_total_size: dependencyProxyTotalSize dependency_proxy_total_size_bytes: dependencyProxyTotalSizeBytes descendant_groups_count: descendantGroupsCount description edit_path: editPath emails_disabled: emailsDisabled emails_enabled: emailsEnabled enforce_free_user_cap: enforceFreeUserCap full_name: fullName full_path: fullPath group_members_count: groupMembersCount id is_linked_to_subscription: isLinkedToSubscription is_self_archived: isSelfArchived lfs_enabled: lfsEnabled lock_math_rendering_limits_enabled: lockMathRenderingLimitsEnabled math_rendering_limits_enabled: mathRenderingLimitsEnabled mentions_disabled: mentionsDisabled name path project_creation_level: projectCreationLevel projects_count: projectsCount repository_size_excess_project_count: repositorySizeExcessProjectCount request_access_enabled: requestAccessEnabled require_two_factor_authentication: requireTwoFactorAuthentication share_with_group_lock: shareWithGroupLock shared_runners_setting: sharedRunnersSetting storage_size_limit: storageSizeLimit subgroup_creation_level: subgroupCreationLevel total_repository_size: totalRepositorySize total_repository_size_excess: totalRepositorySizeExcess two_factor_grace_period: twoFactorGracePeriod updated_at: updatedAt visibility web_path: webPath web_url: webUrl } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: archived + in: query + required: false + description: Filters archived groups. + schema: + type: boolean + - name: include_parent_descendants + in: query + required: false + description: List of descendant groups of the parent group. + schema: + type: boolean + - name: owned + in: query + required: false + description: Limit result to groups owned by authenticated user. + schema: + type: boolean + - name: search + in: query + required: false + description: Search query for group name or group full path. + schema: + type: string + - name: sort + in: query + required: false + description: Sort groups by given criteria. + schema: + type: string + enum: + - SIMILARITY + - CREATED_AT_ASC + - CREATED_AT_DESC + - UPDATED_AT_ASC + - UPDATED_AT_DESC + - NAME_ASC + - NAME_DESC + - PATH_ASC + - PATH_DESC + - ID_ASC + - ID_DESC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + descendantGroups: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for repositories in the namespace in bytes. This limit only applies to namespaces under Project limit enforcement. + actual_size_limit: + type: number + description: The actual storage size limit (in bytes) based on the enforcement type of either repository or namespace. This limit is agnostic of enforcement type. + additional_purchased_storage_size: + type: number + description: Additional storage purchased for the root namespace in bytes. + admin_edit_path: + type: string + description: Admin path for editing group. Only available to admins. + admin_show_path: + type: string + description: Admin path of the group. Only available to admins. + allow_stale_runner_pruning: + type: boolean + description: Indicates whether to regularly prune stale group runners. Defaults to false. + archived: + type: boolean + description: Indicates if the group or any ancestor is archived. + auto_devops_enabled: + type: boolean + description: Indicates whether Auto DevOps is enabled for all projects within the group. + avatar_url: + type: string + description: Avatar URL of the group. + billable_members_count: + type: integer + description: Number of billable users in the group. + contains_locked_projects: + type: boolean + description: Includes at least one project where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + created_at: + type: string + description: Timestamp of the group creation. + cross_project_pipeline_available: + type: boolean + description: Indicates if the cross_project_pipeline feature is available for the namespace. + dependency_proxy_blob_count: + type: integer + description: Number of dependency proxy blobs cached in the group. + dependency_proxy_image_count: + type: integer + description: Number of dependency proxy images cached in the group. + dependency_proxy_image_prefix: + type: string + description: Prefix for pulling images when using the dependency proxy. + dependency_proxy_total_size: + type: string + description: Total size of the dependency proxy cached images. + dependency_proxy_total_size_bytes: + type: string + description: Total size of the dependency proxy cached images in bytes, encoded as a string. + descendant_groups_count: + type: integer + description: Count of direct descendant groups of the group. + description: + type: string + description: Description of the namespace. + edit_path: + type: string + description: Path for editing group. + emails_disabled: + type: boolean + description: Indicates if a group has email notifications disabled. + emails_enabled: + type: boolean + description: Indicates if a group has email notifications enabled. + enforce_free_user_cap: + type: boolean + description: Indicates whether the group has limited users for a free plan. + full_name: + type: string + description: Full name of the group. + full_path: + type: string + description: Full path of the group. + group_members_count: + type: integer + description: Count of direct members of the group. + id: + type: string + description: ID of the group. + is_linked_to_subscription: + type: boolean + description: Indicates if group is linked to a subscription. + is_self_archived: + type: boolean + description: Indicates if the group is archived. + lfs_enabled: + type: boolean + description: Indicates if Large File Storage (LFS) is enabled for namespace. + lock_math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are locked for all descendant groups. + math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are used for the group. + mentions_disabled: + type: boolean + description: Indicates if a group is disabled from getting mentioned. + name: + type: string + description: Name of the group. + path: + type: string + description: Path of the namespace. + project_creation_level: + type: string + description: Permission level required to create projects in the group. + projects_count: + type: integer + description: Count of direct projects in the group. + repository_size_excess_project_count: + type: integer + description: Number of projects in the root namespace where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + request_access_enabled: + type: boolean + description: Indicates if users can request access to namespace. + require_two_factor_authentication: + type: boolean + description: Indicates if all users in the group are required to set up two-factor authentication. + share_with_group_lock: + type: boolean + description: Indicates if sharing a project with another group within the group is prevented. + shared_runners_setting: + type: string + enum: + - DISABLED_AND_UNOVERRIDABLE + - DISABLED_AND_OVERRIDABLE + - ENABLED + description: Shared runners availability for the namespace and its descendants. + storage_size_limit: + type: number + description: The storage limit (in bytes) included with the root namespace plan. This limit only applies to namespaces under namespace limit enforcement. + subgroup_creation_level: + type: string + description: Permission level required to create subgroups within the group. + total_repository_size: + type: number + description: Total repository size of all projects in the root namespace in bytes. + total_repository_size_excess: + type: number + description: Total excess repository size of all projects in the root namespace in bytes. This only applies to namespaces under Project limit enforcement. + two_factor_grace_period: + type: integer + description: Time before two-factor authentication is enforced. + updated_at: + type: string + description: Timestamp of when the group was last updated. + visibility: + type: string + description: Visibility of the namespace. + web_path: + type: string + description: Web path of the group. + web_url: + type: string + description: Web URL of the group. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_environment_scopes&method=list: + post: + operationId: group_environment_scopes_list + summary: Environment scopes of the group. + description: Environment scopes of the group. Generated from the GitLab GraphQL schema field Group.environmentScopes (connection of CiGroupEnvironmentScope nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.environmentScopes' + url: https://docs.gitlab.com/api/graphql/reference/#groupenvironmentscopes + x-stackQL-graphQL: + id: gitlab.groups.group_environment_scopes.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.environmentScopes.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.environmentScopes.pageInfo.endCursor + terminateOnJsonPath: $.data.group.environmentScopes.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { environmentScopes(first: 100{{ .cursor }}{{ if .name }}, name: "{{ .name }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}) { nodes { name } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: name + in: query + required: false + description: Name of the environment scope. + schema: + type: string + - name: search + in: query + required: false + description: Search query for environment scope name. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + environmentScopes: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + name: + type: string + description: Scope name defininig the enviromnments that can use the variable. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_group_members&method=list: + post: + operationId: group_group_members_list + summary: A membership of a user within this group. + description: A membership of a user within this group. Generated from the GitLab GraphQL schema field Group.groupMembers (connection of GroupMember nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.groupMembers' + url: https://docs.gitlab.com/api/graphql/reference/#groupgroupmembers + x-stackQL-graphQL: + id: gitlab.groups.group_group_members.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.groupMembers.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.groupMembers.pageInfo.endCursor + terminateOnJsonPath: $.data.group.groupMembers.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { groupMembers(first: 100{{ .cursor }}{{ if .enterprise }}, enterprise: {{ .enterprise }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { created_at: createdAt expires_at: expiresAt id notification_email: notificationEmail updated_at: updatedAt user { id username name } group_: group { id full_path: fullPath name } access_level: accessLevel { integer_value: integerValue string_value: stringValue } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: enterprise + in: query + required: false + description: Filter members by enterprise users. + schema: + type: boolean + - name: search + in: query + required: false + description: Search query. + schema: + type: string + - name: sort + in: query + required: false + description: sort query. + schema: + type: string + enum: + - ACCESS_LEVEL_ASC + - ACCESS_LEVEL_DESC + - USER_FULL_NAME_ASC + - USER_FULL_NAME_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + groupMembers: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Date and time the membership was created. + expires_at: + type: string + description: Date and time the membership expires. + id: + type: string + description: ID of the member. + notification_email: + type: string + description: Group notification email for user. Only available for admins. + updated_at: + type: string + description: Date and time the membership was last updated. + user: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + access_level: + type: object + description: AccessLevel identity (integer_value, string_value) + properties: + integer_value: + type: integer + string_value: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_iteration_cadences&method=list: + post: + operationId: group_iteration_cadences_list + summary: Find iteration cadences. + description: Find iteration cadences. Generated from the GitLab GraphQL schema field Group.iterationCadences (connection of IterationCadence nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.iterationCadences' + url: https://docs.gitlab.com/api/graphql/reference/#groupiterationcadences + x-stackQL-graphQL: + id: gitlab.groups.group_iteration_cadences.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.iterationCadences.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.iterationCadences.pageInfo.endCursor + terminateOnJsonPath: $.data.group.iterationCadences.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { iterationCadences(first: 100{{ .cursor }}{{ if .active }}, active: {{ .active }}{{ end }}{{ if .automatic }}, automatic: {{ .automatic }}{{ end }}{{ if .duration_in_weeks }}, durationInWeeks: {{ .duration_in_weeks }}{{ end }}{{ if .id }}, id: "{{ .id }}"{{ end }}{{ if .include_ancestor_groups }}, includeAncestorGroups: {{ .include_ancestor_groups }}{{ end }}{{ if .title }}, title: "{{ .title }}"{{ end }}) { nodes { active automatic description duration_in_weeks: durationInWeeks id iterations_in_advance: iterationsInAdvance roll_over: rollOver start_date: startDate title } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: active + in: query + required: false + description: Whether the iteration cadence is active. + schema: + type: boolean + - name: automatic + in: query + required: false + description: Whether the iteration cadence should automatically generate upcoming iterations. + schema: + type: boolean + - name: duration_in_weeks + in: query + required: false + description: Duration in weeks of the iterations within the cadence. + schema: + type: integer + - name: id + in: query + required: false + description: Global ID of the iteration cadence to look up. + schema: + type: string + - name: include_ancestor_groups + in: query + required: false + description: Whether to include ancestor groups to search iterations cadences in. + schema: + type: boolean + - name: title + in: query + required: false + description: Fuzzy search by title. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + iterationCadences: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + active: + type: boolean + description: Whether the iteration cadence is active. + automatic: + type: boolean + description: Whether the iteration cadence should automatically generate upcoming iterations. + description: + type: string + description: Description of the iteration cadence. Maximum length is 5000 characters. + duration_in_weeks: + type: integer + description: Duration in weeks of the iterations within the cadence. + id: + type: string + description: Global ID of the iteration cadence. + iterations_in_advance: + type: integer + description: Number of future iterations to schedule in addition to the current one. + roll_over: + type: boolean + description: Whether the iteration cadence should roll over issues to the next iteration or not. + start_date: + type: string + description: Timestamp of the automation start date. + title: + type: string + description: Title of the iteration cadence. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_iterations&method=list: + post: + operationId: group_iterations_list + summary: Find iterations. + description: Find iterations. Generated from the GitLab GraphQL schema field Group.iterations (connection of Iteration nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.iterations' + url: https://docs.gitlab.com/api/graphql/reference/#groupiterations + x-stackQL-graphQL: + id: gitlab.groups.group_iterations.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.iterations.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.iterations.pageInfo.endCursor + terminateOnJsonPath: $.data.group.iterations.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { iterations(first: 100{{ .cursor }}{{ if .id }}, id: "{{ .id }}"{{ end }}{{ if .iid }}, iid: "{{ .iid }}"{{ end }}{{ if .include_ancestors }}, includeAncestors: {{ .include_ancestors }}{{ end }}{{ if .include_descendants }}, includeDescendants: {{ .include_descendants }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}) { nodes { created_at: createdAt description due_date: dueDate id iid scoped_path: scopedPath scoped_url: scopedUrl sequence start_date: startDate state title updated_at: updatedAt web_path: webPath web_url: webUrl group_: group { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: id + in: query + required: false + description: Global ID of the Iteration to look up. + schema: + type: string + - name: iid + in: query + required: false + description: Internal ID of the Iteration to look up. + schema: + type: string + - name: include_ancestors + in: query + required: false + description: Whether to include ancestor iterations. Defaults to true. + schema: + type: boolean + - name: include_descendants + in: query + required: false + description: Whether to include descendant iterations. + schema: + type: boolean + - name: search + in: query + required: false + description: Query used for fuzzy-searching in the fields selected in the argument `in`. Returns all iterations if empty. + schema: + type: string + - name: sort + in: query + required: false + description: List iterations by sort order. If unspecified, an arbitrary order (subject to change) is used. + schema: + type: string + enum: + - CADENCE_AND_DUE_DATE_ASC + - CADENCE_AND_DUE_DATE_DESC + - name: state + in: query + required: false + description: Filter iterations by state. + schema: + type: string + enum: + - upcoming + - current + - opened + - closed + - all + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + iterations: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of iteration creation. + description: + type: string + description: Description of the iteration. + due_date: + type: string + description: Timestamp of the iteration due date. + id: + type: string + description: ID of the iteration. + iid: + type: string + description: Internal ID of the iteration. + scoped_path: + type: string + description: Web path of the iteration, scoped to the query parent. Only valid for Project parents. Returns null in other contexts. + scoped_url: + type: string + description: Web URL of the iteration, scoped to the query parent. Only valid for Project parents. Returns null in other contexts. + sequence: + type: integer + description: Sequence number for the iteration when you sort the containing cadence's iterations by the start and end date. The earliest starting and ending iteration is assigned 1. + start_date: + type: string + description: Timestamp of the iteration start date. + state: + type: string + enum: + - upcoming + - current + - opened + - closed + - all + description: State of the iteration. + title: + type: string + description: Title of the iteration. + updated_at: + type: string + description: Timestamp of last iteration update. + web_path: + type: string + description: Web path of the iteration. + web_url: + type: string + description: Web URL of the iteration. + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_label&method=get: + post: + operationId: group_label_get + summary: Label available on the group. + description: Label available on the group. Generated from the GitLab GraphQL schema field Group.label (Label). + externalDocs: + description: 'GitLab GraphQL API reference: Group.label' + url: https://docs.gitlab.com/api/graphql/reference/#grouplabel + x-stackQL-graphQL: + id: gitlab.groups.group_label.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { label(title: "{{ .title }}") { archived color created_at: createdAt description id lock_on_merge: lockOnMerge text_color: textColor title updated_at: updatedAt } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: title + in: query + required: true + description: Title of the label. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + label: + type: object + properties: + archived: + type: boolean + description: Indicates the label is archived. + color: + type: string + description: Background color of the label. + created_at: + type: string + description: When the label was created. + description: + type: string + description: Description of the label (Markdown rendered as HTML for caching). + id: + type: string + description: Global ID of the label. + lock_on_merge: + type: boolean + description: Indicates this label is locked for merge requests that have been merged. + text_color: + type: string + description: Text color of the label. + title: + type: string + description: Content of the label. + updated_at: + type: string + description: When the label was last updated. + /api/graphql?resource=group_labels&method=list: + post: + operationId: group_labels_list + summary: Labels available on this group. + description: Labels available on this group. Generated from the GitLab GraphQL schema field Group.labels (connection of Label nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.labels' + url: https://docs.gitlab.com/api/graphql/reference/#grouplabels + x-stackQL-graphQL: + id: gitlab.groups.group_labels.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.labels.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.labels.pageInfo.endCursor + terminateOnJsonPath: $.data.group.labels.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { labels(first: 100{{ .cursor }}{{ if .archived }}, archived: {{ .archived }}{{ end }}{{ if .include_ancestor_groups }}, includeAncestorGroups: {{ .include_ancestor_groups }}{{ end }}{{ if .include_descendant_groups }}, includeDescendantGroups: {{ .include_descendant_groups }}{{ end }}{{ if .only_group_labels }}, onlyGroupLabels: {{ .only_group_labels }}{{ end }}{{ if .search_term }}, searchTerm: "{{ .search_term }}"{{ end }}{{ if .title }}, title: "{{ .title }}"{{ end }}) { nodes { archived color created_at: createdAt description id lock_on_merge: lockOnMerge text_color: textColor title updated_at: updatedAt } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: archived + in: query + required: false + description: Filters archived labels. Defaults to false. + schema: + type: boolean + - name: include_ancestor_groups + in: query + required: false + description: Include labels from ancestor groups. + schema: + type: boolean + - name: include_descendant_groups + in: query + required: false + description: Include labels from descendant groups. + schema: + type: boolean + - name: only_group_labels + in: query + required: false + description: Include only group level labels. + schema: + type: boolean + - name: search_term + in: query + required: false + description: Search term to find labels with. + schema: + type: string + - name: title + in: query + required: false + description: Exact match on title. Cannot be used with `searchTerm`. `searchIn` will be ignored if `title` argument is provided. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + labels: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + archived: + type: boolean + description: Indicates the label is archived. + color: + type: string + description: Background color of the label. + created_at: + type: string + description: When the label was created. + description: + type: string + description: Description of the label (Markdown rendered as HTML for caching). + id: + type: string + description: Global ID of the label. + lock_on_merge: + type: boolean + description: Indicates this label is locked for merge requests that have been merged. + text_color: + type: string + description: Text color of the label. + title: + type: string + description: Content of the label. + updated_at: + type: string + description: When the label was last updated. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_max_access_level&method=get: + post: + operationId: group_max_access_level_get + summary: Maximum access level of the current user in the group. + description: Maximum access level of the current user in the group. Generated from the GitLab GraphQL schema field Group.maxAccessLevel (AccessLevel). + externalDocs: + description: 'GitLab GraphQL API reference: Group.maxAccessLevel' + url: https://docs.gitlab.com/api/graphql/reference/#groupmaxaccesslevel + x-stackQL-graphQL: + id: gitlab.groups.group_max_access_level.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { maxAccessLevel { human_access: humanAccess integer_value: integerValue string_value: stringValue } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + maxAccessLevel: + type: object + properties: + human_access: + type: string + description: Human-readable display name for the access level. + integer_value: + type: integer + description: Integer number of the access level. + string_value: + type: string + enum: + - NO_ACCESS + - MINIMAL_ACCESS + - GUEST + - PLANNER + - REPORTER + - SECURITY_MANAGER + - DEVELOPER + - MAINTAINER + - OWNER + - ADMIN + description: Enum string of the the access level. + /api/graphql?resource=group_milestones&method=list: + post: + operationId: group_milestones_list + summary: Milestones of the group. + description: Milestones of the group. Generated from the GitLab GraphQL schema field Group.milestones (connection of Milestone nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.milestones' + url: https://docs.gitlab.com/api/graphql/reference/#groupmilestones + x-stackQL-graphQL: + id: gitlab.groups.group_milestones.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.milestones.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.milestones.pageInfo.endCursor + terminateOnJsonPath: $.data.group.milestones.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { milestones(first: 100{{ .cursor }}{{ if .containing_date }}, containingDate: "{{ .containing_date }}"{{ end }}{{ if .include_ancestors }}, includeAncestors: {{ .include_ancestors }}{{ end }}{{ if .include_descendants }}, includeDescendants: {{ .include_descendants }}{{ end }}{{ if .search_title }}, searchTitle: "{{ .search_title }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}{{ if .title }}, title: "{{ .title }}"{{ end }}) { nodes { created_at: createdAt description due_date: dueDate expired group_milestone: groupMilestone id iid project_milestone: projectMilestone start_date: startDate state subgroup_milestone: subgroupMilestone title upcoming updated_at: updatedAt web_path: webPath group_: group { id full_path: fullPath name } project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: containing_date + in: query + required: false + description: Date the milestone contains. + schema: + type: string + - name: include_ancestors + in: query + required: false + description: Include milestones from all parent groups. + schema: + type: boolean + - name: include_descendants + in: query + required: false + description: Include milestones from all subgroups and subprojects. + schema: + type: boolean + - name: search_title + in: query + required: false + description: Search string for the title. + schema: + type: string + - name: sort + in: query + required: false + description: Sort milestones by the criteria. + schema: + type: string + enum: + - DUE_DATE_ASC + - DUE_DATE_DESC + - EXPIRED_LAST_DUE_DATE_ASC + - EXPIRED_LAST_DUE_DATE_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: state + in: query + required: false + description: Filter milestones by state. + schema: + type: string + enum: + - active + - closed + - name: title + in: query + required: false + description: Title of the milestone. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + milestones: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of milestone creation. + description: + type: string + description: Description of the milestone. + due_date: + type: string + description: Timestamp of the milestone due date. + expired: + type: boolean + description: Expired state of the milestone (a milestone is expired when the due date is past the current date). Defaults to `false` when due date has not been set. + group_milestone: + type: boolean + description: Indicates if milestone is at group level. + id: + type: string + description: ID of the milestone. + iid: + type: string + description: Internal ID of the milestone. + project_milestone: + type: boolean + description: Indicates if milestone is at project level. + start_date: + type: string + description: Timestamp of the milestone start date. + state: + type: string + enum: + - active + - closed + description: State of the milestone. + subgroup_milestone: + type: boolean + description: Indicates if milestone is at subgroup level. + title: + type: string + description: Title of the milestone. + upcoming: + type: boolean + description: Upcoming state of the milestone (a milestone is upcoming when the start date is in the future). Defaults to `false` when start date has not been set. + updated_at: + type: string + description: Timestamp of last milestone update. + web_path: + type: string + description: Web path of the milestone. + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_namespace_settings&method=get: + post: + operationId: group_namespace_settings_get + summary: Namespace settings for the namespace. + description: Namespace settings for the namespace. Generated from the GitLab GraphQL schema field Group.namespaceSettings (NamespaceSettings). + externalDocs: + description: 'GitLab GraphQL API reference: Group.namespaceSettings' + url: https://docs.gitlab.com/api/graphql/reference/#groupnamespacesettings + x-stackQL-graphQL: + id: gitlab.groups.group_namespace_settings.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { namespaceSettings { step_up_auth_required_oauth_provider: stepUpAuthRequiredOauthProvider } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + namespaceSettings: + type: object + properties: + step_up_auth_required_oauth_provider: + type: string + description: OAuth provider required for step-up authentication. + /api/graphql?resource=group_organization_state_counts&method=get: + post: + operationId: group_organization_state_counts_get + summary: Counts of organizations by status for the group. + description: Counts of organizations by status for the group. Generated from the GitLab GraphQL schema field Group.organizationStateCounts (OrganizationStateCounts). + externalDocs: + description: 'GitLab GraphQL API reference: Group.organizationStateCounts' + url: https://docs.gitlab.com/api/graphql/reference/#grouporganizationstatecounts + x-stackQL-graphQL: + id: gitlab.groups.group_organization_state_counts.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { organizationStateCounts{{ if or .search .state }}({{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}){{ end }} { active all_: all inactive } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: search + in: query + required: false + description: Search term to find organizations with. + schema: + type: string + - name: state + in: query + required: false + description: State of the organizations to search for. + schema: + type: string + enum: + - all + - active + - inactive + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + organizationStateCounts: + type: object + properties: + active: + type: integer + description: Number of organizations with state `ACTIVE` + all_: + type: integer + description: Number of organizations with state `ALL` + inactive: + type: integer + description: Number of organizations with state `INACTIVE` + /api/graphql?resource=group_organizations&method=list: + post: + operationId: group_organizations_list + summary: Find organizations of this group. + description: Find organizations of this group. Generated from the GitLab GraphQL schema field Group.organizations (connection of CustomerRelationsOrganization nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.organizations' + url: https://docs.gitlab.com/api/graphql/reference/#grouporganizations + x-stackQL-graphQL: + id: gitlab.groups.group_organizations.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.organizations.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.organizations.pageInfo.endCursor + terminateOnJsonPath: $.data.group.organizations.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { organizations(first: 100{{ .cursor }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}) { nodes { active created_at: createdAt default_rate: defaultRate description id name updated_at: updatedAt } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: search + in: query + required: false + description: Search term used to find organizations with. + schema: + type: string + - name: sort + in: query + required: false + description: Criteria to sort organizations by. + schema: + type: string + enum: + - NAME_ASC + - NAME_DESC + - DESCRIPTION_ASC + - DESCRIPTION_DESC + - DEFAULT_RATE_ASC + - DEFAULT_RATE_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: state + in: query + required: false + description: State of the organization to search for. + schema: + type: string + enum: + - all + - active + - inactive + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + organizations: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + active: + type: boolean + description: State of the organization. + created_at: + type: string + description: Timestamp the organization was created. + default_rate: + type: number + description: Standard billing rate for the organization. + description: + type: string + description: Description of or notes for the organization. + id: + type: string + description: Internal ID of the organization. + name: + type: string + description: Name of the organization. + updated_at: + type: string + description: Timestamp the organization was last updated. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_pages_deployments&method=list: + post: + operationId: group_pages_deployments_list + summary: List of the namespaces's Pages Deployments. + description: List of the namespaces's Pages Deployments. Generated from the GitLab GraphQL schema field Group.pagesDeployments (connection of PagesDeployment nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.pagesDeployments' + url: https://docs.gitlab.com/api/graphql/reference/#grouppagesdeployments + x-stackQL-graphQL: + id: gitlab.groups.group_pages_deployments.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.pagesDeployments.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.pagesDeployments.pageInfo.endCursor + terminateOnJsonPath: $.data.group.pagesDeployments.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { pagesDeployments(first: 100{{ .cursor }}{{ if .active }}, active: {{ .active }}{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .versioned }}, versioned: {{ .versioned }}{{ end }}) { nodes { active ci_build_id: ciBuildId created_at: createdAt deleted_at: deletedAt expires_at: expiresAt file_count: fileCount id path_prefix: pathPrefix root_directory: rootDirectory size updated_at: updatedAt url project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: active + in: query + required: false + description: Filter by active or inactive state. + schema: + type: boolean + - name: sort + in: query + required: false + description: Sort results. + schema: + type: string + enum: + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: versioned + in: query + required: false + description: |- + Filter deployments that are + versioned or unversioned. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + pagesDeployments: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + active: + type: boolean + description: Whether the deployment is currently active. + ci_build_id: + type: string + description: ID of the CI build that created the deployment. + created_at: + type: string + description: Time the deployment was created. + deleted_at: + type: string + description: Time the deployment was deleted. + expires_at: + type: string + description: Time the deployment will expire. + file_count: + type: integer + description: Number of files that were published with the deployment. + id: + type: string + description: ID of the Pages Deployment. + path_prefix: + type: string + description: URL path Prefix that points to the deployment. + root_directory: + type: string + description: Path within the build assets that functions as the root directory for Pages sites. + size: + type: integer + description: Size of the storage used. + updated_at: + type: string + description: Time the deployment was last updated. + url: + type: string + description: Publicly accessible URL of the deployment. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_parent&method=get: + post: + operationId: group_parent_get + summary: Parent group. + description: Parent group. Generated from the GitLab GraphQL schema field Group.parent (Group). + externalDocs: + description: 'GitLab GraphQL API reference: Group.parent' + url: https://docs.gitlab.com/api/graphql/reference/#groupparent + x-stackQL-graphQL: + id: gitlab.groups.group_parent.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { parent { actual_repository_size_limit: actualRepositorySizeLimit actual_size_limit: actualSizeLimit additional_purchased_storage_size: additionalPurchasedStorageSize admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_stale_runner_pruning: allowStaleRunnerPruning archived auto_devops_enabled: autoDevopsEnabled avatar_url: avatarUrl billable_members_count: billableMembersCount contains_locked_projects: containsLockedProjects created_at: createdAt cross_project_pipeline_available: crossProjectPipelineAvailable dependency_proxy_blob_count: dependencyProxyBlobCount dependency_proxy_image_count: dependencyProxyImageCount dependency_proxy_image_prefix: dependencyProxyImagePrefix dependency_proxy_total_size: dependencyProxyTotalSize dependency_proxy_total_size_bytes: dependencyProxyTotalSizeBytes descendant_groups_count: descendantGroupsCount description edit_path: editPath emails_disabled: emailsDisabled emails_enabled: emailsEnabled enforce_free_user_cap: enforceFreeUserCap full_name: fullName full_path: fullPath group_members_count: groupMembersCount id is_linked_to_subscription: isLinkedToSubscription is_self_archived: isSelfArchived lfs_enabled: lfsEnabled lock_math_rendering_limits_enabled: lockMathRenderingLimitsEnabled math_rendering_limits_enabled: mathRenderingLimitsEnabled mentions_disabled: mentionsDisabled name path project_creation_level: projectCreationLevel projects_count: projectsCount repository_size_excess_project_count: repositorySizeExcessProjectCount request_access_enabled: requestAccessEnabled require_two_factor_authentication: requireTwoFactorAuthentication share_with_group_lock: shareWithGroupLock shared_runners_setting: sharedRunnersSetting storage_size_limit: storageSizeLimit subgroup_creation_level: subgroupCreationLevel total_repository_size: totalRepositorySize total_repository_size_excess: totalRepositorySizeExcess two_factor_grace_period: twoFactorGracePeriod updated_at: updatedAt visibility web_path: webPath web_url: webUrl } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + parent: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for repositories in the namespace in bytes. This limit only applies to namespaces under Project limit enforcement. + actual_size_limit: + type: number + description: The actual storage size limit (in bytes) based on the enforcement type of either repository or namespace. This limit is agnostic of enforcement type. + additional_purchased_storage_size: + type: number + description: Additional storage purchased for the root namespace in bytes. + admin_edit_path: + type: string + description: Admin path for editing group. Only available to admins. + admin_show_path: + type: string + description: Admin path of the group. Only available to admins. + allow_stale_runner_pruning: + type: boolean + description: Indicates whether to regularly prune stale group runners. Defaults to false. + archived: + type: boolean + description: Indicates if the group or any ancestor is archived. + auto_devops_enabled: + type: boolean + description: Indicates whether Auto DevOps is enabled for all projects within the group. + avatar_url: + type: string + description: Avatar URL of the group. + billable_members_count: + type: integer + description: Number of billable users in the group. + contains_locked_projects: + type: boolean + description: Includes at least one project where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + created_at: + type: string + description: Timestamp of the group creation. + cross_project_pipeline_available: + type: boolean + description: Indicates if the cross_project_pipeline feature is available for the namespace. + dependency_proxy_blob_count: + type: integer + description: Number of dependency proxy blobs cached in the group. + dependency_proxy_image_count: + type: integer + description: Number of dependency proxy images cached in the group. + dependency_proxy_image_prefix: + type: string + description: Prefix for pulling images when using the dependency proxy. + dependency_proxy_total_size: + type: string + description: Total size of the dependency proxy cached images. + dependency_proxy_total_size_bytes: + type: string + description: Total size of the dependency proxy cached images in bytes, encoded as a string. + descendant_groups_count: + type: integer + description: Count of direct descendant groups of the group. + description: + type: string + description: Description of the namespace. + edit_path: + type: string + description: Path for editing group. + emails_disabled: + type: boolean + description: Indicates if a group has email notifications disabled. + emails_enabled: + type: boolean + description: Indicates if a group has email notifications enabled. + enforce_free_user_cap: + type: boolean + description: Indicates whether the group has limited users for a free plan. + full_name: + type: string + description: Full name of the group. + full_path: + type: string + description: Full path of the group. + group_members_count: + type: integer + description: Count of direct members of the group. + id: + type: string + description: ID of the group. + is_linked_to_subscription: + type: boolean + description: Indicates if group is linked to a subscription. + is_self_archived: + type: boolean + description: Indicates if the group is archived. + lfs_enabled: + type: boolean + description: Indicates if Large File Storage (LFS) is enabled for namespace. + lock_math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are locked for all descendant groups. + math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are used for the group. + mentions_disabled: + type: boolean + description: Indicates if a group is disabled from getting mentioned. + name: + type: string + description: Name of the group. + path: + type: string + description: Path of the namespace. + project_creation_level: + type: string + description: Permission level required to create projects in the group. + projects_count: + type: integer + description: Count of direct projects in the group. + repository_size_excess_project_count: + type: integer + description: Number of projects in the root namespace where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + request_access_enabled: + type: boolean + description: Indicates if users can request access to namespace. + require_two_factor_authentication: + type: boolean + description: Indicates if all users in the group are required to set up two-factor authentication. + share_with_group_lock: + type: boolean + description: Indicates if sharing a project with another group within the group is prevented. + shared_runners_setting: + type: string + enum: + - DISABLED_AND_UNOVERRIDABLE + - DISABLED_AND_OVERRIDABLE + - ENABLED + description: Shared runners availability for the namespace and its descendants. + storage_size_limit: + type: number + description: The storage limit (in bytes) included with the root namespace plan. This limit only applies to namespaces under namespace limit enforcement. + subgroup_creation_level: + type: string + description: Permission level required to create subgroups within the group. + total_repository_size: + type: number + description: Total repository size of all projects in the root namespace in bytes. + total_repository_size_excess: + type: number + description: Total excess repository size of all projects in the root namespace in bytes. This only applies to namespaces under Project limit enforcement. + two_factor_grace_period: + type: integer + description: Time before two-factor authentication is enforced. + updated_at: + type: string + description: Timestamp of when the group was last updated. + visibility: + type: string + description: Visibility of the namespace. + web_path: + type: string + description: Web path of the group. + web_url: + type: string + description: Web URL of the group. + /api/graphql?resource=group_pending_member_approvals&method=list: + post: + operationId: group_pending_member_approvals_list + summary: Pending member promotions of the group. + description: Pending member promotions of the group. Generated from the GitLab GraphQL schema field Group.pendingMemberApprovals (connection of MemberApproval nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.pendingMemberApprovals' + url: https://docs.gitlab.com/api/graphql/reference/#grouppendingmemberapprovals + x-stackQL-graphQL: + id: gitlab.groups.group_pending_member_approvals.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.pendingMemberApprovals.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.pendingMemberApprovals.pageInfo.endCursor + terminateOnJsonPath: $.data.group.pendingMemberApprovals.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { pendingMemberApprovals(first: 100{{ .cursor }}) { nodes { created_at: createdAt member_role_id: memberRoleId status updated_at: updatedAt user { id username name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + pendingMemberApprovals: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp when the member approval was created. + member_role_id: + type: string + description: ID of the member role. + status: + type: string + description: Status for the member approval request (approved, denied, pending). + updated_at: + type: string + description: Timestamp when the member approval was last updated. + user: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_projects&method=list: + post: + operationId: group_projects_list + summary: Projects within this namespace. Returns projects from the parent group if namespace is project. + description: Projects within this namespace. Returns projects from the parent group if namespace is project. Generated from the GitLab GraphQL schema field Group.projects (connection of Project nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.projects' + url: https://docs.gitlab.com/api/graphql/reference/#groupprojects + x-stackQL-graphQL: + id: gitlab.groups.group_projects.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.projects.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.projects.pageInfo.endCursor + terminateOnJsonPath: $.data.group.projects.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { projects(first: 100{{ .cursor }}{{ if .archived_only }}, archivedOnly: {{ .archived_only }}{{ end }}{{ if .has_code_coverage }}, hasCodeCoverage: {{ .has_code_coverage }}{{ end }}{{ if .has_vulnerabilities }}, hasVulnerabilities: {{ .has_vulnerabilities }}{{ end }}{{ if .include_archived }}, includeArchived: {{ .include_archived }}{{ end }}{{ if .include_subgroups }}, includeSubgroups: {{ .include_subgroups }}{{ end }}{{ if .not_aimed_for_deletion }}, notAimedForDeletion: {{ .not_aimed_for_deletion }}{{ end }}{{ if .sbom_component_id }}, sbomComponentId: "{{ .sbom_component_id }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .with_issues_enabled }}, withIssuesEnabled: {{ .with_issues_enabled }}{{ end }}{{ if .with_merge_requests_enabled }}, withMergeRequestsEnabled: {{ .with_merge_requests_enabled }}{{ end }}{{ if .with_namespace_domain_pages }}, withNamespaceDomainPages: {{ .with_namespace_domain_pages }}{{ end }}) { nodes { actual_repository_size_limit: actualRepositorySizeLimit admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_merge_on_skipped_pipeline: allowMergeOnSkippedPipeline allows_multiple_merge_request_assignees: allowsMultipleMergeRequestAssignees allows_multiple_merge_request_reviewers: allowsMultipleMergeRequestReviewers archived autoclose_referenced_issues: autocloseReferencedIssues avatar_url: avatarUrl ci_config_path_or_default: ciConfigPathOrDefault container_registry_enabled: containerRegistryEnabled container_scanning_for_registry_enabled: containerScanningForRegistryEnabled created_at: createdAt description edit_path: editPath forks_count: forksCount full_path: fullPath has_jira_vulnerability_issue_creation_enabled: hasJiraVulnerabilityIssueCreationEnabled http_url_to_repo: httpUrlToRepo id import_status: importStatus is_forked: isForked issues_enabled: issuesEnabled jira_import_status: jiraImportStatus jobs_enabled: jobsEnabled last_activity_at: lastActivityAt lfs_enabled: lfsEnabled merge_commit_template: mergeCommitTemplate merge_request_title_regex: mergeRequestTitleRegex merge_request_title_regex_description: mergeRequestTitleRegexDescription merge_requests_disable_committers_approval: mergeRequestsDisableCommittersApproval merge_requests_enabled: mergeRequestsEnabled merge_requests_ff_only_enabled: mergeRequestsFfOnlyEnabled name name_with_namespace: nameWithNamespace only_allow_merge_if_all_discussions_are_resolved: onlyAllowMergeIfAllDiscussionsAreResolved only_allow_merge_if_all_status_checks_passed: onlyAllowMergeIfAllStatusChecksPassed only_allow_merge_if_pipeline_succeeds: onlyAllowMergeIfPipelineSucceeds open_issues_count: openIssuesCount open_merge_requests_count: openMergeRequestsCount pages_force_https: pagesForceHttps pages_use_unique_domain: pagesUseUniqueDomain path pre_receive_secret_detection_enabled: preReceiveSecretDetectionEnabled prevent_merge_without_jira_issue_enabled: preventMergeWithoutJiraIssueEnabled printing_merge_request_link_enabled: printingMergeRequestLinkEnabled public_jobs: publicJobs remove_source_branch_after_merge: removeSourceBranchAfterMerge repository_size_excess: repositorySizeExcess request_access_enabled: requestAccessEnabled secret_push_protection_enabled: secretPushProtectionEnabled security_configuration_path: securityConfigurationPath security_dashboard_path: securityDashboardPath service_desk_address: serviceDeskAddress service_desk_enabled: serviceDeskEnabled shared_runners_enabled: sharedRunnersEnabled snippets_enabled: snippetsEnabled squash_commit_template: squashCommitTemplate squash_read_only: squashReadOnly ssh_url_to_repo: sshUrlToRepo star_count: starCount suggestion_commit_message: suggestionCommitMessage topics updated_at: updatedAt visibility web_path: webPath web_url: webUrl wiki_enabled: wikiEnabled namespace { id full_path: fullPath name } group_: group { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: archived_only + in: query + required: false + description: Return only archived projects. + schema: + type: boolean + - name: has_code_coverage + in: query + required: false + description: Returns only the projects which have code coverage. + schema: + type: boolean + - name: has_vulnerabilities + in: query + required: false + description: Returns only the projects which have vulnerabilities. + schema: + type: boolean + - name: include_archived + in: query + required: false + description: Include also archived projects. + schema: + type: boolean + - name: include_subgroups + in: query + required: false + description: Include also subgroup projects. + schema: + type: boolean + - name: not_aimed_for_deletion + in: query + required: false + description: Include projects that are not aimed for deletion. + schema: + type: boolean + - name: sbom_component_id + in: query + required: false + description: Return only the projects related to the specified SBOM component. + schema: + type: string + - name: search + in: query + required: false + description: Search project with most similar names or paths. + schema: + type: string + - name: sort + in: query + required: false + description: Sort projects by the criteria. + schema: + type: string + enum: + - SIMILARITY + - ACTIVITY_DESC + - STORAGE_SIZE_ASC + - STORAGE_SIZE_DESC + - PATH_ASC + - PATH_DESC + - FULL_PATH_ASC + - FULL_PATH_DESC + - REPOSITORY_SIZE_ASC + - REPOSITORY_SIZE_DESC + - SNIPPETS_SIZE_ASC + - SNIPPETS_SIZE_DESC + - BUILD_ARTIFACTS_SIZE_ASC + - BUILD_ARTIFACTS_SIZE_DESC + - LFS_OBJECTS_SIZE_ASC + - LFS_OBJECTS_SIZE_DESC + - PACKAGES_SIZE_ASC + - PACKAGES_SIZE_DESC + - WIKI_SIZE_ASC + - WIKI_SIZE_DESC + - CONTAINER_REGISTRY_SIZE_ASC + - CONTAINER_REGISTRY_SIZE_DESC + - EXCESS_REPO_STORAGE_SIZE_DESC + - name: with_issues_enabled + in: query + required: false + description: Return only projects with issues enabled. + schema: + type: boolean + - name: with_merge_requests_enabled + in: query + required: false + description: Return only projects with merge requests enabled. + schema: + type: boolean + - name: with_namespace_domain_pages + in: query + required: false + description: Return only projects that use the namespace domain for pages projects. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + projects: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for the repository in bytes. + admin_edit_path: + type: string + description: Admin path for editing project. Only available to admins. + admin_show_path: + type: string + description: Admin path of the project. Only available to admins. + allow_merge_on_skipped_pipeline: + type: boolean + description: If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. + allows_multiple_merge_request_assignees: + type: boolean + description: Project allows assigning multiple users to a merge request. + allows_multiple_merge_request_reviewers: + type: boolean + description: Project allows assigning multiple reviewers to a merge request. + archived: + type: boolean + description: Indicates if the project or any ancestor is archived. + autoclose_referenced_issues: + type: boolean + description: Indicates if issues referenced by merge requests and commits within the default branch are closed automatically. + avatar_url: + type: string + description: Avatar URL of the project. + ci_config_path_or_default: + type: string + description: Path of the CI configuration file. + container_registry_enabled: + type: boolean + description: Indicates if Container registry is enabled for the current user + container_scanning_for_registry_enabled: + type: boolean + description: Indicates whether container scanning for registry is enabled or not for the project. Returns `null` if unauthorized. + created_at: + type: string + description: Timestamp of the project creation. + description: + type: string + description: Short description of the project. + edit_path: + type: string + description: Path for editing project. + forks_count: + type: integer + description: Number of times the project has been forked. + full_path: + type: string + description: Full path of the project. + has_jira_vulnerability_issue_creation_enabled: + type: boolean + description: Indicates whether Jira issue creation from vulnerabilities is enabled. + http_url_to_repo: + type: string + description: URL to connect to the project via HTTPS. + id: + type: string + description: ID of the project. + import_status: + type: string + description: Status of import background job of the project. + is_forked: + type: boolean + description: Project is forked. + issues_enabled: + type: boolean + description: Indicates if Issues are enabled for the current user + jira_import_status: + type: string + description: Status of Jira import background job of the project. + jobs_enabled: + type: boolean + description: Indicates if CI/CD pipeline jobs are enabled for the current user. + last_activity_at: + type: string + description: Timestamp of the project last activity. + lfs_enabled: + type: boolean + description: Indicates if the project has Large File Storage (LFS) enabled. + merge_commit_template: + type: string + description: Template used to create merge commit message in merge requests. + merge_request_title_regex: + type: string + description: Regex used to validate the title of merge requests. + merge_request_title_regex_description: + type: string + description: Description of the regex used to validate the title of merge requests. + merge_requests_disable_committers_approval: + type: boolean + description: Indicates that committers of the given merge request cannot approve. + merge_requests_enabled: + type: boolean + description: Indicates if Merge requests are enabled for the current user + merge_requests_ff_only_enabled: + type: boolean + description: Indicates if no merge commits should be created and all merges should instead be fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded. + name: + type: string + description: Name of the project without the namespace. + name_with_namespace: + type: string + description: Name of the project including the namespace. + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Indicates if merge requests of the project can only be merged when all the discussions are resolved. + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Indicates that merges of merge requests should be blocked unless all status checks have passed. + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Indicates if merge requests of the project can only be merged with successful jobs. + open_issues_count: + type: integer + description: Number of open issues for the project. + open_merge_requests_count: + type: integer + description: Number of open merge requests for the project. + pages_force_https: + type: boolean + description: Project's Pages site redirects unsecured connections to HTTPS. + pages_use_unique_domain: + type: boolean + description: Project's Pages site uses a unique subdomain. + path: + type: string + description: Path of the project. + pre_receive_secret_detection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + prevent_merge_without_jira_issue_enabled: + type: boolean + description: Indicates if an associated issue from Jira is required. + printing_merge_request_link_enabled: + type: boolean + description: Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line. + public_jobs: + type: boolean + description: Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts. + remove_source_branch_after_merge: + type: boolean + description: Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project. + repository_size_excess: + type: number + description: Size of repository that exceeds the limit in bytes. + request_access_enabled: + type: boolean + description: Indicates if users can request member access to the project. + secret_push_protection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + security_configuration_path: + type: string + description: Path to project's security configuration. + security_dashboard_path: + type: string + description: Path to project's security dashboard. + service_desk_address: + type: string + description: E-mail address of the Service Desk. + service_desk_enabled: + type: boolean + description: Indicates if the project has Service Desk enabled. + shared_runners_enabled: + type: boolean + description: Indicates if shared runners are enabled for the project. + snippets_enabled: + type: boolean + description: Indicates if Snippets are enabled for the current user + squash_commit_template: + type: string + description: Template used to create squash commit message in merge requests. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + ssh_url_to_repo: + type: string + description: URL to connect to the project via SSH. + star_count: + type: integer + description: Number of times the project has been starred. + suggestion_commit_message: + type: string + description: Commit message used to apply merge request suggestions. + topics: + type: array + items: + type: string + description: List of project topics. + updated_at: + type: string + description: Timestamp of when the project was last updated. + visibility: + type: string + description: Visibility of the project. + web_path: + type: string + description: Web path of the project. + web_url: + type: string + description: Web URL of the project. + wiki_enabled: + type: boolean + description: Indicates if Wikis are enabled for the current user + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_releases&method=list: + post: + operationId: group_releases_list + summary: Releases belonging to projects in the group. + description: Releases belonging to projects in the group. Generated from the GitLab GraphQL schema field Group.releases (connection of Release nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.releases' + url: https://docs.gitlab.com/api/graphql/reference/#groupreleases + x-stackQL-graphQL: + id: gitlab.groups.group_releases.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.releases.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.releases.pageInfo.endCursor + terminateOnJsonPath: $.data.group.releases.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { releases(first: 100{{ .cursor }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { created_at: createdAt description historical_release: historicalRelease id name released_at: releasedAt tag_name: tagName tag_path: tagPath upcoming_release: upcomingRelease author { id username name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: sort + in: query + required: false + description: Sort group releases by given criteria. + schema: + type: string + enum: + - RELEASED_AT_DESC + - RELEASED_AT_ASC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + releases: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of when the release was created. + description: + type: string + description: Description (also known as "release notes") of the release. + historical_release: + type: boolean + description: Indicates the release is a historical release. + id: + type: string + description: Global ID of the release. + name: + type: string + description: Name of the release. + released_at: + type: string + description: Timestamp of when the release was released. + tag_name: + type: string + description: Name of the tag associated with the release. + tag_path: + type: string + description: Relative web path to the tag associated with the release. + upcoming_release: + type: boolean + description: Indicates the release is an upcoming release. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_root_namespace&method=get: + post: + operationId: group_root_namespace_get + summary: Top-level namespace of the namespace. + description: Top-level namespace of the namespace. Generated from the GitLab GraphQL schema field Group.rootNamespace (Namespace). + externalDocs: + description: 'GitLab GraphQL API reference: Group.rootNamespace' + url: https://docs.gitlab.com/api/graphql/reference/#grouprootnamespace + x-stackQL-graphQL: + id: gitlab.groups.group_root_namespace.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { rootNamespace { actual_repository_size_limit: actualRepositorySizeLimit actual_size_limit: actualSizeLimit additional_purchased_storage_size: additionalPurchasedStorageSize avatar_url: avatarUrl contains_locked_projects: containsLockedProjects cross_project_pipeline_available: crossProjectPipelineAvailable description full_name: fullName full_path: fullPath id lfs_enabled: lfsEnabled name path repository_size_excess_project_count: repositorySizeExcessProjectCount request_access_enabled: requestAccessEnabled shared_runners_setting: sharedRunnersSetting storage_size_limit: storageSizeLimit total_repository_size: totalRepositorySize total_repository_size_excess: totalRepositorySizeExcess visibility web_url: webUrl } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + rootNamespace: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for repositories in the namespace in bytes. This limit only applies to namespaces under Project limit enforcement. + actual_size_limit: + type: number + description: The actual storage size limit (in bytes) based on the enforcement type of either repository or namespace. This limit is agnostic of enforcement type. + additional_purchased_storage_size: + type: number + description: Additional storage purchased for the root namespace in bytes. + avatar_url: + type: string + description: URL to avatar image file of the namespace. + contains_locked_projects: + type: boolean + description: Includes at least one project where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + cross_project_pipeline_available: + type: boolean + description: Indicates if the cross_project_pipeline feature is available for the namespace. + description: + type: string + description: Description of the namespace. + full_name: + type: string + description: Full name of the namespace. + full_path: + type: string + description: Full path of the namespace. + id: + type: string + description: ID of the namespace. + lfs_enabled: + type: boolean + description: Indicates if Large File Storage (LFS) is enabled for namespace. + name: + type: string + description: Name of the namespace. + path: + type: string + description: Path of the namespace. + repository_size_excess_project_count: + type: integer + description: Number of projects in the root namespace where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + request_access_enabled: + type: boolean + description: Indicates if users can request access to namespace. + shared_runners_setting: + type: string + enum: + - DISABLED_AND_UNOVERRIDABLE + - DISABLED_AND_OVERRIDABLE + - ENABLED + description: Shared runners availability for the namespace and its descendants. + storage_size_limit: + type: number + description: The storage limit (in bytes) included with the root namespace plan. This limit only applies to namespaces under namespace limit enforcement. + total_repository_size: + type: number + description: Total repository size of all projects in the root namespace in bytes. + total_repository_size_excess: + type: number + description: Total excess repository size of all projects in the root namespace in bytes. This only applies to namespaces under Project limit enforcement. + visibility: + type: string + description: Visibility of the namespace. + web_url: + type: string + description: URL of the namespace. + /api/graphql?resource=group_root_storage_statistics&method=get: + post: + operationId: group_root_storage_statistics_get + summary: Aggregated storage statistics of the namespace. Only available for root namespaces. + description: Aggregated storage statistics of the namespace. Only available for root namespaces. Generated from the GitLab GraphQL schema field Group.rootStorageStatistics (RootStorageStatistics). + externalDocs: + description: 'GitLab GraphQL API reference: Group.rootStorageStatistics' + url: https://docs.gitlab.com/api/graphql/reference/#grouprootstoragestatistics + x-stackQL-graphQL: + id: gitlab.groups.group_root_storage_statistics.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { rootStorageStatistics { build_artifacts_size: buildArtifactsSize container_registry_size: containerRegistrySize container_registry_size_is_estimated: containerRegistrySizeIsEstimated dependency_proxy_size: dependencyProxySize lfs_objects_size: lfsObjectsSize packages_size: packagesSize pipeline_artifacts_size: pipelineArtifactsSize repository_size: repositorySize snippets_size: snippetsSize storage_size: storageSize uploads_size: uploadsSize wiki_size: wikiSize } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + rootStorageStatistics: + type: object + properties: + build_artifacts_size: + type: number + description: CI artifacts size in bytes. + container_registry_size: + type: number + description: Container registry size in bytes. + container_registry_size_is_estimated: + type: boolean + description: Indicates whether the deduplicated container registry size for the namespace is an estimated value or not. + dependency_proxy_size: + type: number + description: Dependency Proxy sizes in bytes. + lfs_objects_size: + type: number + description: LFS objects size in bytes. + packages_size: + type: number + description: Packages size in bytes. + pipeline_artifacts_size: + type: number + description: CI pipeline artifacts size in bytes. + repository_size: + type: number + description: Git repository size in bytes. + snippets_size: + type: number + description: Snippets size in bytes. + storage_size: + type: number + description: Total storage in bytes. + uploads_size: + type: number + description: Uploads size in bytes. + wiki_size: + type: number + description: Wiki size in bytes. + /api/graphql?resource=group_saved_replies&method=list: + post: + operationId: group_saved_replies_list + summary: Saved replies available to the group. This field can only be resolved for one group in any single request. + description: Saved replies available to the group. This field can only be resolved for one group in any single request. Generated from the GitLab GraphQL schema field Group.savedReplies (connection of GroupSavedReply nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.savedReplies' + url: https://docs.gitlab.com/api/graphql/reference/#groupsavedreplies + x-stackQL-graphQL: + id: gitlab.groups.group_saved_replies.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.savedReplies.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.savedReplies.pageInfo.endCursor + terminateOnJsonPath: $.data.group.savedReplies.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { savedReplies(first: 100{{ .cursor }}{{ if .include_ancestor_groups }}, includeAncestorGroups: {{ .include_ancestor_groups }}{{ end }}) { nodes { content id name } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: include_ancestor_groups + in: query + required: false + description: Include saved replies from parent groups. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + savedReplies: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + content: + type: string + description: Content of the saved reply. + id: + type: string + description: Global ID of the group-level saved reply. + name: + type: string + description: Name of the saved reply. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_saved_reply&method=get: + post: + operationId: group_saved_reply_get + summary: Saved reply in the group. This field can only be resolved for one group in any single request. + description: Saved reply in the group. This field can only be resolved for one group in any single request. Generated from the GitLab GraphQL schema field Group.savedReply (GroupSavedReply). + externalDocs: + description: 'GitLab GraphQL API reference: Group.savedReply' + url: https://docs.gitlab.com/api/graphql/reference/#groupsavedreply + x-stackQL-graphQL: + id: gitlab.groups.group_saved_reply.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { savedReply(id: "{{ .id }}") { content id name } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: id + in: query + required: true + description: Global ID of a saved reply. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + savedReply: + type: object + properties: + content: + type: string + description: Content of the saved reply. + id: + type: string + description: Global ID of the group-level saved reply. + name: + type: string + description: Name of the saved reply. + /api/graphql?resource=group_shared_groups&method=list: + post: + operationId: group_shared_groups_list + summary: List of shared groups this group was invited to. + description: List of shared groups this group was invited to. Generated from the GitLab GraphQL schema field Group.sharedGroups (connection of Group nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.sharedGroups' + url: https://docs.gitlab.com/api/graphql/reference/#groupsharedgroups + x-stackQL-graphQL: + id: gitlab.groups.group_shared_groups.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.sharedGroups.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.sharedGroups.pageInfo.endCursor + terminateOnJsonPath: $.data.group.sharedGroups.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { sharedGroups(first: 100{{ .cursor }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { actual_repository_size_limit: actualRepositorySizeLimit actual_size_limit: actualSizeLimit additional_purchased_storage_size: additionalPurchasedStorageSize admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_stale_runner_pruning: allowStaleRunnerPruning archived auto_devops_enabled: autoDevopsEnabled avatar_url: avatarUrl billable_members_count: billableMembersCount contains_locked_projects: containsLockedProjects created_at: createdAt cross_project_pipeline_available: crossProjectPipelineAvailable dependency_proxy_blob_count: dependencyProxyBlobCount dependency_proxy_image_count: dependencyProxyImageCount dependency_proxy_image_prefix: dependencyProxyImagePrefix dependency_proxy_total_size: dependencyProxyTotalSize dependency_proxy_total_size_bytes: dependencyProxyTotalSizeBytes descendant_groups_count: descendantGroupsCount description edit_path: editPath emails_disabled: emailsDisabled emails_enabled: emailsEnabled enforce_free_user_cap: enforceFreeUserCap full_name: fullName full_path: fullPath group_members_count: groupMembersCount id is_linked_to_subscription: isLinkedToSubscription is_self_archived: isSelfArchived lfs_enabled: lfsEnabled lock_math_rendering_limits_enabled: lockMathRenderingLimitsEnabled math_rendering_limits_enabled: mathRenderingLimitsEnabled mentions_disabled: mentionsDisabled name path project_creation_level: projectCreationLevel projects_count: projectsCount repository_size_excess_project_count: repositorySizeExcessProjectCount request_access_enabled: requestAccessEnabled require_two_factor_authentication: requireTwoFactorAuthentication share_with_group_lock: shareWithGroupLock shared_runners_setting: sharedRunnersSetting storage_size_limit: storageSizeLimit subgroup_creation_level: subgroupCreationLevel total_repository_size: totalRepositorySize total_repository_size_excess: totalRepositorySizeExcess two_factor_grace_period: twoFactorGracePeriod updated_at: updatedAt visibility web_path: webPath web_url: webUrl } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: search + in: query + required: false + description: Search for a specific group. + schema: + type: string + - name: sort + in: query + required: false + description: Order by name, created at, updated at, path, id or similarity if searching. + schema: + type: string + enum: + - SIMILARITY + - CREATED_AT_ASC + - CREATED_AT_DESC + - UPDATED_AT_ASC + - UPDATED_AT_DESC + - NAME_ASC + - NAME_DESC + - PATH_ASC + - PATH_DESC + - ID_ASC + - ID_DESC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + sharedGroups: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for repositories in the namespace in bytes. This limit only applies to namespaces under Project limit enforcement. + actual_size_limit: + type: number + description: The actual storage size limit (in bytes) based on the enforcement type of either repository or namespace. This limit is agnostic of enforcement type. + additional_purchased_storage_size: + type: number + description: Additional storage purchased for the root namespace in bytes. + admin_edit_path: + type: string + description: Admin path for editing group. Only available to admins. + admin_show_path: + type: string + description: Admin path of the group. Only available to admins. + allow_stale_runner_pruning: + type: boolean + description: Indicates whether to regularly prune stale group runners. Defaults to false. + archived: + type: boolean + description: Indicates if the group or any ancestor is archived. + auto_devops_enabled: + type: boolean + description: Indicates whether Auto DevOps is enabled for all projects within the group. + avatar_url: + type: string + description: Avatar URL of the group. + billable_members_count: + type: integer + description: Number of billable users in the group. + contains_locked_projects: + type: boolean + description: Includes at least one project where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + created_at: + type: string + description: Timestamp of the group creation. + cross_project_pipeline_available: + type: boolean + description: Indicates if the cross_project_pipeline feature is available for the namespace. + dependency_proxy_blob_count: + type: integer + description: Number of dependency proxy blobs cached in the group. + dependency_proxy_image_count: + type: integer + description: Number of dependency proxy images cached in the group. + dependency_proxy_image_prefix: + type: string + description: Prefix for pulling images when using the dependency proxy. + dependency_proxy_total_size: + type: string + description: Total size of the dependency proxy cached images. + dependency_proxy_total_size_bytes: + type: string + description: Total size of the dependency proxy cached images in bytes, encoded as a string. + descendant_groups_count: + type: integer + description: Count of direct descendant groups of the group. + description: + type: string + description: Description of the namespace. + edit_path: + type: string + description: Path for editing group. + emails_disabled: + type: boolean + description: Indicates if a group has email notifications disabled. + emails_enabled: + type: boolean + description: Indicates if a group has email notifications enabled. + enforce_free_user_cap: + type: boolean + description: Indicates whether the group has limited users for a free plan. + full_name: + type: string + description: Full name of the group. + full_path: + type: string + description: Full path of the group. + group_members_count: + type: integer + description: Count of direct members of the group. + id: + type: string + description: ID of the group. + is_linked_to_subscription: + type: boolean + description: Indicates if group is linked to a subscription. + is_self_archived: + type: boolean + description: Indicates if the group is archived. + lfs_enabled: + type: boolean + description: Indicates if Large File Storage (LFS) is enabled for namespace. + lock_math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are locked for all descendant groups. + math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are used for the group. + mentions_disabled: + type: boolean + description: Indicates if a group is disabled from getting mentioned. + name: + type: string + description: Name of the group. + path: + type: string + description: Path of the namespace. + project_creation_level: + type: string + description: Permission level required to create projects in the group. + projects_count: + type: integer + description: Count of direct projects in the group. + repository_size_excess_project_count: + type: integer + description: Number of projects in the root namespace where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + request_access_enabled: + type: boolean + description: Indicates if users can request access to namespace. + require_two_factor_authentication: + type: boolean + description: Indicates if all users in the group are required to set up two-factor authentication. + share_with_group_lock: + type: boolean + description: Indicates if sharing a project with another group within the group is prevented. + shared_runners_setting: + type: string + enum: + - DISABLED_AND_UNOVERRIDABLE + - DISABLED_AND_OVERRIDABLE + - ENABLED + description: Shared runners availability for the namespace and its descendants. + storage_size_limit: + type: number + description: The storage limit (in bytes) included with the root namespace plan. This limit only applies to namespaces under namespace limit enforcement. + subgroup_creation_level: + type: string + description: Permission level required to create subgroups within the group. + total_repository_size: + type: number + description: Total repository size of all projects in the root namespace in bytes. + total_repository_size_excess: + type: number + description: Total excess repository size of all projects in the root namespace in bytes. This only applies to namespaces under Project limit enforcement. + two_factor_grace_period: + type: integer + description: Time before two-factor authentication is enforced. + updated_at: + type: string + description: Timestamp of when the group was last updated. + visibility: + type: string + description: Visibility of the namespace. + web_path: + type: string + description: Web path of the group. + web_url: + type: string + description: Web URL of the group. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_shared_projects&method=list: + post: + operationId: group_shared_projects_list + summary: List of shared projects this group was invited to. + description: List of shared projects this group was invited to. Generated from the GitLab GraphQL schema field Group.sharedProjects (connection of Project nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.sharedProjects' + url: https://docs.gitlab.com/api/graphql/reference/#groupsharedprojects + x-stackQL-graphQL: + id: gitlab.groups.group_shared_projects.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.sharedProjects.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.sharedProjects.pageInfo.endCursor + terminateOnJsonPath: $.data.group.sharedProjects.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { sharedProjects(first: 100{{ .cursor }}{{ if .active }}, active: {{ .active }}{{ end }}{{ if .min_access_level }}, minAccessLevel: {{ .min_access_level }}{{ end }}{{ if .programming_language_name }}, programmingLanguageName: "{{ .programming_language_name }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: "{{ .sort }}"{{ end }}) { nodes { actual_repository_size_limit: actualRepositorySizeLimit admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_merge_on_skipped_pipeline: allowMergeOnSkippedPipeline allows_multiple_merge_request_assignees: allowsMultipleMergeRequestAssignees allows_multiple_merge_request_reviewers: allowsMultipleMergeRequestReviewers archived autoclose_referenced_issues: autocloseReferencedIssues avatar_url: avatarUrl ci_config_path_or_default: ciConfigPathOrDefault container_registry_enabled: containerRegistryEnabled container_scanning_for_registry_enabled: containerScanningForRegistryEnabled created_at: createdAt description edit_path: editPath forks_count: forksCount full_path: fullPath has_jira_vulnerability_issue_creation_enabled: hasJiraVulnerabilityIssueCreationEnabled http_url_to_repo: httpUrlToRepo id import_status: importStatus is_forked: isForked issues_enabled: issuesEnabled jira_import_status: jiraImportStatus jobs_enabled: jobsEnabled last_activity_at: lastActivityAt lfs_enabled: lfsEnabled merge_commit_template: mergeCommitTemplate merge_request_title_regex: mergeRequestTitleRegex merge_request_title_regex_description: mergeRequestTitleRegexDescription merge_requests_disable_committers_approval: mergeRequestsDisableCommittersApproval merge_requests_enabled: mergeRequestsEnabled merge_requests_ff_only_enabled: mergeRequestsFfOnlyEnabled name name_with_namespace: nameWithNamespace only_allow_merge_if_all_discussions_are_resolved: onlyAllowMergeIfAllDiscussionsAreResolved only_allow_merge_if_all_status_checks_passed: onlyAllowMergeIfAllStatusChecksPassed only_allow_merge_if_pipeline_succeeds: onlyAllowMergeIfPipelineSucceeds open_issues_count: openIssuesCount open_merge_requests_count: openMergeRequestsCount pages_force_https: pagesForceHttps pages_use_unique_domain: pagesUseUniqueDomain path pre_receive_secret_detection_enabled: preReceiveSecretDetectionEnabled prevent_merge_without_jira_issue_enabled: preventMergeWithoutJiraIssueEnabled printing_merge_request_link_enabled: printingMergeRequestLinkEnabled public_jobs: publicJobs remove_source_branch_after_merge: removeSourceBranchAfterMerge repository_size_excess: repositorySizeExcess request_access_enabled: requestAccessEnabled secret_push_protection_enabled: secretPushProtectionEnabled security_configuration_path: securityConfigurationPath security_dashboard_path: securityDashboardPath service_desk_address: serviceDeskAddress service_desk_enabled: serviceDeskEnabled shared_runners_enabled: sharedRunnersEnabled snippets_enabled: snippetsEnabled squash_commit_template: squashCommitTemplate squash_read_only: squashReadOnly ssh_url_to_repo: sshUrlToRepo star_count: starCount suggestion_commit_message: suggestionCommitMessage topics updated_at: updatedAt visibility web_path: webPath web_url: webUrl wiki_enabled: wikiEnabled namespace { id full_path: fullPath name } group_: group { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: active + in: query + required: false + description: Filters by projects that are not archived and not marked for deletion. + schema: + type: boolean + - name: min_access_level + in: query + required: false + description: Return only projects where current user has at least the specified access level. + schema: + type: string + enum: + - NO_ACCESS + - MINIMAL_ACCESS + - GUEST + - PLANNER + - REPORTER + - SECURITY_MANAGER + - DEVELOPER + - MAINTAINER + - OWNER + - ADMIN + - name: programming_language_name + in: query + required: false + description: 'Filter projects by programming language name (case insensitive). For example: `css` or `ruby`.' + schema: + type: string + - name: search + in: query + required: false + description: Search query, which can be for the project name, a path, or a description. + schema: + type: string + - name: sort + in: query + required: false + description: 'Sort order of results. Format: `_`, for example: `id_desc` or `name_asc`. Defaults to `id_desc`, or `similarity` if search used.' + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + sharedProjects: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for the repository in bytes. + admin_edit_path: + type: string + description: Admin path for editing project. Only available to admins. + admin_show_path: + type: string + description: Admin path of the project. Only available to admins. + allow_merge_on_skipped_pipeline: + type: boolean + description: If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. + allows_multiple_merge_request_assignees: + type: boolean + description: Project allows assigning multiple users to a merge request. + allows_multiple_merge_request_reviewers: + type: boolean + description: Project allows assigning multiple reviewers to a merge request. + archived: + type: boolean + description: Indicates if the project or any ancestor is archived. + autoclose_referenced_issues: + type: boolean + description: Indicates if issues referenced by merge requests and commits within the default branch are closed automatically. + avatar_url: + type: string + description: Avatar URL of the project. + ci_config_path_or_default: + type: string + description: Path of the CI configuration file. + container_registry_enabled: + type: boolean + description: Indicates if Container registry is enabled for the current user + container_scanning_for_registry_enabled: + type: boolean + description: Indicates whether container scanning for registry is enabled or not for the project. Returns `null` if unauthorized. + created_at: + type: string + description: Timestamp of the project creation. + description: + type: string + description: Short description of the project. + edit_path: + type: string + description: Path for editing project. + forks_count: + type: integer + description: Number of times the project has been forked. + full_path: + type: string + description: Full path of the project. + has_jira_vulnerability_issue_creation_enabled: + type: boolean + description: Indicates whether Jira issue creation from vulnerabilities is enabled. + http_url_to_repo: + type: string + description: URL to connect to the project via HTTPS. + id: + type: string + description: ID of the project. + import_status: + type: string + description: Status of import background job of the project. + is_forked: + type: boolean + description: Project is forked. + issues_enabled: + type: boolean + description: Indicates if Issues are enabled for the current user + jira_import_status: + type: string + description: Status of Jira import background job of the project. + jobs_enabled: + type: boolean + description: Indicates if CI/CD pipeline jobs are enabled for the current user. + last_activity_at: + type: string + description: Timestamp of the project last activity. + lfs_enabled: + type: boolean + description: Indicates if the project has Large File Storage (LFS) enabled. + merge_commit_template: + type: string + description: Template used to create merge commit message in merge requests. + merge_request_title_regex: + type: string + description: Regex used to validate the title of merge requests. + merge_request_title_regex_description: + type: string + description: Description of the regex used to validate the title of merge requests. + merge_requests_disable_committers_approval: + type: boolean + description: Indicates that committers of the given merge request cannot approve. + merge_requests_enabled: + type: boolean + description: Indicates if Merge requests are enabled for the current user + merge_requests_ff_only_enabled: + type: boolean + description: Indicates if no merge commits should be created and all merges should instead be fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded. + name: + type: string + description: Name of the project without the namespace. + name_with_namespace: + type: string + description: Name of the project including the namespace. + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Indicates if merge requests of the project can only be merged when all the discussions are resolved. + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Indicates that merges of merge requests should be blocked unless all status checks have passed. + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Indicates if merge requests of the project can only be merged with successful jobs. + open_issues_count: + type: integer + description: Number of open issues for the project. + open_merge_requests_count: + type: integer + description: Number of open merge requests for the project. + pages_force_https: + type: boolean + description: Project's Pages site redirects unsecured connections to HTTPS. + pages_use_unique_domain: + type: boolean + description: Project's Pages site uses a unique subdomain. + path: + type: string + description: Path of the project. + pre_receive_secret_detection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + prevent_merge_without_jira_issue_enabled: + type: boolean + description: Indicates if an associated issue from Jira is required. + printing_merge_request_link_enabled: + type: boolean + description: Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line. + public_jobs: + type: boolean + description: Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts. + remove_source_branch_after_merge: + type: boolean + description: Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project. + repository_size_excess: + type: number + description: Size of repository that exceeds the limit in bytes. + request_access_enabled: + type: boolean + description: Indicates if users can request member access to the project. + secret_push_protection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + security_configuration_path: + type: string + description: Path to project's security configuration. + security_dashboard_path: + type: string + description: Path to project's security dashboard. + service_desk_address: + type: string + description: E-mail address of the Service Desk. + service_desk_enabled: + type: boolean + description: Indicates if the project has Service Desk enabled. + shared_runners_enabled: + type: boolean + description: Indicates if shared runners are enabled for the project. + snippets_enabled: + type: boolean + description: Indicates if Snippets are enabled for the current user + squash_commit_template: + type: string + description: Template used to create squash commit message in merge requests. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + ssh_url_to_repo: + type: string + description: URL to connect to the project via SSH. + star_count: + type: integer + description: Number of times the project has been starred. + suggestion_commit_message: + type: string + description: Commit message used to apply merge request suggestions. + topics: + type: array + items: + type: string + description: List of project topics. + updated_at: + type: string + description: Timestamp of when the project was last updated. + visibility: + type: string + description: Visibility of the project. + web_path: + type: string + description: Web path of the project. + web_url: + type: string + description: Web URL of the project. + wiki_enabled: + type: boolean + description: Indicates if Wikis are enabled for the current user + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_timelogs&method=list: + post: + operationId: group_timelogs_list + summary: Time logged on issues and merge requests in the group and its subgroups. + description: Time logged on issues and merge requests in the group and its subgroups. Generated from the GitLab GraphQL schema field Group.timelogs (connection of Timelog nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.timelogs' + url: https://docs.gitlab.com/api/graphql/reference/#grouptimelogs + x-stackQL-graphQL: + id: gitlab.groups.group_timelogs.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.timelogs.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.timelogs.pageInfo.endCursor + terminateOnJsonPath: $.data.group.timelogs.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { timelogs(first: 100{{ .cursor }}{{ if .end_date }}, endDate: "{{ .end_date }}"{{ end }}{{ if .end_time }}, endTime: "{{ .end_time }}"{{ end }}{{ if .group_id }}, groupId: "{{ .group_id }}"{{ end }}{{ if .project_id }}, projectId: "{{ .project_id }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .start_date }}, startDate: "{{ .start_date }}"{{ end }}{{ if .start_time }}, startTime: "{{ .start_time }}"{{ end }}{{ if .username }}, username: "{{ .username }}"{{ end }}) { nodes { id spent_at: spentAt summary time_spent: timeSpent user { id username name } project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: end_date + in: query + required: false + description: List timelogs within a date range where the logged date is equal to or before endDate. + schema: + type: string + - name: end_time + in: query + required: false + description: List timelogs within a time range where the logged time is equal to or before endTime. + schema: + type: string + - name: group_id + in: query + required: false + description: List timelogs for a group. + schema: + type: string + - name: project_id + in: query + required: false + description: List timelogs for a project. + schema: + type: string + - name: sort + in: query + required: false + description: List timelogs in a particular order. + schema: + type: string + enum: + - SPENT_AT_ASC + - SPENT_AT_DESC + - TIME_SPENT_ASC + - TIME_SPENT_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: start_date + in: query + required: false + description: List timelogs within a date range where the logged date is equal to or after startDate. + schema: + type: string + - name: start_time + in: query + required: false + description: List timelogs within a time range where the logged time is equal to or after startTime. + schema: + type: string + - name: username + in: query + required: false + description: List timelogs for a user. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + timelogs: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: Internal ID of the timelog. + spent_at: + type: string + description: Timestamp of when the time tracked was spent at. + summary: + type: string + description: Summary of how the time was spent. + time_spent: + type: integer + description: Time spent displayed in seconds. + user: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_user_permissions&method=get: + post: + operationId: group_user_permissions_get + summary: Permissions for the current user on the resource + description: Permissions for the current user on the resource Generated from the GitLab GraphQL schema field Group.userPermissions (GroupPermissions). + externalDocs: + description: 'GitLab GraphQL API reference: Group.userPermissions' + url: https://docs.gitlab.com/api/graphql/reference/#groupuserpermissions + x-stackQL-graphQL: + id: gitlab.groups.group_user_permissions.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { userPermissions { admin_ai_catalog_item_consumer: adminAiCatalogItemConsumer admin_all_resources: adminAllResources admin_issue: adminIssue admin_work_item_lifecycle: adminWorkItemLifecycle archive_group: archiveGroup can_leave: canLeave change_group: changeGroup create_custom_emoji: createCustomEmoji create_projects: createProjects generate_description: generateDescription read_crm_contact: readCrmContact read_crm_organization: readCrmOrganization read_group: readGroup remove_group: removeGroup view_edit_page: viewEditPage } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + userPermissions: + type: object + properties: + admin_ai_catalog_item_consumer: + type: boolean + description: If `true`, the user can perform `admin_ai_catalog_item_consumer` on this resource + admin_all_resources: + type: boolean + description: If `true`, the user is an instance administrator. + admin_issue: + type: boolean + description: If `true`, the user can perform `admin_issue` on this resource + admin_work_item_lifecycle: + type: boolean + description: If `true`, the user can perform `admin_work_item_lifecycle` on this resource + archive_group: + type: boolean + description: If `true`, the user can perform `archive_group` on this resource + can_leave: + type: boolean + description: If `true`, the user can leave this group. + change_group: + type: boolean + description: If `true`, the user can perform `change_group` on this resource + create_custom_emoji: + type: boolean + description: If `true`, the user can perform `create_custom_emoji` on this resource + create_projects: + type: boolean + description: If `true`, the user can perform `create_projects` on this resource + generate_description: + type: boolean + description: If `true`, the user can perform `generate_description` on this resource + read_crm_contact: + type: boolean + description: If `true`, the user can perform `read_crm_contact` on this resource + read_crm_organization: + type: boolean + description: If `true`, the user can perform `read_crm_organization` on this resource + read_group: + type: boolean + description: If `true`, the user can perform `read_group` on this resource + remove_group: + type: boolean + description: If `true`, the user can perform `remove_group` on this resource + view_edit_page: + type: boolean + description: If `true`, the user can perform `view_edit_page` on this resource + /api/graphql?resource=group&method=get: + post: + operationId: group_get + summary: Find a group. + description: Find a group. Generated from the GitLab GraphQL schema field Query.group (Group). + externalDocs: + description: 'GitLab GraphQL API reference: Query.group' + url: https://docs.gitlab.com/api/graphql/reference/#querygroup + x-stackQL-graphQL: + id: gitlab.groups.group.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { actual_repository_size_limit: actualRepositorySizeLimit actual_size_limit: actualSizeLimit additional_purchased_storage_size: additionalPurchasedStorageSize admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_stale_runner_pruning: allowStaleRunnerPruning archived auto_devops_enabled: autoDevopsEnabled avatar_url: avatarUrl billable_members_count: billableMembersCount contains_locked_projects: containsLockedProjects created_at: createdAt cross_project_pipeline_available: crossProjectPipelineAvailable dependency_proxy_blob_count: dependencyProxyBlobCount dependency_proxy_image_count: dependencyProxyImageCount dependency_proxy_image_prefix: dependencyProxyImagePrefix dependency_proxy_total_size: dependencyProxyTotalSize dependency_proxy_total_size_bytes: dependencyProxyTotalSizeBytes descendant_groups_count: descendantGroupsCount description edit_path: editPath emails_disabled: emailsDisabled emails_enabled: emailsEnabled enforce_free_user_cap: enforceFreeUserCap full_name: fullName full_path: fullPath group_members_count: groupMembersCount id is_linked_to_subscription: isLinkedToSubscription is_self_archived: isSelfArchived lfs_enabled: lfsEnabled lock_math_rendering_limits_enabled: lockMathRenderingLimitsEnabled math_rendering_limits_enabled: mathRenderingLimitsEnabled mentions_disabled: mentionsDisabled name path project_creation_level: projectCreationLevel projects_count: projectsCount repository_size_excess_project_count: repositorySizeExcessProjectCount request_access_enabled: requestAccessEnabled require_two_factor_authentication: requireTwoFactorAuthentication share_with_group_lock: shareWithGroupLock shared_runners_setting: sharedRunnersSetting storage_size_limit: storageSizeLimit subgroup_creation_level: subgroupCreationLevel total_repository_size: totalRepositorySize total_repository_size_excess: totalRepositorySizeExcess two_factor_grace_period: twoFactorGracePeriod updated_at: updatedAt visibility web_path: webPath web_url: webUrl } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group. For example, `gitlab-org/gitlab-foss`. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for repositories in the namespace in bytes. This limit only applies to namespaces under Project limit enforcement. + actual_size_limit: + type: number + description: The actual storage size limit (in bytes) based on the enforcement type of either repository or namespace. This limit is agnostic of enforcement type. + additional_purchased_storage_size: + type: number + description: Additional storage purchased for the root namespace in bytes. + admin_edit_path: + type: string + description: Admin path for editing group. Only available to admins. + admin_show_path: + type: string + description: Admin path of the group. Only available to admins. + allow_stale_runner_pruning: + type: boolean + description: Indicates whether to regularly prune stale group runners. Defaults to false. + archived: + type: boolean + description: Indicates if the group or any ancestor is archived. + auto_devops_enabled: + type: boolean + description: Indicates whether Auto DevOps is enabled for all projects within the group. + avatar_url: + type: string + description: Avatar URL of the group. + billable_members_count: + type: integer + description: Number of billable users in the group. + contains_locked_projects: + type: boolean + description: Includes at least one project where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + created_at: + type: string + description: Timestamp of the group creation. + cross_project_pipeline_available: + type: boolean + description: Indicates if the cross_project_pipeline feature is available for the namespace. + dependency_proxy_blob_count: + type: integer + description: Number of dependency proxy blobs cached in the group. + dependency_proxy_image_count: + type: integer + description: Number of dependency proxy images cached in the group. + dependency_proxy_image_prefix: + type: string + description: Prefix for pulling images when using the dependency proxy. + dependency_proxy_total_size: + type: string + description: Total size of the dependency proxy cached images. + dependency_proxy_total_size_bytes: + type: string + description: Total size of the dependency proxy cached images in bytes, encoded as a string. + descendant_groups_count: + type: integer + description: Count of direct descendant groups of the group. + description: + type: string + description: Description of the namespace. + edit_path: + type: string + description: Path for editing group. + emails_disabled: + type: boolean + description: Indicates if a group has email notifications disabled. + emails_enabled: + type: boolean + description: Indicates if a group has email notifications enabled. + enforce_free_user_cap: + type: boolean + description: Indicates whether the group has limited users for a free plan. + full_name: + type: string + description: Full name of the group. + full_path: + type: string + description: Full path of the group. + group_members_count: + type: integer + description: Count of direct members of the group. + id: + type: string + description: ID of the group. + is_linked_to_subscription: + type: boolean + description: Indicates if group is linked to a subscription. + is_self_archived: + type: boolean + description: Indicates if the group is archived. + lfs_enabled: + type: boolean + description: Indicates if Large File Storage (LFS) is enabled for namespace. + lock_math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are locked for all descendant groups. + math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are used for the group. + mentions_disabled: + type: boolean + description: Indicates if a group is disabled from getting mentioned. + name: + type: string + description: Name of the group. + path: + type: string + description: Path of the namespace. + project_creation_level: + type: string + description: Permission level required to create projects in the group. + projects_count: + type: integer + description: Count of direct projects in the group. + repository_size_excess_project_count: + type: integer + description: Number of projects in the root namespace where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + request_access_enabled: + type: boolean + description: Indicates if users can request access to namespace. + require_two_factor_authentication: + type: boolean + description: Indicates if all users in the group are required to set up two-factor authentication. + share_with_group_lock: + type: boolean + description: Indicates if sharing a project with another group within the group is prevented. + shared_runners_setting: + type: string + enum: + - DISABLED_AND_UNOVERRIDABLE + - DISABLED_AND_OVERRIDABLE + - ENABLED + description: Shared runners availability for the namespace and its descendants. + storage_size_limit: + type: number + description: The storage limit (in bytes) included with the root namespace plan. This limit only applies to namespaces under namespace limit enforcement. + subgroup_creation_level: + type: string + description: Permission level required to create subgroups within the group. + total_repository_size: + type: number + description: Total repository size of all projects in the root namespace in bytes. + total_repository_size_excess: + type: number + description: Total excess repository size of all projects in the root namespace in bytes. This only applies to namespaces under Project limit enforcement. + two_factor_grace_period: + type: integer + description: Time before two-factor authentication is enforced. + updated_at: + type: string + description: Timestamp of when the group was last updated. + visibility: + type: string + description: Visibility of the namespace. + web_path: + type: string + description: Web path of the group. + web_url: + type: string + description: Web URL of the group. + /api/graphql?resource=groups&method=list: + post: + operationId: groups_list + summary: Find groups. + description: Find groups. Generated from the GitLab GraphQL schema field Query.groups (connection of Group nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.groups' + url: https://docs.gitlab.com/api/graphql/reference/#querygroups + x-stackQL-graphQL: + id: gitlab.groups.groups.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.groups.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.groups.pageInfo.endCursor + terminateOnJsonPath: $.data.groups.pageInfo.hasNextPage + query: 'query { groups(first: 100{{ .cursor }}{{ if .active }}, active: {{ .active }}{{ end }}{{ if .all_available }}, allAvailable: {{ .all_available }}{{ end }}{{ if .marked_for_deletion_on }}, markedForDeletionOn: "{{ .marked_for_deletion_on }}"{{ end }}{{ if .owned_only }}, ownedOnly: {{ .owned_only }}{{ end }}{{ if .parent_path }}, parentPath: "{{ .parent_path }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: "{{ .sort }}"{{ end }}{{ if .top_level_only }}, topLevelOnly: {{ .top_level_only }}{{ end }}) { nodes { actual_repository_size_limit: actualRepositorySizeLimit actual_size_limit: actualSizeLimit additional_purchased_storage_size: additionalPurchasedStorageSize admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_stale_runner_pruning: allowStaleRunnerPruning archived auto_devops_enabled: autoDevopsEnabled avatar_url: avatarUrl billable_members_count: billableMembersCount contains_locked_projects: containsLockedProjects created_at: createdAt cross_project_pipeline_available: crossProjectPipelineAvailable dependency_proxy_blob_count: dependencyProxyBlobCount dependency_proxy_image_count: dependencyProxyImageCount dependency_proxy_image_prefix: dependencyProxyImagePrefix dependency_proxy_total_size: dependencyProxyTotalSize dependency_proxy_total_size_bytes: dependencyProxyTotalSizeBytes descendant_groups_count: descendantGroupsCount description edit_path: editPath emails_disabled: emailsDisabled emails_enabled: emailsEnabled enforce_free_user_cap: enforceFreeUserCap full_name: fullName full_path: fullPath group_members_count: groupMembersCount id is_linked_to_subscription: isLinkedToSubscription is_self_archived: isSelfArchived lfs_enabled: lfsEnabled lock_math_rendering_limits_enabled: lockMathRenderingLimitsEnabled math_rendering_limits_enabled: mathRenderingLimitsEnabled mentions_disabled: mentionsDisabled name path project_creation_level: projectCreationLevel projects_count: projectsCount repository_size_excess_project_count: repositorySizeExcessProjectCount request_access_enabled: requestAccessEnabled require_two_factor_authentication: requireTwoFactorAuthentication share_with_group_lock: shareWithGroupLock shared_runners_setting: sharedRunnersSetting storage_size_limit: storageSizeLimit subgroup_creation_level: subgroupCreationLevel total_repository_size: totalRepositorySize total_repository_size_excess: totalRepositorySizeExcess two_factor_grace_period: twoFactorGracePeriod updated_at: updatedAt visibility web_path: webPath web_url: webUrl } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: active + in: query + required: false + description: When `nil` (default value), returns all groups. When `true`, returns only groups that are not pending deletion. When `false`, only returns groups that are pending deletion. + schema: + type: boolean + - name: all_available + in: query + required: false + description: | + When `true`, returns all accessible groups. When `false`, returns only groups where the user is a member. + Unauthenticated requests always return all public groups. The `owned_only` argument takes precedence. + schema: + type: boolean + - name: marked_for_deletion_on + in: query + required: false + description: Date when the group was marked for deletion. + schema: + type: string + - name: owned_only + in: query + required: false + description: Only include groups where the current user has an owner role. + schema: + type: boolean + - name: parent_path + in: query + required: false + description: Full path of the parent group. + schema: + type: string + - name: search + in: query + required: false + description: Search query for group name or group full path. + schema: + type: string + - name: sort + in: query + required: false + description: 'Sort order of results. Format: `_`, for example: `id_desc` or `name_asc`' + schema: + type: string + - name: top_level_only + in: query + required: false + description: Only include top-level groups. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + groups: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for repositories in the namespace in bytes. This limit only applies to namespaces under Project limit enforcement. + actual_size_limit: + type: number + description: The actual storage size limit (in bytes) based on the enforcement type of either repository or namespace. This limit is agnostic of enforcement type. + additional_purchased_storage_size: + type: number + description: Additional storage purchased for the root namespace in bytes. + admin_edit_path: + type: string + description: Admin path for editing group. Only available to admins. + admin_show_path: + type: string + description: Admin path of the group. Only available to admins. + allow_stale_runner_pruning: + type: boolean + description: Indicates whether to regularly prune stale group runners. Defaults to false. + archived: + type: boolean + description: Indicates if the group or any ancestor is archived. + auto_devops_enabled: + type: boolean + description: Indicates whether Auto DevOps is enabled for all projects within the group. + avatar_url: + type: string + description: Avatar URL of the group. + billable_members_count: + type: integer + description: Number of billable users in the group. + contains_locked_projects: + type: boolean + description: Includes at least one project where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + created_at: + type: string + description: Timestamp of the group creation. + cross_project_pipeline_available: + type: boolean + description: Indicates if the cross_project_pipeline feature is available for the namespace. + dependency_proxy_blob_count: + type: integer + description: Number of dependency proxy blobs cached in the group. + dependency_proxy_image_count: + type: integer + description: Number of dependency proxy images cached in the group. + dependency_proxy_image_prefix: + type: string + description: Prefix for pulling images when using the dependency proxy. + dependency_proxy_total_size: + type: string + description: Total size of the dependency proxy cached images. + dependency_proxy_total_size_bytes: + type: string + description: Total size of the dependency proxy cached images in bytes, encoded as a string. + descendant_groups_count: + type: integer + description: Count of direct descendant groups of the group. + description: + type: string + description: Description of the namespace. + edit_path: + type: string + description: Path for editing group. + emails_disabled: + type: boolean + description: Indicates if a group has email notifications disabled. + emails_enabled: + type: boolean + description: Indicates if a group has email notifications enabled. + enforce_free_user_cap: + type: boolean + description: Indicates whether the group has limited users for a free plan. + full_name: + type: string + description: Full name of the group. + full_path: + type: string + description: Full path of the group. + group_members_count: + type: integer + description: Count of direct members of the group. + id: + type: string + description: ID of the group. + is_linked_to_subscription: + type: boolean + description: Indicates if group is linked to a subscription. + is_self_archived: + type: boolean + description: Indicates if the group is archived. + lfs_enabled: + type: boolean + description: Indicates if Large File Storage (LFS) is enabled for namespace. + lock_math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are locked for all descendant groups. + math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are used for the group. + mentions_disabled: + type: boolean + description: Indicates if a group is disabled from getting mentioned. + name: + type: string + description: Name of the group. + path: + type: string + description: Path of the namespace. + project_creation_level: + type: string + description: Permission level required to create projects in the group. + projects_count: + type: integer + description: Count of direct projects in the group. + repository_size_excess_project_count: + type: integer + description: Number of projects in the root namespace where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + request_access_enabled: + type: boolean + description: Indicates if users can request access to namespace. + require_two_factor_authentication: + type: boolean + description: Indicates if all users in the group are required to set up two-factor authentication. + share_with_group_lock: + type: boolean + description: Indicates if sharing a project with another group within the group is prevented. + shared_runners_setting: + type: string + enum: + - DISABLED_AND_UNOVERRIDABLE + - DISABLED_AND_OVERRIDABLE + - ENABLED + description: Shared runners availability for the namespace and its descendants. + storage_size_limit: + type: number + description: The storage limit (in bytes) included with the root namespace plan. This limit only applies to namespaces under namespace limit enforcement. + subgroup_creation_level: + type: string + description: Permission level required to create subgroups within the group. + total_repository_size: + type: number + description: Total repository size of all projects in the root namespace in bytes. + total_repository_size_excess: + type: number + description: Total excess repository size of all projects in the root namespace in bytes. This only applies to namespaces under Project limit enforcement. + two_factor_grace_period: + type: integer + description: Time before two-factor authentication is enforced. + updated_at: + type: string + description: Timestamp of when the group was last updated. + visibility: + type: string + description: Visibility of the namespace. + web_path: + type: string + description: Web path of the group. + web_url: + type: string + description: Web URL of the group. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=iteration&method=get: + post: + operationId: iteration_get + summary: Find an iteration. + description: Find an iteration. Generated from the GitLab GraphQL schema field Query.iteration (Iteration). + externalDocs: + description: 'GitLab GraphQL API reference: Query.iteration' + url: https://docs.gitlab.com/api/graphql/reference/#queryiteration + x-stackQL-graphQL: + id: gitlab.groups.iteration.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { iteration(id: "{{ .id }}") { created_at: createdAt description due_date: dueDate id iid scoped_path: scopedPath scoped_url: scopedUrl sequence start_date: startDate state title updated_at: updatedAt web_path: webPath web_url: webUrl group_: group { id full_path: fullPath name } } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Find an iteration by its ID. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + iteration: + type: object + properties: + created_at: + type: string + description: Timestamp of iteration creation. + description: + type: string + description: Description of the iteration. + due_date: + type: string + description: Timestamp of the iteration due date. + id: + type: string + description: ID of the iteration. + iid: + type: string + description: Internal ID of the iteration. + scoped_path: + type: string + description: Web path of the iteration, scoped to the query parent. Only valid for Project parents. Returns null in other contexts. + scoped_url: + type: string + description: Web URL of the iteration, scoped to the query parent. Only valid for Project parents. Returns null in other contexts. + sequence: + type: integer + description: Sequence number for the iteration when you sort the containing cadence's iterations by the start and end date. The earliest starting and ending iteration is assigned 1. + start_date: + type: string + description: Timestamp of the iteration start date. + state: + type: string + enum: + - upcoming + - current + - opened + - closed + - all + description: State of the iteration. + title: + type: string + description: Title of the iteration. + updated_at: + type: string + description: Timestamp of last iteration update. + web_path: + type: string + description: Web path of the iteration. + web_url: + type: string + description: Web URL of the iteration. + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=namespace&method=get: + post: + operationId: namespace_get + summary: Find a namespace. + description: Find a namespace. Generated from the GitLab GraphQL schema field Query.namespace (Namespace). + externalDocs: + description: 'GitLab GraphQL API reference: Query.namespace' + url: https://docs.gitlab.com/api/graphql/reference/#querynamespace + x-stackQL-graphQL: + id: gitlab.groups.namespace.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { namespace(fullPath: "{{ .full_path }}") { actual_repository_size_limit: actualRepositorySizeLimit actual_size_limit: actualSizeLimit additional_purchased_storage_size: additionalPurchasedStorageSize avatar_url: avatarUrl contains_locked_projects: containsLockedProjects cross_project_pipeline_available: crossProjectPipelineAvailable description full_name: fullName full_path: fullPath id lfs_enabled: lfsEnabled name path repository_size_excess_project_count: repositorySizeExcessProjectCount request_access_enabled: requestAccessEnabled shared_runners_setting: sharedRunnersSetting storage_size_limit: storageSizeLimit total_repository_size: totalRepositorySize total_repository_size_excess: totalRepositorySizeExcess visibility web_url: webUrl } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the namespace. For example, `gitlab-org/gitlab-foss`. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + namespace: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for repositories in the namespace in bytes. This limit only applies to namespaces under Project limit enforcement. + actual_size_limit: + type: number + description: The actual storage size limit (in bytes) based on the enforcement type of either repository or namespace. This limit is agnostic of enforcement type. + additional_purchased_storage_size: + type: number + description: Additional storage purchased for the root namespace in bytes. + avatar_url: + type: string + description: URL to avatar image file of the namespace. + contains_locked_projects: + type: boolean + description: Includes at least one project where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + cross_project_pipeline_available: + type: boolean + description: Indicates if the cross_project_pipeline feature is available for the namespace. + description: + type: string + description: Description of the namespace. + full_name: + type: string + description: Full name of the namespace. + full_path: + type: string + description: Full path of the namespace. + id: + type: string + description: ID of the namespace. + lfs_enabled: + type: boolean + description: Indicates if Large File Storage (LFS) is enabled for namespace. + name: + type: string + description: Name of the namespace. + path: + type: string + description: Path of the namespace. + repository_size_excess_project_count: + type: integer + description: Number of projects in the root namespace where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + request_access_enabled: + type: boolean + description: Indicates if users can request access to namespace. + shared_runners_setting: + type: string + enum: + - DISABLED_AND_UNOVERRIDABLE + - DISABLED_AND_OVERRIDABLE + - ENABLED + description: Shared runners availability for the namespace and its descendants. + storage_size_limit: + type: number + description: The storage limit (in bytes) included with the root namespace plan. This limit only applies to namespaces under namespace limit enforcement. + total_repository_size: + type: number + description: Total repository size of all projects in the root namespace in bytes. + total_repository_size_excess: + type: number + description: Total excess repository size of all projects in the root namespace in bytes. This only applies to namespaces under Project limit enforcement. + visibility: + type: string + description: Visibility of the namespace. + web_url: + type: string + description: URL of the namespace. +components: + x-stackQL-resources: + group_cluster_agents: + id: gitlab.groups.group_cluster_agents + name: group_cluster_agents + title: Group Cluster Agents + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_cluster_agents&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.clusterAgents.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_cluster_agents/methods/list' + insert: [] + update: [] + delete: [] + group_contact_state_counts: + id: gitlab.groups.group_contact_state_counts + name: group_contact_state_counts + title: Group Contact State Counts + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_contact_state_counts&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.contactStateCounts + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_contact_state_counts/methods/get' + insert: [] + update: [] + delete: [] + group_contacts: + id: gitlab.groups.group_contacts + name: group_contacts + title: Group Contacts + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_contacts&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.contacts.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_contacts/methods/list' + insert: [] + update: [] + delete: [] + group_custom_emoji: + id: gitlab.groups.group_custom_emoji + name: group_custom_emoji + title: Group Custom Emoji + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_custom_emoji&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.customEmoji.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_custom_emoji/methods/list' + insert: [] + update: [] + delete: [] + group_descendant_groups: + id: gitlab.groups.group_descendant_groups + name: group_descendant_groups + title: Group Descendant Groups + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_descendant_groups&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.descendantGroups.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_descendant_groups/methods/list' + insert: [] + update: [] + delete: [] + group_environment_scopes: + id: gitlab.groups.group_environment_scopes + name: group_environment_scopes + title: Group Environment Scopes + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_environment_scopes&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.environmentScopes.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_environment_scopes/methods/list' + insert: [] + update: [] + delete: [] + group_group_members: + id: gitlab.groups.group_group_members + name: group_group_members + title: Group Group Members + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_group_members&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.groupMembers.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_group_members/methods/list' + insert: [] + update: [] + delete: [] + group_iteration_cadences: + id: gitlab.groups.group_iteration_cadences + name: group_iteration_cadences + title: Group Iteration Cadences + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_iteration_cadences&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.iterationCadences.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_iteration_cadences/methods/list' + insert: [] + update: [] + delete: [] + group_iterations: + id: gitlab.groups.group_iterations + name: group_iterations + title: Group Iterations + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_iterations&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.iterations.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_iterations/methods/list' + insert: [] + update: [] + delete: [] + group_label: + id: gitlab.groups.group_label + name: group_label + title: Group Label + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_label&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.label + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_label/methods/get' + insert: [] + update: [] + delete: [] + group_labels: + id: gitlab.groups.group_labels + name: group_labels + title: Group Labels + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_labels&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.labels.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_labels/methods/list' + insert: [] + update: [] + delete: [] + group_max_access_level: + id: gitlab.groups.group_max_access_level + name: group_max_access_level + title: Group Max Access Level + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_max_access_level&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.maxAccessLevel + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_max_access_level/methods/get' + insert: [] + update: [] + delete: [] + group_milestones: + id: gitlab.groups.group_milestones + name: group_milestones + title: Group Milestones + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_milestones&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.milestones.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_milestones/methods/list' + insert: [] + update: [] + delete: [] + group_namespace_settings: + id: gitlab.groups.group_namespace_settings + name: group_namespace_settings + title: Group Namespace Settings + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_namespace_settings&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.namespaceSettings + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_namespace_settings/methods/get' + insert: [] + update: [] + delete: [] + group_organization_state_counts: + id: gitlab.groups.group_organization_state_counts + name: group_organization_state_counts + title: Group Organization State Counts + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_organization_state_counts&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.organizationStateCounts + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_organization_state_counts/methods/get' + insert: [] + update: [] + delete: [] + group_organizations: + id: gitlab.groups.group_organizations + name: group_organizations + title: Group Organizations + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_organizations&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.organizations.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_organizations/methods/list' + insert: [] + update: [] + delete: [] + group_pages_deployments: + id: gitlab.groups.group_pages_deployments + name: group_pages_deployments + title: Group Pages Deployments + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_pages_deployments&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.pagesDeployments.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_pages_deployments/methods/list' + insert: [] + update: [] + delete: [] + group_parent: + id: gitlab.groups.group_parent + name: group_parent + title: Group Parent + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_parent&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.parent + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_parent/methods/get' + insert: [] + update: [] + delete: [] + group_pending_member_approvals: + id: gitlab.groups.group_pending_member_approvals + name: group_pending_member_approvals + title: Group Pending Member Approvals + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_pending_member_approvals&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.pendingMemberApprovals.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_pending_member_approvals/methods/list' + insert: [] + update: [] + delete: [] + group_projects: + id: gitlab.groups.group_projects + name: group_projects + title: Group Projects + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_projects&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.projects.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_projects/methods/list' + insert: [] + update: [] + delete: [] + group_releases: + id: gitlab.groups.group_releases + name: group_releases + title: Group Releases + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_releases&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.releases.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_releases/methods/list' + insert: [] + update: [] + delete: [] + group_root_namespace: + id: gitlab.groups.group_root_namespace + name: group_root_namespace + title: Group Root Namespace + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_root_namespace&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.rootNamespace + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_root_namespace/methods/get' + insert: [] + update: [] + delete: [] + group_root_storage_statistics: + id: gitlab.groups.group_root_storage_statistics + name: group_root_storage_statistics + title: Group Root Storage Statistics + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_root_storage_statistics&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.rootStorageStatistics + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_root_storage_statistics/methods/get' + insert: [] + update: [] + delete: [] + group_saved_replies: + id: gitlab.groups.group_saved_replies + name: group_saved_replies + title: Group Saved Replies + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_saved_replies&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.savedReplies.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_saved_replies/methods/list' + insert: [] + update: [] + delete: [] + group_saved_reply: + id: gitlab.groups.group_saved_reply + name: group_saved_reply + title: Group Saved Reply + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_saved_reply&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.savedReply + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_saved_reply/methods/get' + insert: [] + update: [] + delete: [] + group_shared_groups: + id: gitlab.groups.group_shared_groups + name: group_shared_groups + title: Group Shared Groups + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_shared_groups&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.sharedGroups.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_shared_groups/methods/list' + insert: [] + update: [] + delete: [] + group_shared_projects: + id: gitlab.groups.group_shared_projects + name: group_shared_projects + title: Group Shared Projects + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_shared_projects&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.sharedProjects.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_shared_projects/methods/list' + insert: [] + update: [] + delete: [] + group_timelogs: + id: gitlab.groups.group_timelogs + name: group_timelogs + title: Group Timelogs + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_timelogs&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.timelogs.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_timelogs/methods/list' + insert: [] + update: [] + delete: [] + group_user_permissions: + id: gitlab.groups.group_user_permissions + name: group_user_permissions + title: Group User Permissions + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_user_permissions&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.userPermissions + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_user_permissions/methods/get' + insert: [] + update: [] + delete: [] + group: + id: gitlab.groups.group + name: group + title: Group + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group/methods/get' + insert: [] + update: [] + delete: [] + groups: + id: gitlab.groups.groups + name: groups + title: Groups + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=groups&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.groups.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/groups/methods/list' + insert: [] + update: [] + delete: [] + iteration: + id: gitlab.groups.iteration + name: iteration + title: Iteration + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=iteration&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.iteration + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/iteration/methods/get' + insert: [] + update: [] + delete: [] + namespace: + id: gitlab.groups.namespace + name: namespace + title: Namespace + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=namespace&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.namespace + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/namespace/methods/get' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/issues.yaml b/providers/src/gitlab/v00.00.00000/services/issues.yaml new file mode 100644 index 00000000..39d916a7 --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/issues.yaml @@ -0,0 +1,2236 @@ +openapi: 3.0.3 +info: + title: issues API + description: 'Issues and time tracking - project and group issues, issue status counts, issue access levels and timelogs. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=group_issues&method=list: + post: + operationId: group_issues_list + summary: Issues for projects in this group. + description: Issues for projects in this group. Generated from the GitLab GraphQL schema field Group.issues (connection of Issue nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.issues' + url: https://docs.gitlab.com/api/graphql/reference/#groupissues + x-stackQL-graphQL: + id: gitlab.issues.group_issues.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.issues.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.issues.pageInfo.endCursor + terminateOnJsonPath: $.data.group.issues.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { issues(first: 100{{ .cursor }}{{ if .assignee_id }}, assigneeId: "{{ .assignee_id }}"{{ end }}{{ if .assignee_wildcard_id }}, assigneeWildcardId: {{ .assignee_wildcard_id }}{{ end }}{{ if .author_username }}, authorUsername: "{{ .author_username }}"{{ end }}{{ if .closed_after }}, closedAfter: "{{ .closed_after }}"{{ end }}{{ if .closed_before }}, closedBefore: "{{ .closed_before }}"{{ end }}{{ if .confidential }}, confidential: {{ .confidential }}{{ end }}{{ if .created_after }}, createdAfter: "{{ .created_after }}"{{ end }}{{ if .created_before }}, createdBefore: "{{ .created_before }}"{{ end }}{{ if .crm_contact_id }}, crmContactId: "{{ .crm_contact_id }}"{{ end }}{{ if .crm_organization_id }}, crmOrganizationId: "{{ .crm_organization_id }}"{{ end }}{{ if .due_after }}, dueAfter: "{{ .due_after }}"{{ end }}{{ if .due_before }}, dueBefore: "{{ .due_before }}"{{ end }}{{ if .epic_id }}, epicId: "{{ .epic_id }}"{{ end }}{{ if .epic_wildcard_id }}, epicWildcardId: {{ .epic_wildcard_id }}{{ end }}{{ if .health_status_filter }}, healthStatusFilter: {{ .health_status_filter }}{{ end }}{{ if .iid }}, iid: "{{ .iid }}"{{ end }}{{ if .include_archived }}, includeArchived: {{ .include_archived }}{{ end }}{{ if .include_subepics }}, includeSubepics: {{ .include_subepics }}{{ end }}{{ if .include_subgroups }}, includeSubgroups: {{ .include_subgroups }}{{ end }}{{ if .iteration_title }}, iterationTitle: "{{ .iteration_title }}"{{ end }}{{ if .iteration_wildcard_id }}, iterationWildcardId: {{ .iteration_wildcard_id }}{{ end }}{{ if .milestone_wildcard_id }}, milestoneWildcardId: {{ .milestone_wildcard_id }}{{ end }}{{ if .my_reaction_emoji }}, myReactionEmoji: "{{ .my_reaction_emoji }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}{{ if .subscribed }}, subscribed: {{ .subscribed }}{{ end }}{{ if .updated_after }}, updatedAfter: "{{ .updated_after }}"{{ end }}{{ if .updated_before }}, updatedBefore: "{{ .updated_before }}"{{ end }}{{ if .weight }}, weight: "{{ .weight }}"{{ end }}{{ if .weight_wildcard_id }}, weightWildcardId: {{ .weight_wildcard_id }}{{ end }}) { nodes { blocked blocked_by_count: blockedByCount blocking_count: blockingCount closed_at: closedAt confidential create_note_email: createNoteEmail created_at: createdAt description discussion_locked: discussionLocked downvotes due_date: dueDate emails_enabled: emailsEnabled escalation_status: escalationStatus external_author: externalAuthor has_epic: hasEpic health_status: healthStatus hidden human_time_estimate: humanTimeEstimate human_total_time_spent: humanTotalTimeSpent id iid merge_requests_count: mergeRequestsCount moved name project_id: projectId reference relative_position: relativePosition severity sla_due_at: slaDueAt state status_page_published_incident: statusPagePublishedIncident subscribed time_estimate: timeEstimate title total_time_spent: totalTimeSpent type updated_at: updatedAt upvotes user_discussions_count: userDiscussionsCount user_notes_count: userNotesCount web_path: webPath web_url: webUrl weight author { id username name } milestone { id title } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: assignee_id + in: query + required: false + description: ID of a user assigned to the issues. Wildcard values "NONE" and "ANY" are supported. + schema: + type: string + - name: assignee_wildcard_id + in: query + required: false + description: Filter by assignee wildcard. Incompatible with assigneeUsername and assigneeUsernames. + schema: + type: string + enum: + - NONE + - ANY + - ME + - name: author_username + in: query + required: false + description: Username of the author of the issue. + schema: + type: string + - name: closed_after + in: query + required: false + description: Issues closed after the date. + schema: + type: string + - name: closed_before + in: query + required: false + description: Issues closed before the date. + schema: + type: string + - name: confidential + in: query + required: false + description: Filter for confidential issues. If "false", excludes confidential issues. If "true", returns only confidential issues. + schema: + type: boolean + - name: created_after + in: query + required: false + description: Issues created after the date. + schema: + type: string + - name: created_before + in: query + required: false + description: Issues created before the date. + schema: + type: string + - name: crm_contact_id + in: query + required: false + description: ID of a contact assigned to the issues. + schema: + type: string + - name: crm_organization_id + in: query + required: false + description: ID of an organization assigned to the issues. + schema: + type: string + - name: due_after + in: query + required: false + description: Return issues due on or after the given time. + schema: + type: string + - name: due_before + in: query + required: false + description: Return issues due on or before the given time. + schema: + type: string + - name: epic_id + in: query + required: false + description: ID of an epic associated with the issues, "none" and "any" values are supported. + schema: + type: string + - name: epic_wildcard_id + in: query + required: false + description: Filter by epic ID wildcard. Incompatible with epicId. + schema: + type: string + enum: + - NONE + - ANY + - name: health_status_filter + in: query + required: false + description: Health status of the issue, "none" and "any" values are supported. + schema: + type: string + enum: + - NONE + - ANY + - onTrack + - needsAttention + - atRisk + - name: iid + in: query + required: false + description: IID of the issue. For example, "1". + schema: + type: string + - name: include_archived + in: query + required: false + description: Return issues from archived projects + schema: + type: boolean + - name: include_subepics + in: query + required: false + description: Whether to include subepics when filtering issues by epicId. + schema: + type: boolean + - name: include_subgroups + in: query + required: false + description: Include issues belonging to subgroups + schema: + type: boolean + - name: iteration_title + in: query + required: false + description: Filter by iteration title. + schema: + type: string + - name: iteration_wildcard_id + in: query + required: false + description: Filter by iteration ID wildcard. + schema: + type: string + enum: + - NONE + - ANY + - CURRENT + - name: milestone_wildcard_id + in: query + required: false + description: Filter issues by milestone ID wildcard. + schema: + type: string + enum: + - NONE + - ANY + - STARTED + - UPCOMING + - name: my_reaction_emoji + in: query + required: false + description: Filter by reaction emoji applied by the current user. Wildcard values "NONE" and "ANY" are supported. + schema: + type: string + - name: search + in: query + required: false + description: Search query for title or description. + schema: + type: string + - name: sort + in: query + required: false + description: Sort issues by the criteria. + schema: + type: string + enum: + - DUE_DATE_ASC + - DUE_DATE_DESC + - RELATIVE_POSITION_ASC + - SEVERITY_ASC + - SEVERITY_DESC + - TITLE_ASC + - TITLE_DESC + - POPULARITY_ASC + - POPULARITY_DESC + - ESCALATION_STATUS_ASC + - ESCALATION_STATUS_DESC + - CLOSED_AT_ASC + - CLOSED_AT_DESC + - WEIGHT_ASC + - WEIGHT_DESC + - PUBLISHED_ASC + - PUBLISHED_DESC + - SLA_DUE_AT_ASC + - SLA_DUE_AT_DESC + - BLOCKING_ISSUES_ASC + - BLOCKING_ISSUES_DESC + - HEALTH_STATUS_ASC + - HEALTH_STATUS_DESC + - PRIORITY_ASC + - PRIORITY_DESC + - LABEL_PRIORITY_ASC + - LABEL_PRIORITY_DESC + - MILESTONE_DUE_ASC + - MILESTONE_DUE_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: state + in: query + required: false + description: Current state of the issue. + schema: + type: string + enum: + - opened + - closed + - locked + - all + - name: subscribed + in: query + required: false + description: Issues the current user is subscribed to. + schema: + type: string + enum: + - EXPLICITLY_SUBSCRIBED + - EXPLICITLY_UNSUBSCRIBED + - name: updated_after + in: query + required: false + description: Issues updated after the date. + schema: + type: string + - name: updated_before + in: query + required: false + description: Issues updated before the date. + schema: + type: string + - name: weight + in: query + required: false + description: Weight applied to the issue, "none" and "any" values are supported. + schema: + type: string + - name: weight_wildcard_id + in: query + required: false + description: Filter by weight ID wildcard. Incompatible with weight. + schema: + type: string + enum: + - NONE + - ANY + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + issues: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + blocked: + type: boolean + description: Indicates the issue is blocked. + blocked_by_count: + type: integer + description: Count of issues blocking the issue. + blocking_count: + type: integer + description: Count of issues the issue is blocking. + closed_at: + type: string + description: Timestamp of when the issue was closed. + confidential: + type: boolean + description: Indicates the issue is confidential. + create_note_email: + type: string + description: User specific email address for the issue. + created_at: + type: string + description: Timestamp of when the issue was created. + description: + type: string + description: Description of the issue. + discussion_locked: + type: boolean + description: Indicates discussion is locked on the issue. + downvotes: + type: integer + description: Number of downvotes the issue has received. + due_date: + type: string + description: Due date of the issue. + emails_enabled: + type: boolean + description: 'Indicates if the parent project or group has email notifications disabled: `false` if email notifications are disabled.' + escalation_status: + type: string + enum: + - TRIGGERED + - ACKNOWLEDGED + - RESOLVED + - IGNORED + description: Escalation status of the issue. + external_author: + type: string + description: Email address of non-GitLab user reporting the issue. For guests, the email address is obfuscated. + has_epic: + type: boolean + description: |- + Indicates if the issue belongs to an epic. + Can return true and not show an associated epic when the user has no access to the epic. + health_status: + type: string + enum: + - onTrack + - needsAttention + - atRisk + description: Current health status. + hidden: + type: boolean + description: Indicates the issue is hidden because the author has been banned. + human_time_estimate: + type: string + description: Human-readable time estimate of the issue. + human_total_time_spent: + type: string + description: Human-readable total time reported as spent on the issue. + id: + type: string + description: ID of the issue. + iid: + type: string + description: Internal ID of the issue. + merge_requests_count: + type: integer + description: Number of merge requests that close the issue on merge. + moved: + type: boolean + description: Indicates if issue got moved from other project. + name: + type: string + description: Name or title of the object. + project_id: + type: integer + description: ID of the issue project. + reference: + type: string + description: Internal reference of the issue. Returned in shortened format by default. + relative_position: + type: integer + description: Relative position of the issue (used for positioning in epic tree and issue boards). + severity: + type: string + enum: + - UNKNOWN + - LOW + - MEDIUM + - HIGH + - CRITICAL + description: Severity level of the incident. + sla_due_at: + type: string + description: Timestamp of when the issue SLA expires. + state: + type: string + enum: + - opened + - closed + - locked + - all + description: State of the issue. + status_page_published_incident: + type: boolean + description: Indicates whether an issue is published to the status page. + subscribed: + type: boolean + description: Indicates the currently logged in user is subscribed to the issue. + time_estimate: + type: integer + description: Time estimate of the issue. + title: + type: string + description: Title of the issue. + total_time_spent: + type: integer + description: Total time (in seconds) reported as spent on the issue. + type: + type: string + enum: + - ISSUE + - INCIDENT + - TEST_CASE + - REQUIREMENT + - TASK + - TICKET + description: Type of the issue. + updated_at: + type: string + description: Timestamp of when the issue was last updated. + upvotes: + type: integer + description: Number of upvotes the issue has received. + user_discussions_count: + type: integer + description: Number of user discussions in the issue. + user_notes_count: + type: integer + description: Number of user notes of the issue. + web_path: + type: string + description: Web path of the issue. + web_url: + type: string + description: Web URL of the issue. + weight: + type: integer + description: Weight of the issue. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=issue&method=get: + post: + operationId: issue_get + summary: Find an issue. + description: Find an issue. Generated from the GitLab GraphQL schema field Query.issue (Issue). + externalDocs: + description: 'GitLab GraphQL API reference: Query.issue' + url: https://docs.gitlab.com/api/graphql/reference/#queryissue + x-stackQL-graphQL: + id: gitlab.issues.issue.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { issue(id: "{{ .id }}") { blocked blocked_by_count: blockedByCount blocking_count: blockingCount closed_at: closedAt confidential create_note_email: createNoteEmail created_at: createdAt description discussion_locked: discussionLocked downvotes due_date: dueDate emails_enabled: emailsEnabled escalation_status: escalationStatus external_author: externalAuthor has_epic: hasEpic health_status: healthStatus hidden human_time_estimate: humanTimeEstimate human_total_time_spent: humanTotalTimeSpent id iid merge_requests_count: mergeRequestsCount moved name project_id: projectId reference relative_position: relativePosition severity sla_due_at: slaDueAt state status_page_published_incident: statusPagePublishedIncident subscribed time_estimate: timeEstimate title total_time_spent: totalTimeSpent type updated_at: updatedAt upvotes user_discussions_count: userDiscussionsCount user_notes_count: userNotesCount web_path: webPath web_url: webUrl weight author { id username name } milestone { id title } } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Global ID of the issue. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + issue: + type: object + properties: + blocked: + type: boolean + description: Indicates the issue is blocked. + blocked_by_count: + type: integer + description: Count of issues blocking the issue. + blocking_count: + type: integer + description: Count of issues the issue is blocking. + closed_at: + type: string + description: Timestamp of when the issue was closed. + confidential: + type: boolean + description: Indicates the issue is confidential. + create_note_email: + type: string + description: User specific email address for the issue. + created_at: + type: string + description: Timestamp of when the issue was created. + description: + type: string + description: Description of the issue. + discussion_locked: + type: boolean + description: Indicates discussion is locked on the issue. + downvotes: + type: integer + description: Number of downvotes the issue has received. + due_date: + type: string + description: Due date of the issue. + emails_enabled: + type: boolean + description: 'Indicates if the parent project or group has email notifications disabled: `false` if email notifications are disabled.' + escalation_status: + type: string + enum: + - TRIGGERED + - ACKNOWLEDGED + - RESOLVED + - IGNORED + description: Escalation status of the issue. + external_author: + type: string + description: Email address of non-GitLab user reporting the issue. For guests, the email address is obfuscated. + has_epic: + type: boolean + description: |- + Indicates if the issue belongs to an epic. + Can return true and not show an associated epic when the user has no access to the epic. + health_status: + type: string + enum: + - onTrack + - needsAttention + - atRisk + description: Current health status. + hidden: + type: boolean + description: Indicates the issue is hidden because the author has been banned. + human_time_estimate: + type: string + description: Human-readable time estimate of the issue. + human_total_time_spent: + type: string + description: Human-readable total time reported as spent on the issue. + id: + type: string + description: ID of the issue. + iid: + type: string + description: Internal ID of the issue. + merge_requests_count: + type: integer + description: Number of merge requests that close the issue on merge. + moved: + type: boolean + description: Indicates if issue got moved from other project. + name: + type: string + description: Name or title of the object. + project_id: + type: integer + description: ID of the issue project. + reference: + type: string + description: Internal reference of the issue. Returned in shortened format by default. + relative_position: + type: integer + description: Relative position of the issue (used for positioning in epic tree and issue boards). + severity: + type: string + enum: + - UNKNOWN + - LOW + - MEDIUM + - HIGH + - CRITICAL + description: Severity level of the incident. + sla_due_at: + type: string + description: Timestamp of when the issue SLA expires. + state: + type: string + enum: + - opened + - closed + - locked + - all + description: State of the issue. + status_page_published_incident: + type: boolean + description: Indicates whether an issue is published to the status page. + subscribed: + type: boolean + description: Indicates the currently logged in user is subscribed to the issue. + time_estimate: + type: integer + description: Time estimate of the issue. + title: + type: string + description: Title of the issue. + total_time_spent: + type: integer + description: Total time (in seconds) reported as spent on the issue. + type: + type: string + enum: + - ISSUE + - INCIDENT + - TEST_CASE + - REQUIREMENT + - TASK + - TICKET + description: Type of the issue. + updated_at: + type: string + description: Timestamp of when the issue was last updated. + upvotes: + type: integer + description: Number of upvotes the issue has received. + user_discussions_count: + type: integer + description: Number of user discussions in the issue. + user_notes_count: + type: integer + description: Number of user notes of the issue. + web_path: + type: string + description: Web path of the issue. + web_url: + type: string + description: Web URL of the issue. + weight: + type: integer + description: Weight of the issue. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + /api/graphql?resource=project_issue_status_counts&method=get: + post: + operationId: project_issue_status_counts_get + summary: Counts of issues by status for the project. + description: Counts of issues by status for the project. Generated from the GitLab GraphQL schema field Project.issueStatusCounts (IssueStatusCountsType). + externalDocs: + description: 'GitLab GraphQL API reference: Project.issueStatusCounts' + url: https://docs.gitlab.com/api/graphql/reference/#projectissuestatuscounts + x-stackQL-graphQL: + id: gitlab.issues.project_issue_status_counts.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { issueStatusCounts{{ if or .assignee_id .assignee_wildcard_id .author_username .closed_after .closed_before .confidential .created_after .created_before .crm_contact_id .crm_organization_id .due_after .due_before .epic_id .epic_wildcard_id .health_status_filter .iid .include_subepics .iteration_title .iteration_wildcard_id .milestone_wildcard_id .my_reaction_emoji .release_tag_wildcard_id .search .subscribed .updated_after .updated_before .weight .weight_wildcard_id }}({{ if .assignee_id }}, assigneeId: "{{ .assignee_id }}"{{ end }}{{ if .assignee_wildcard_id }}, assigneeWildcardId: {{ .assignee_wildcard_id }}{{ end }}{{ if .author_username }}, authorUsername: "{{ .author_username }}"{{ end }}{{ if .closed_after }}, closedAfter: "{{ .closed_after }}"{{ end }}{{ if .closed_before }}, closedBefore: "{{ .closed_before }}"{{ end }}{{ if .confidential }}, confidential: {{ .confidential }}{{ end }}{{ if .created_after }}, createdAfter: "{{ .created_after }}"{{ end }}{{ if .created_before }}, createdBefore: "{{ .created_before }}"{{ end }}{{ if .crm_contact_id }}, crmContactId: "{{ .crm_contact_id }}"{{ end }}{{ if .crm_organization_id }}, crmOrganizationId: "{{ .crm_organization_id }}"{{ end }}{{ if .due_after }}, dueAfter: "{{ .due_after }}"{{ end }}{{ if .due_before }}, dueBefore: "{{ .due_before }}"{{ end }}{{ if .epic_id }}, epicId: "{{ .epic_id }}"{{ end }}{{ if .epic_wildcard_id }}, epicWildcardId: {{ .epic_wildcard_id }}{{ end }}{{ if .health_status_filter }}, healthStatusFilter: {{ .health_status_filter }}{{ end }}{{ if .iid }}, iid: "{{ .iid }}"{{ end }}{{ if .include_subepics }}, includeSubepics: {{ .include_subepics }}{{ end }}{{ if .iteration_title }}, iterationTitle: "{{ .iteration_title }}"{{ end }}{{ if .iteration_wildcard_id }}, iterationWildcardId: {{ .iteration_wildcard_id }}{{ end }}{{ if .milestone_wildcard_id }}, milestoneWildcardId: {{ .milestone_wildcard_id }}{{ end }}{{ if .my_reaction_emoji }}, myReactionEmoji: "{{ .my_reaction_emoji }}"{{ end }}{{ if .release_tag_wildcard_id }}, releaseTagWildcardId: {{ .release_tag_wildcard_id }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .subscribed }}, subscribed: {{ .subscribed }}{{ end }}{{ if .updated_after }}, updatedAfter: "{{ .updated_after }}"{{ end }}{{ if .updated_before }}, updatedBefore: "{{ .updated_before }}"{{ end }}{{ if .weight }}, weight: "{{ .weight }}"{{ end }}{{ if .weight_wildcard_id }}, weightWildcardId: {{ .weight_wildcard_id }}{{ end }}){{ end }} { all_: all closed opened } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: assignee_id + in: query + required: false + description: ID of a user assigned to the issues. Wildcard values "NONE" and "ANY" are supported. + schema: + type: string + - name: assignee_wildcard_id + in: query + required: false + description: Filter by assignee wildcard. Incompatible with assigneeUsername and assigneeUsernames. + schema: + type: string + enum: + - NONE + - ANY + - ME + - name: author_username + in: query + required: false + description: Username of the author of the issue. + schema: + type: string + - name: closed_after + in: query + required: false + description: Issues closed after the date. + schema: + type: string + - name: closed_before + in: query + required: false + description: Issues closed before the date. + schema: + type: string + - name: confidential + in: query + required: false + description: Filter for confidential issues. If "false", excludes confidential issues. If "true", returns only confidential issues. + schema: + type: boolean + - name: created_after + in: query + required: false + description: Issues created after the date. + schema: + type: string + - name: created_before + in: query + required: false + description: Issues created before the date. + schema: + type: string + - name: crm_contact_id + in: query + required: false + description: ID of a contact assigned to the issues. + schema: + type: string + - name: crm_organization_id + in: query + required: false + description: ID of an organization assigned to the issues. + schema: + type: string + - name: due_after + in: query + required: false + description: Return issues due on or after the given time. + schema: + type: string + - name: due_before + in: query + required: false + description: Return issues due on or before the given time. + schema: + type: string + - name: epic_id + in: query + required: false + description: ID of an epic associated with the issues, "none" and "any" values are supported. + schema: + type: string + - name: epic_wildcard_id + in: query + required: false + description: Filter by epic ID wildcard. Incompatible with epicId. + schema: + type: string + enum: + - NONE + - ANY + - name: health_status_filter + in: query + required: false + description: Health status of the issue, "none" and "any" values are supported. + schema: + type: string + enum: + - NONE + - ANY + - onTrack + - needsAttention + - atRisk + - name: iid + in: query + required: false + description: IID of the issue. For example, "1". + schema: + type: string + - name: include_subepics + in: query + required: false + description: Whether to include subepics when filtering issues by epicId. + schema: + type: boolean + - name: iteration_title + in: query + required: false + description: Filter by iteration title. + schema: + type: string + - name: iteration_wildcard_id + in: query + required: false + description: Filter by iteration ID wildcard. + schema: + type: string + enum: + - NONE + - ANY + - CURRENT + - name: milestone_wildcard_id + in: query + required: false + description: Filter issues by milestone ID wildcard. + schema: + type: string + enum: + - NONE + - ANY + - STARTED + - UPCOMING + - name: my_reaction_emoji + in: query + required: false + description: Filter by reaction emoji applied by the current user. Wildcard values "NONE" and "ANY" are supported. + schema: + type: string + - name: release_tag_wildcard_id + in: query + required: false + description: Filter issues by release tag ID wildcard. + schema: + type: string + enum: + - NONE + - ANY + - name: search + in: query + required: false + description: Search query for title or description. + schema: + type: string + - name: subscribed + in: query + required: false + description: Issues the current user is subscribed to. + schema: + type: string + enum: + - EXPLICITLY_SUBSCRIBED + - EXPLICITLY_UNSUBSCRIBED + - name: updated_after + in: query + required: false + description: Issues updated after the date. + schema: + type: string + - name: updated_before + in: query + required: false + description: Issues updated before the date. + schema: + type: string + - name: weight + in: query + required: false + description: Weight applied to the issue, "none" and "any" values are supported. + schema: + type: string + - name: weight_wildcard_id + in: query + required: false + description: Filter by weight ID wildcard. Incompatible with weight. + schema: + type: string + enum: + - NONE + - ANY + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + issueStatusCounts: + type: object + properties: + all_: + type: integer + description: Number of issues with status ALL for the project + closed: + type: integer + description: Number of issues with status CLOSED for the project + opened: + type: integer + description: Number of issues with status OPENED for the project + /api/graphql?resource=project_issue&method=get: + post: + operationId: project_issue_get + summary: A single issue of the project. + description: A single issue of the project. Generated from the GitLab GraphQL schema field Project.issue (Issue). + externalDocs: + description: 'GitLab GraphQL API reference: Project.issue' + url: https://docs.gitlab.com/api/graphql/reference/#projectissue + x-stackQL-graphQL: + id: gitlab.issues.project_issue.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { issue{{ if or .assignee_id .assignee_wildcard_id .author_username .closed_after .closed_before .confidential .created_after .created_before .crm_contact_id .crm_organization_id .due_after .due_before .epic_id .epic_wildcard_id .health_status_filter .iid .include_subepics .iteration_title .iteration_wildcard_id .milestone_wildcard_id .my_reaction_emoji .release_tag_wildcard_id .search .sort .state .subscribed .updated_after .updated_before .weight .weight_wildcard_id }}({{ if .assignee_id }}, assigneeId: "{{ .assignee_id }}"{{ end }}{{ if .assignee_wildcard_id }}, assigneeWildcardId: {{ .assignee_wildcard_id }}{{ end }}{{ if .author_username }}, authorUsername: "{{ .author_username }}"{{ end }}{{ if .closed_after }}, closedAfter: "{{ .closed_after }}"{{ end }}{{ if .closed_before }}, closedBefore: "{{ .closed_before }}"{{ end }}{{ if .confidential }}, confidential: {{ .confidential }}{{ end }}{{ if .created_after }}, createdAfter: "{{ .created_after }}"{{ end }}{{ if .created_before }}, createdBefore: "{{ .created_before }}"{{ end }}{{ if .crm_contact_id }}, crmContactId: "{{ .crm_contact_id }}"{{ end }}{{ if .crm_organization_id }}, crmOrganizationId: "{{ .crm_organization_id }}"{{ end }}{{ if .due_after }}, dueAfter: "{{ .due_after }}"{{ end }}{{ if .due_before }}, dueBefore: "{{ .due_before }}"{{ end }}{{ if .epic_id }}, epicId: "{{ .epic_id }}"{{ end }}{{ if .epic_wildcard_id }}, epicWildcardId: {{ .epic_wildcard_id }}{{ end }}{{ if .health_status_filter }}, healthStatusFilter: {{ .health_status_filter }}{{ end }}{{ if .iid }}, iid: "{{ .iid }}"{{ end }}{{ if .include_subepics }}, includeSubepics: {{ .include_subepics }}{{ end }}{{ if .iteration_title }}, iterationTitle: "{{ .iteration_title }}"{{ end }}{{ if .iteration_wildcard_id }}, iterationWildcardId: {{ .iteration_wildcard_id }}{{ end }}{{ if .milestone_wildcard_id }}, milestoneWildcardId: {{ .milestone_wildcard_id }}{{ end }}{{ if .my_reaction_emoji }}, myReactionEmoji: "{{ .my_reaction_emoji }}"{{ end }}{{ if .release_tag_wildcard_id }}, releaseTagWildcardId: {{ .release_tag_wildcard_id }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}{{ if .subscribed }}, subscribed: {{ .subscribed }}{{ end }}{{ if .updated_after }}, updatedAfter: "{{ .updated_after }}"{{ end }}{{ if .updated_before }}, updatedBefore: "{{ .updated_before }}"{{ end }}{{ if .weight }}, weight: "{{ .weight }}"{{ end }}{{ if .weight_wildcard_id }}, weightWildcardId: {{ .weight_wildcard_id }}{{ end }}){{ end }} { blocked blocked_by_count: blockedByCount blocking_count: blockingCount closed_at: closedAt confidential create_note_email: createNoteEmail created_at: createdAt description discussion_locked: discussionLocked downvotes due_date: dueDate emails_enabled: emailsEnabled escalation_status: escalationStatus external_author: externalAuthor has_epic: hasEpic health_status: healthStatus hidden human_time_estimate: humanTimeEstimate human_total_time_spent: humanTotalTimeSpent id iid merge_requests_count: mergeRequestsCount moved name project_id: projectId reference relative_position: relativePosition severity sla_due_at: slaDueAt state status_page_published_incident: statusPagePublishedIncident subscribed time_estimate: timeEstimate title total_time_spent: totalTimeSpent type updated_at: updatedAt upvotes user_discussions_count: userDiscussionsCount user_notes_count: userNotesCount web_path: webPath web_url: webUrl weight author { id username name } milestone { id title } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: assignee_id + in: query + required: false + description: ID of a user assigned to the issues. Wildcard values "NONE" and "ANY" are supported. + schema: + type: string + - name: assignee_wildcard_id + in: query + required: false + description: Filter by assignee wildcard. Incompatible with assigneeUsername and assigneeUsernames. + schema: + type: string + enum: + - NONE + - ANY + - ME + - name: author_username + in: query + required: false + description: Username of the author of the issue. + schema: + type: string + - name: closed_after + in: query + required: false + description: Issues closed after the date. + schema: + type: string + - name: closed_before + in: query + required: false + description: Issues closed before the date. + schema: + type: string + - name: confidential + in: query + required: false + description: Filter for confidential issues. If "false", excludes confidential issues. If "true", returns only confidential issues. + schema: + type: boolean + - name: created_after + in: query + required: false + description: Issues created after the date. + schema: + type: string + - name: created_before + in: query + required: false + description: Issues created before the date. + schema: + type: string + - name: crm_contact_id + in: query + required: false + description: ID of a contact assigned to the issues. + schema: + type: string + - name: crm_organization_id + in: query + required: false + description: ID of an organization assigned to the issues. + schema: + type: string + - name: due_after + in: query + required: false + description: Return issues due on or after the given time. + schema: + type: string + - name: due_before + in: query + required: false + description: Return issues due on or before the given time. + schema: + type: string + - name: epic_id + in: query + required: false + description: ID of an epic associated with the issues, "none" and "any" values are supported. + schema: + type: string + - name: epic_wildcard_id + in: query + required: false + description: Filter by epic ID wildcard. Incompatible with epicId. + schema: + type: string + enum: + - NONE + - ANY + - name: health_status_filter + in: query + required: false + description: Health status of the issue, "none" and "any" values are supported. + schema: + type: string + enum: + - NONE + - ANY + - onTrack + - needsAttention + - atRisk + - name: iid + in: query + required: false + description: IID of the issue. For example, "1". + schema: + type: string + - name: include_subepics + in: query + required: false + description: Whether to include subepics when filtering issues by epicId. + schema: + type: boolean + - name: iteration_title + in: query + required: false + description: Filter by iteration title. + schema: + type: string + - name: iteration_wildcard_id + in: query + required: false + description: Filter by iteration ID wildcard. + schema: + type: string + enum: + - NONE + - ANY + - CURRENT + - name: milestone_wildcard_id + in: query + required: false + description: Filter issues by milestone ID wildcard. + schema: + type: string + enum: + - NONE + - ANY + - STARTED + - UPCOMING + - name: my_reaction_emoji + in: query + required: false + description: Filter by reaction emoji applied by the current user. Wildcard values "NONE" and "ANY" are supported. + schema: + type: string + - name: release_tag_wildcard_id + in: query + required: false + description: Filter issues by release tag ID wildcard. + schema: + type: string + enum: + - NONE + - ANY + - name: search + in: query + required: false + description: Search query for title or description. + schema: + type: string + - name: sort + in: query + required: false + description: Sort issues by the criteria. + schema: + type: string + enum: + - DUE_DATE_ASC + - DUE_DATE_DESC + - RELATIVE_POSITION_ASC + - SEVERITY_ASC + - SEVERITY_DESC + - TITLE_ASC + - TITLE_DESC + - POPULARITY_ASC + - POPULARITY_DESC + - ESCALATION_STATUS_ASC + - ESCALATION_STATUS_DESC + - CLOSED_AT_ASC + - CLOSED_AT_DESC + - WEIGHT_ASC + - WEIGHT_DESC + - PUBLISHED_ASC + - PUBLISHED_DESC + - SLA_DUE_AT_ASC + - SLA_DUE_AT_DESC + - BLOCKING_ISSUES_ASC + - BLOCKING_ISSUES_DESC + - HEALTH_STATUS_ASC + - HEALTH_STATUS_DESC + - PRIORITY_ASC + - PRIORITY_DESC + - LABEL_PRIORITY_ASC + - LABEL_PRIORITY_DESC + - MILESTONE_DUE_ASC + - MILESTONE_DUE_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: state + in: query + required: false + description: Current state of the issue. + schema: + type: string + enum: + - opened + - closed + - locked + - all + - name: subscribed + in: query + required: false + description: Issues the current user is subscribed to. + schema: + type: string + enum: + - EXPLICITLY_SUBSCRIBED + - EXPLICITLY_UNSUBSCRIBED + - name: updated_after + in: query + required: false + description: Issues updated after the date. + schema: + type: string + - name: updated_before + in: query + required: false + description: Issues updated before the date. + schema: + type: string + - name: weight + in: query + required: false + description: Weight applied to the issue, "none" and "any" values are supported. + schema: + type: string + - name: weight_wildcard_id + in: query + required: false + description: Filter by weight ID wildcard. Incompatible with weight. + schema: + type: string + enum: + - NONE + - ANY + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + issue: + type: object + properties: + blocked: + type: boolean + description: Indicates the issue is blocked. + blocked_by_count: + type: integer + description: Count of issues blocking the issue. + blocking_count: + type: integer + description: Count of issues the issue is blocking. + closed_at: + type: string + description: Timestamp of when the issue was closed. + confidential: + type: boolean + description: Indicates the issue is confidential. + create_note_email: + type: string + description: User specific email address for the issue. + created_at: + type: string + description: Timestamp of when the issue was created. + description: + type: string + description: Description of the issue. + discussion_locked: + type: boolean + description: Indicates discussion is locked on the issue. + downvotes: + type: integer + description: Number of downvotes the issue has received. + due_date: + type: string + description: Due date of the issue. + emails_enabled: + type: boolean + description: 'Indicates if the parent project or group has email notifications disabled: `false` if email notifications are disabled.' + escalation_status: + type: string + enum: + - TRIGGERED + - ACKNOWLEDGED + - RESOLVED + - IGNORED + description: Escalation status of the issue. + external_author: + type: string + description: Email address of non-GitLab user reporting the issue. For guests, the email address is obfuscated. + has_epic: + type: boolean + description: |- + Indicates if the issue belongs to an epic. + Can return true and not show an associated epic when the user has no access to the epic. + health_status: + type: string + enum: + - onTrack + - needsAttention + - atRisk + description: Current health status. + hidden: + type: boolean + description: Indicates the issue is hidden because the author has been banned. + human_time_estimate: + type: string + description: Human-readable time estimate of the issue. + human_total_time_spent: + type: string + description: Human-readable total time reported as spent on the issue. + id: + type: string + description: ID of the issue. + iid: + type: string + description: Internal ID of the issue. + merge_requests_count: + type: integer + description: Number of merge requests that close the issue on merge. + moved: + type: boolean + description: Indicates if issue got moved from other project. + name: + type: string + description: Name or title of the object. + project_id: + type: integer + description: ID of the issue project. + reference: + type: string + description: Internal reference of the issue. Returned in shortened format by default. + relative_position: + type: integer + description: Relative position of the issue (used for positioning in epic tree and issue boards). + severity: + type: string + enum: + - UNKNOWN + - LOW + - MEDIUM + - HIGH + - CRITICAL + description: Severity level of the incident. + sla_due_at: + type: string + description: Timestamp of when the issue SLA expires. + state: + type: string + enum: + - opened + - closed + - locked + - all + description: State of the issue. + status_page_published_incident: + type: boolean + description: Indicates whether an issue is published to the status page. + subscribed: + type: boolean + description: Indicates the currently logged in user is subscribed to the issue. + time_estimate: + type: integer + description: Time estimate of the issue. + title: + type: string + description: Title of the issue. + total_time_spent: + type: integer + description: Total time (in seconds) reported as spent on the issue. + type: + type: string + enum: + - ISSUE + - INCIDENT + - TEST_CASE + - REQUIREMENT + - TASK + - TICKET + description: Type of the issue. + updated_at: + type: string + description: Timestamp of when the issue was last updated. + upvotes: + type: integer + description: Number of upvotes the issue has received. + user_discussions_count: + type: integer + description: Number of user discussions in the issue. + user_notes_count: + type: integer + description: Number of user notes of the issue. + web_path: + type: string + description: Web path of the issue. + web_url: + type: string + description: Web URL of the issue. + weight: + type: integer + description: Weight of the issue. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + /api/graphql?resource=project_issues_access_level&method=get: + post: + operationId: project_issues_access_level_get + summary: Access level required for issues access. + description: Access level required for issues access. Generated from the GitLab GraphQL schema field Project.issuesAccessLevel (ProjectFeatureAccess). + externalDocs: + description: 'GitLab GraphQL API reference: Project.issuesAccessLevel' + url: https://docs.gitlab.com/api/graphql/reference/#projectissuesaccesslevel + x-stackQL-graphQL: + id: gitlab.issues.project_issues_access_level.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { issuesAccessLevel { integer_value: integerValue string_value: stringValue } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + issuesAccessLevel: + type: object + properties: + integer_value: + type: integer + description: Integer representation of access level. + string_value: + type: string + enum: + - DISABLED + - PRIVATE + - ENABLED + description: String representation of access level. + /api/graphql?resource=project_issues&method=list: + post: + operationId: project_issues_list + summary: Issues of the project. + description: Issues of the project. Generated from the GitLab GraphQL schema field Project.issues (connection of Issue nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.issues' + url: https://docs.gitlab.com/api/graphql/reference/#projectissues + x-stackQL-graphQL: + id: gitlab.issues.project_issues.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.issues.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.issues.pageInfo.endCursor + terminateOnJsonPath: $.data.project.issues.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { issues(first: 100{{ .cursor }}{{ if .assignee_id }}, assigneeId: "{{ .assignee_id }}"{{ end }}{{ if .assignee_wildcard_id }}, assigneeWildcardId: {{ .assignee_wildcard_id }}{{ end }}{{ if .author_username }}, authorUsername: "{{ .author_username }}"{{ end }}{{ if .closed_after }}, closedAfter: "{{ .closed_after }}"{{ end }}{{ if .closed_before }}, closedBefore: "{{ .closed_before }}"{{ end }}{{ if .confidential }}, confidential: {{ .confidential }}{{ end }}{{ if .created_after }}, createdAfter: "{{ .created_after }}"{{ end }}{{ if .created_before }}, createdBefore: "{{ .created_before }}"{{ end }}{{ if .crm_contact_id }}, crmContactId: "{{ .crm_contact_id }}"{{ end }}{{ if .crm_organization_id }}, crmOrganizationId: "{{ .crm_organization_id }}"{{ end }}{{ if .due_after }}, dueAfter: "{{ .due_after }}"{{ end }}{{ if .due_before }}, dueBefore: "{{ .due_before }}"{{ end }}{{ if .epic_id }}, epicId: "{{ .epic_id }}"{{ end }}{{ if .epic_wildcard_id }}, epicWildcardId: {{ .epic_wildcard_id }}{{ end }}{{ if .health_status_filter }}, healthStatusFilter: {{ .health_status_filter }}{{ end }}{{ if .iid }}, iid: "{{ .iid }}"{{ end }}{{ if .include_subepics }}, includeSubepics: {{ .include_subepics }}{{ end }}{{ if .iteration_title }}, iterationTitle: "{{ .iteration_title }}"{{ end }}{{ if .iteration_wildcard_id }}, iterationWildcardId: {{ .iteration_wildcard_id }}{{ end }}{{ if .milestone_wildcard_id }}, milestoneWildcardId: {{ .milestone_wildcard_id }}{{ end }}{{ if .my_reaction_emoji }}, myReactionEmoji: "{{ .my_reaction_emoji }}"{{ end }}{{ if .release_tag_wildcard_id }}, releaseTagWildcardId: {{ .release_tag_wildcard_id }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}{{ if .subscribed }}, subscribed: {{ .subscribed }}{{ end }}{{ if .updated_after }}, updatedAfter: "{{ .updated_after }}"{{ end }}{{ if .updated_before }}, updatedBefore: "{{ .updated_before }}"{{ end }}{{ if .weight }}, weight: "{{ .weight }}"{{ end }}{{ if .weight_wildcard_id }}, weightWildcardId: {{ .weight_wildcard_id }}{{ end }}) { nodes { blocked blocked_by_count: blockedByCount blocking_count: blockingCount closed_at: closedAt confidential create_note_email: createNoteEmail created_at: createdAt description discussion_locked: discussionLocked downvotes due_date: dueDate emails_enabled: emailsEnabled escalation_status: escalationStatus external_author: externalAuthor has_epic: hasEpic health_status: healthStatus hidden human_time_estimate: humanTimeEstimate human_total_time_spent: humanTotalTimeSpent id iid merge_requests_count: mergeRequestsCount moved name project_id: projectId reference relative_position: relativePosition severity sla_due_at: slaDueAt state status_page_published_incident: statusPagePublishedIncident subscribed time_estimate: timeEstimate title total_time_spent: totalTimeSpent type updated_at: updatedAt upvotes user_discussions_count: userDiscussionsCount user_notes_count: userNotesCount web_path: webPath web_url: webUrl weight author { id username name } milestone { id title } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: assignee_id + in: query + required: false + description: ID of a user assigned to the issues. Wildcard values "NONE" and "ANY" are supported. + schema: + type: string + - name: assignee_wildcard_id + in: query + required: false + description: Filter by assignee wildcard. Incompatible with assigneeUsername and assigneeUsernames. + schema: + type: string + enum: + - NONE + - ANY + - ME + - name: author_username + in: query + required: false + description: Username of the author of the issue. + schema: + type: string + - name: closed_after + in: query + required: false + description: Issues closed after the date. + schema: + type: string + - name: closed_before + in: query + required: false + description: Issues closed before the date. + schema: + type: string + - name: confidential + in: query + required: false + description: Filter for confidential issues. If "false", excludes confidential issues. If "true", returns only confidential issues. + schema: + type: boolean + - name: created_after + in: query + required: false + description: Issues created after the date. + schema: + type: string + - name: created_before + in: query + required: false + description: Issues created before the date. + schema: + type: string + - name: crm_contact_id + in: query + required: false + description: ID of a contact assigned to the issues. + schema: + type: string + - name: crm_organization_id + in: query + required: false + description: ID of an organization assigned to the issues. + schema: + type: string + - name: due_after + in: query + required: false + description: Return issues due on or after the given time. + schema: + type: string + - name: due_before + in: query + required: false + description: Return issues due on or before the given time. + schema: + type: string + - name: epic_id + in: query + required: false + description: ID of an epic associated with the issues, "none" and "any" values are supported. + schema: + type: string + - name: epic_wildcard_id + in: query + required: false + description: Filter by epic ID wildcard. Incompatible with epicId. + schema: + type: string + enum: + - NONE + - ANY + - name: health_status_filter + in: query + required: false + description: Health status of the issue, "none" and "any" values are supported. + schema: + type: string + enum: + - NONE + - ANY + - onTrack + - needsAttention + - atRisk + - name: iid + in: query + required: false + description: IID of the issue. For example, "1". + schema: + type: string + - name: include_subepics + in: query + required: false + description: Whether to include subepics when filtering issues by epicId. + schema: + type: boolean + - name: iteration_title + in: query + required: false + description: Filter by iteration title. + schema: + type: string + - name: iteration_wildcard_id + in: query + required: false + description: Filter by iteration ID wildcard. + schema: + type: string + enum: + - NONE + - ANY + - CURRENT + - name: milestone_wildcard_id + in: query + required: false + description: Filter issues by milestone ID wildcard. + schema: + type: string + enum: + - NONE + - ANY + - STARTED + - UPCOMING + - name: my_reaction_emoji + in: query + required: false + description: Filter by reaction emoji applied by the current user. Wildcard values "NONE" and "ANY" are supported. + schema: + type: string + - name: release_tag_wildcard_id + in: query + required: false + description: Filter issues by release tag ID wildcard. + schema: + type: string + enum: + - NONE + - ANY + - name: search + in: query + required: false + description: Search query for title or description. + schema: + type: string + - name: sort + in: query + required: false + description: Sort issues by the criteria. + schema: + type: string + enum: + - DUE_DATE_ASC + - DUE_DATE_DESC + - RELATIVE_POSITION_ASC + - SEVERITY_ASC + - SEVERITY_DESC + - TITLE_ASC + - TITLE_DESC + - POPULARITY_ASC + - POPULARITY_DESC + - ESCALATION_STATUS_ASC + - ESCALATION_STATUS_DESC + - CLOSED_AT_ASC + - CLOSED_AT_DESC + - WEIGHT_ASC + - WEIGHT_DESC + - PUBLISHED_ASC + - PUBLISHED_DESC + - SLA_DUE_AT_ASC + - SLA_DUE_AT_DESC + - BLOCKING_ISSUES_ASC + - BLOCKING_ISSUES_DESC + - HEALTH_STATUS_ASC + - HEALTH_STATUS_DESC + - PRIORITY_ASC + - PRIORITY_DESC + - LABEL_PRIORITY_ASC + - LABEL_PRIORITY_DESC + - MILESTONE_DUE_ASC + - MILESTONE_DUE_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: state + in: query + required: false + description: Current state of the issue. + schema: + type: string + enum: + - opened + - closed + - locked + - all + - name: subscribed + in: query + required: false + description: Issues the current user is subscribed to. + schema: + type: string + enum: + - EXPLICITLY_SUBSCRIBED + - EXPLICITLY_UNSUBSCRIBED + - name: updated_after + in: query + required: false + description: Issues updated after the date. + schema: + type: string + - name: updated_before + in: query + required: false + description: Issues updated before the date. + schema: + type: string + - name: weight + in: query + required: false + description: Weight applied to the issue, "none" and "any" values are supported. + schema: + type: string + - name: weight_wildcard_id + in: query + required: false + description: Filter by weight ID wildcard. Incompatible with weight. + schema: + type: string + enum: + - NONE + - ANY + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + issues: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + blocked: + type: boolean + description: Indicates the issue is blocked. + blocked_by_count: + type: integer + description: Count of issues blocking the issue. + blocking_count: + type: integer + description: Count of issues the issue is blocking. + closed_at: + type: string + description: Timestamp of when the issue was closed. + confidential: + type: boolean + description: Indicates the issue is confidential. + create_note_email: + type: string + description: User specific email address for the issue. + created_at: + type: string + description: Timestamp of when the issue was created. + description: + type: string + description: Description of the issue. + discussion_locked: + type: boolean + description: Indicates discussion is locked on the issue. + downvotes: + type: integer + description: Number of downvotes the issue has received. + due_date: + type: string + description: Due date of the issue. + emails_enabled: + type: boolean + description: 'Indicates if the parent project or group has email notifications disabled: `false` if email notifications are disabled.' + escalation_status: + type: string + enum: + - TRIGGERED + - ACKNOWLEDGED + - RESOLVED + - IGNORED + description: Escalation status of the issue. + external_author: + type: string + description: Email address of non-GitLab user reporting the issue. For guests, the email address is obfuscated. + has_epic: + type: boolean + description: |- + Indicates if the issue belongs to an epic. + Can return true and not show an associated epic when the user has no access to the epic. + health_status: + type: string + enum: + - onTrack + - needsAttention + - atRisk + description: Current health status. + hidden: + type: boolean + description: Indicates the issue is hidden because the author has been banned. + human_time_estimate: + type: string + description: Human-readable time estimate of the issue. + human_total_time_spent: + type: string + description: Human-readable total time reported as spent on the issue. + id: + type: string + description: ID of the issue. + iid: + type: string + description: Internal ID of the issue. + merge_requests_count: + type: integer + description: Number of merge requests that close the issue on merge. + moved: + type: boolean + description: Indicates if issue got moved from other project. + name: + type: string + description: Name or title of the object. + project_id: + type: integer + description: ID of the issue project. + reference: + type: string + description: Internal reference of the issue. Returned in shortened format by default. + relative_position: + type: integer + description: Relative position of the issue (used for positioning in epic tree and issue boards). + severity: + type: string + enum: + - UNKNOWN + - LOW + - MEDIUM + - HIGH + - CRITICAL + description: Severity level of the incident. + sla_due_at: + type: string + description: Timestamp of when the issue SLA expires. + state: + type: string + enum: + - opened + - closed + - locked + - all + description: State of the issue. + status_page_published_incident: + type: boolean + description: Indicates whether an issue is published to the status page. + subscribed: + type: boolean + description: Indicates the currently logged in user is subscribed to the issue. + time_estimate: + type: integer + description: Time estimate of the issue. + title: + type: string + description: Title of the issue. + total_time_spent: + type: integer + description: Total time (in seconds) reported as spent on the issue. + type: + type: string + enum: + - ISSUE + - INCIDENT + - TEST_CASE + - REQUIREMENT + - TASK + - TICKET + description: Type of the issue. + updated_at: + type: string + description: Timestamp of when the issue was last updated. + upvotes: + type: integer + description: Number of upvotes the issue has received. + user_discussions_count: + type: integer + description: Number of user discussions in the issue. + user_notes_count: + type: integer + description: Number of user notes of the issue. + web_path: + type: string + description: Web path of the issue. + web_url: + type: string + description: Web URL of the issue. + weight: + type: integer + description: Weight of the issue. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=timelogs&method=list: + post: + operationId: timelogs_list + summary: Find timelogs visible to the current user. + description: Find timelogs visible to the current user. Generated from the GitLab GraphQL schema field Query.timelogs (connection of Timelog nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.timelogs' + url: https://docs.gitlab.com/api/graphql/reference/#querytimelogs + x-stackQL-graphQL: + id: gitlab.issues.timelogs.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.timelogs.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.timelogs.pageInfo.endCursor + terminateOnJsonPath: $.data.timelogs.pageInfo.hasNextPage + query: 'query { timelogs(first: 100{{ .cursor }}{{ if .end_date }}, endDate: "{{ .end_date }}"{{ end }}{{ if .end_time }}, endTime: "{{ .end_time }}"{{ end }}{{ if .group_id }}, groupId: "{{ .group_id }}"{{ end }}{{ if .project_id }}, projectId: "{{ .project_id }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .start_date }}, startDate: "{{ .start_date }}"{{ end }}{{ if .start_time }}, startTime: "{{ .start_time }}"{{ end }}{{ if .username }}, username: "{{ .username }}"{{ end }}) { nodes { id spent_at: spentAt summary time_spent: timeSpent user { id username name } project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: end_date + in: query + required: false + description: List timelogs within a date range where the logged date is equal to or before endDate. + schema: + type: string + - name: end_time + in: query + required: false + description: List timelogs within a time range where the logged time is equal to or before endTime. + schema: + type: string + - name: group_id + in: query + required: false + description: List timelogs for a group. + schema: + type: string + - name: project_id + in: query + required: false + description: List timelogs for a project. + schema: + type: string + - name: sort + in: query + required: false + description: List timelogs in a particular order. + schema: + type: string + enum: + - SPENT_AT_ASC + - SPENT_AT_DESC + - TIME_SPENT_ASC + - TIME_SPENT_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: start_date + in: query + required: false + description: List timelogs within a date range where the logged date is equal to or after startDate. + schema: + type: string + - name: start_time + in: query + required: false + description: List timelogs within a time range where the logged time is equal to or after startTime. + schema: + type: string + - name: username + in: query + required: false + description: List timelogs for a user. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + timelogs: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: Internal ID of the timelog. + spent_at: + type: string + description: Timestamp of when the time tracked was spent at. + summary: + type: string + description: Summary of how the time was spent. + time_spent: + type: integer + description: Time spent displayed in seconds. + user: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + group_issues: + id: gitlab.issues.group_issues + name: group_issues + title: Group Issues + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_issues&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.issues.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_issues/methods/list' + insert: [] + update: [] + delete: [] + issue: + id: gitlab.issues.issue + name: issue + title: Issue + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=issue&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.issue + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/issue/methods/get' + insert: [] + update: [] + delete: [] + project_issue_status_counts: + id: gitlab.issues.project_issue_status_counts + name: project_issue_status_counts + title: Project Issue Status Counts + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_issue_status_counts&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.issueStatusCounts + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_issue_status_counts/methods/get' + insert: [] + update: [] + delete: [] + project_issue: + id: gitlab.issues.project_issue + name: project_issue + title: Project Issue + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_issue&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.issue + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_issue/methods/get' + insert: [] + update: [] + delete: [] + project_issues_access_level: + id: gitlab.issues.project_issues_access_level + name: project_issues_access_level + title: Project Issues Access Level + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_issues_access_level&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.issuesAccessLevel + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_issues_access_level/methods/get' + insert: [] + update: [] + delete: [] + project_issues: + id: gitlab.issues.project_issues + name: project_issues + title: Project Issues + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_issues&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.issues.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_issues/methods/list' + insert: [] + update: [] + delete: [] + timelogs: + id: gitlab.issues.timelogs + name: timelogs + title: Timelogs + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=timelogs&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.timelogs.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/timelogs/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/merge_requests.yaml b/providers/src/gitlab/v00.00.00000/services/merge_requests.yaml new file mode 100644 index 00000000..4b3c36b7 --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/merge_requests.yaml @@ -0,0 +1,1987 @@ +openapi: 3.0.3 +info: + title: merge_requests API + description: 'Merge requests - project and group merge requests, merge request details, violations and access levels. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=group_merge_request_violations&method=list: + post: + operationId: group_merge_request_violations_list + summary: Compliance violations reported on merge requests merged within the group. + description: Compliance violations reported on merge requests merged within the group. Generated from the GitLab GraphQL schema field Group.mergeRequestViolations (connection of ComplianceViolation nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.mergeRequestViolations' + url: https://docs.gitlab.com/api/graphql/reference/#groupmergerequestviolations + x-stackQL-graphQL: + id: gitlab.merge_requests.group_merge_request_violations.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.mergeRequestViolations.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.mergeRequestViolations.pageInfo.endCursor + terminateOnJsonPath: $.data.group.mergeRequestViolations.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { mergeRequestViolations(first: 100{{ .cursor }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { id reason severity_level: severityLevel } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: sort + in: query + required: false + description: List compliance violations by sort order. + schema: + type: string + enum: + - SEVERITY_LEVEL_DESC + - SEVERITY_LEVEL_ASC + - VIOLATION_REASON_DESC + - VIOLATION_REASON_ASC + - MERGE_REQUEST_TITLE_DESC + - MERGE_REQUEST_TITLE_ASC + - MERGED_AT_DESC + - MERGED_AT_ASC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + mergeRequestViolations: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: Compliance violation ID. + reason: + type: string + enum: + - APPROVED_BY_MERGE_REQUEST_AUTHOR + - APPROVED_BY_COMMITTER + - APPROVED_BY_INSUFFICIENT_USERS + description: Reason the compliance violation occurred. + severity_level: + type: string + enum: + - INFO + - LOW + - MEDIUM + - HIGH + - CRITICAL + description: Severity of the compliance violation. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_merge_requests&method=list: + post: + operationId: group_merge_requests_list + summary: Merge requests for projects in this group. + description: Merge requests for projects in this group. Generated from the GitLab GraphQL schema field Group.mergeRequests (connection of MergeRequest nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.mergeRequests' + url: https://docs.gitlab.com/api/graphql/reference/#groupmergerequests + x-stackQL-graphQL: + id: gitlab.merge_requests.group_merge_requests.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.mergeRequests.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.mergeRequests.pageInfo.endCursor + terminateOnJsonPath: $.data.group.mergeRequests.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { mergeRequests(first: 100{{ .cursor }}{{ if .assignee_username }}, assigneeUsername: "{{ .assignee_username }}"{{ end }}{{ if .assignee_wildcard_id }}, assigneeWildcardId: {{ .assignee_wildcard_id }}{{ end }}{{ if .author_username }}, authorUsername: "{{ .author_username }}"{{ end }}{{ if .closed_after }}, closedAfter: "{{ .closed_after }}"{{ end }}{{ if .closed_before }}, closedBefore: "{{ .closed_before }}"{{ end }}{{ if .created_after }}, createdAfter: "{{ .created_after }}"{{ end }}{{ if .created_before }}, createdBefore: "{{ .created_before }}"{{ end }}{{ if .deployed_after }}, deployedAfter: "{{ .deployed_after }}"{{ end }}{{ if .deployed_before }}, deployedBefore: "{{ .deployed_before }}"{{ end }}{{ if .deployment_id }}, deploymentId: "{{ .deployment_id }}"{{ end }}{{ if .draft }}, draft: {{ .draft }}{{ end }}{{ if .environment_name }}, environmentName: "{{ .environment_name }}"{{ end }}{{ if .include_archived }}, includeArchived: {{ .include_archived }}{{ end }}{{ if .include_subgroups }}, includeSubgroups: {{ .include_subgroups }}{{ end }}{{ if .merged_after }}, mergedAfter: "{{ .merged_after }}"{{ end }}{{ if .merged_before }}, mergedBefore: "{{ .merged_before }}"{{ end }}{{ if .merged_by }}, mergedBy: "{{ .merged_by }}"{{ end }}{{ if .milestone_title }}, milestoneTitle: "{{ .milestone_title }}"{{ end }}{{ if .milestone_wildcard_id }}, milestoneWildcardId: {{ .milestone_wildcard_id }}{{ end }}{{ if .my_reaction_emoji }}, myReactionEmoji: "{{ .my_reaction_emoji }}"{{ end }}{{ if .release_tag }}, releaseTag: "{{ .release_tag }}"{{ end }}{{ if .reviewer_username }}, reviewerUsername: "{{ .reviewer_username }}"{{ end }}{{ if .reviewer_wildcard_id }}, reviewerWildcardId: {{ .reviewer_wildcard_id }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}{{ if .subscribed }}, subscribed: {{ .subscribed }}{{ end }}{{ if .updated_after }}, updatedAfter: "{{ .updated_after }}"{{ end }}{{ if .updated_before }}, updatedBefore: "{{ .updated_before }}"{{ end }}) { nodes { allow_collaboration: allowCollaboration allows_multiple_assignees: allowsMultipleAssignees allows_multiple_reviewers: allowsMultipleReviewers approvals_left: approvalsLeft approvals_required: approvalsRequired approved auto_merge_enabled: autoMergeEnabled auto_merge_strategy: autoMergeStrategy closed_at: closedAt commit_count: commitCount conflicts created_at: createdAt description detailed_merge_status: detailedMergeStatus discussion_locked: discussionLocked downvotes draft force_remove_source_branch: forceRemoveSourceBranch has_ci: hasCi hidden human_time_estimate: humanTimeEstimate human_total_time_spent: humanTotalTimeSpent id iid in_progress_merge_commit_sha: inProgressMergeCommitSha merge_after: mergeAfter merge_commit_sha: mergeCommitSha merge_error: mergeError merge_ongoing: mergeOngoing merge_status_enum: mergeStatusEnum mergeable merged_at: mergedAt name prepared_at: preparedAt project_id: projectId rebase_commit_sha: rebaseCommitSha reference resolvable_discussions_count: resolvableDiscussionsCount resolved_discussions_count: resolvedDiscussionsCount retargeted should_remove_source_branch: shouldRemoveSourceBranch source_branch: sourceBranch source_project_id: sourceProjectId squash squash_on_merge: squashOnMerge squash_read_only: squashReadOnly state supports_lock_on_merge: supportsLockOnMerge target_branch: targetBranch target_branch_exists: targetBranchExists target_branch_path: targetBranchPath target_project_id: targetProjectId time_estimate: timeEstimate title total_time_spent: totalTimeSpent updated_at: updatedAt upvotes user_discussions_count: userDiscussionsCount user_notes_count: userNotesCount web_path: webPath web_url: webUrl author { id username name } project { id full_path: fullPath name } milestone { id title } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: assignee_username + in: query + required: false + description: Username of the assignee. + schema: + type: string + - name: assignee_wildcard_id + in: query + required: false + description: Filter by assignee presence. Incompatible with assigneeUsernames and assigneeUsername. + schema: + type: string + enum: + - NONE + - ANY + - ME + - name: author_username + in: query + required: false + description: Username of the author. + schema: + type: string + - name: closed_after + in: query + required: false + description: Merge requests closed after the date. + schema: + type: string + - name: closed_before + in: query + required: false + description: Merge requests closed before the date. + schema: + type: string + - name: created_after + in: query + required: false + description: Merge requests created after the timestamp. + schema: + type: string + - name: created_before + in: query + required: false + description: Merge requests created before the timestamp. + schema: + type: string + - name: deployed_after + in: query + required: false + description: Merge requests deployed after the timestamp. + schema: + type: string + - name: deployed_before + in: query + required: false + description: Merge requests deployed before the timestamp. + schema: + type: string + - name: deployment_id + in: query + required: false + description: ID of the deployment. + schema: + type: string + - name: draft + in: query + required: false + description: Limit result to draft merge requests. + schema: + type: boolean + - name: environment_name + in: query + required: false + description: Environment merge requests have been deployed to. + schema: + type: string + - name: include_archived + in: query + required: false + description: Return merge requests from archived projects + schema: + type: boolean + - name: include_subgroups + in: query + required: false + description: Include merge requests belonging to subgroups + schema: + type: boolean + - name: merged_after + in: query + required: false + description: Merge requests merged after the date. + schema: + type: string + - name: merged_before + in: query + required: false + description: Merge requests merged before the date. + schema: + type: string + - name: merged_by + in: query + required: false + description: Username of the merger. + schema: + type: string + - name: milestone_title + in: query + required: false + description: Title of the milestone. Incompatible with milestoneWildcardId. + schema: + type: string + - name: milestone_wildcard_id + in: query + required: false + description: Filter issues by milestone ID wildcard. Incompatible with milestoneTitle. + schema: + type: string + enum: + - NONE + - ANY + - STARTED + - UPCOMING + - name: my_reaction_emoji + in: query + required: false + description: Filter by your reaction emoji. + schema: + type: string + - name: release_tag + in: query + required: false + description: Filter by release tag. + schema: + type: string + - name: reviewer_username + in: query + required: false + description: Username of the reviewer. + schema: + type: string + - name: reviewer_wildcard_id + in: query + required: false + description: Filter by reviewer presence. Incompatible with reviewerUsername. + schema: + type: string + enum: + - NONE + - ANY + - name: search + in: query + required: false + description: Search query for title or description. + schema: + type: string + - name: sort + in: query + required: false + description: Sort merge requests by the criteria. + schema: + type: string + enum: + - MERGED_AT_ASC + - MERGED_AT_DESC + - CLOSED_AT_ASC + - CLOSED_AT_DESC + - TITLE_ASC + - TITLE_DESC + - POPULARITY_ASC + - POPULARITY_DESC + - PRIORITY_ASC + - PRIORITY_DESC + - LABEL_PRIORITY_ASC + - LABEL_PRIORITY_DESC + - MILESTONE_DUE_ASC + - MILESTONE_DUE_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: state + in: query + required: false + description: Merge request state. If provided, all resolved merge requests will have the state. + schema: + type: string + enum: + - merged + - opened + - closed + - locked + - all + - name: subscribed + in: query + required: false + description: Merge requests the current user is subscribed to. + schema: + type: string + enum: + - EXPLICITLY_SUBSCRIBED + - EXPLICITLY_UNSUBSCRIBED + - name: updated_after + in: query + required: false + description: Merge requests updated after the timestamp. + schema: + type: string + - name: updated_before + in: query + required: false + description: Merge requests updated before the timestamp. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + mergeRequests: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + allow_collaboration: + type: boolean + description: Indicates if members of the target project can push to the fork. + allows_multiple_assignees: + type: boolean + description: Allows assigning multiple users to a merge request. + allows_multiple_reviewers: + type: boolean + description: Allows assigning multiple reviewers to a merge request. + approvals_left: + type: integer + description: Number of approvals left. + approvals_required: + type: integer + description: Number of approvals required. + approved: + type: boolean + description: Indicates if the merge request has all the required approvals. + auto_merge_enabled: + type: boolean + description: Indicates if auto merge is enabled for the merge request. + auto_merge_strategy: + type: string + description: Selected auto merge strategy. + closed_at: + type: string + description: Timestamp of when the merge request was closed, null if not closed. + commit_count: + type: integer + description: Number of commits in the merge request. + conflicts: + type: boolean + description: Indicates if the merge request has conflicts. + created_at: + type: string + description: Timestamp of when the merge request was created. + description: + type: string + description: Description of the merge request (Markdown rendered as HTML for caching). + detailed_merge_status: + type: string + enum: + - UNCHECKED + - CHECKING + - MERGEABLE + - COMMITS_STATUS + - CI_MUST_PASS + - CI_STILL_RUNNING + - DISCUSSIONS_NOT_RESOLVED + - DRAFT_STATUS + - NOT_OPEN + - NOT_APPROVED + - BLOCKED_STATUS + - EXTERNAL_STATUS_CHECKS + - PREPARING + - JIRA_ASSOCIATION + - CONFLICT + - NEED_REBASE + - APPROVALS_SYNCING + - LOCKED_PATHS + - LOCKED_LFS_FILES + - MERGE_TIME + - SECURITY_POLICIES_VIOLATIONS + - TITLE_NOT_MATCHING + - REQUESTED_CHANGES + - SECURITY_POLICY_PIPELINE_CHECK + description: Detailed merge status of the merge request. + discussion_locked: + type: boolean + description: Indicates if comments on the merge request are locked to members only. + downvotes: + type: integer + description: Number of downvotes for the merge request. + draft: + type: boolean + description: Indicates if the merge request is a draft. + force_remove_source_branch: + type: boolean + description: Indicates if the project settings will lead to source branch deletion after merge. + has_ci: + type: boolean + description: Indicates if the merge request has CI. + hidden: + type: boolean + description: Indicates the merge request is hidden because the author has been banned. + human_time_estimate: + type: string + description: Human-readable time estimate of the merge request. + human_total_time_spent: + type: string + description: Human-readable total time reported as spent on the merge request. + id: + type: string + description: ID of the merge request. + iid: + type: string + description: Internal ID of the merge request. + in_progress_merge_commit_sha: + type: string + description: Commit SHA of the merge request if merge is in progress. + merge_after: + type: string + description: Date after which the merge request can be merged. + merge_commit_sha: + type: string + description: SHA of the merge request commit (set once merged). + merge_error: + type: string + description: Error message due to a merge error. + merge_ongoing: + type: boolean + description: Indicates if a merge is currently occurring. + merge_status_enum: + type: string + enum: + - UNCHECKED + - CHECKING + - CAN_BE_MERGED + - CANNOT_BE_MERGED + - CANNOT_BE_MERGED_RECHECK + description: Merge status of the merge request. + mergeable: + type: boolean + description: Indicates if the merge request is mergeable. + merged_at: + type: string + description: Timestamp of when the merge request was merged, null if not merged. + name: + type: string + description: Name or title of the object. + prepared_at: + type: string + description: Timestamp of when the merge request was prepared. + project_id: + type: integer + description: ID of the merge request project. + rebase_commit_sha: + type: string + description: Rebase commit SHA of the merge request. + reference: + type: string + description: Internal reference of the merge request. Returned in shortened format by default. + resolvable_discussions_count: + type: integer + description: Number of user discussions that are resolvable in the merge request. + resolved_discussions_count: + type: integer + description: Number of user discussions that are resolved in the merge request. + retargeted: + type: boolean + description: Indicates if merge request was retargeted. + should_remove_source_branch: + type: boolean + description: Indicates if the source branch of the merge request will be deleted after merge. + source_branch: + type: string + description: Source branch of the merge request. + source_project_id: + type: integer + description: ID of the merge request source project. + squash: + type: boolean + description: Indicates if the merge request is set to be squashed when merged. [Project settings](https://docs.gitlab.com/user/project/merge_requests/squash_and_merge/#configure-squash-options-for-a-project) may override this value. Use `squash_on_merge` instead to take project squash options into account. + squash_on_merge: + type: boolean + description: Indicates if the merge request will be squashed when merged. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + state: + type: string + enum: + - merged + - opened + - closed + - locked + - all + description: State of the merge request. + supports_lock_on_merge: + type: boolean + description: Indicates if the merge request supports locked labels. + target_branch: + type: string + description: Target branch of the merge request. + target_branch_exists: + type: boolean + description: Indicates if the target branch of the merge request exists. + target_branch_path: + type: string + description: Path to the target branch of the merge request. + target_project_id: + type: integer + description: ID of the merge request target project. + time_estimate: + type: integer + description: Time estimate of the merge request. + title: + type: string + description: Title of the merge request. + total_time_spent: + type: integer + description: Total time (in seconds) reported as spent on the merge request. + updated_at: + type: string + description: Timestamp of when the merge request was last updated. + upvotes: + type: integer + description: Number of upvotes for the merge request. + user_discussions_count: + type: integer + description: Number of user discussions in the merge request. + user_notes_count: + type: integer + description: User notes count of the merge request. + web_path: + type: string + description: Web path of the merge request. + web_url: + type: string + description: Web URL of the merge request. + author: + type: object + description: MergeRequestAuthor identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=merge_request&method=get: + post: + operationId: merge_request_get + summary: Find a merge request. + description: Find a merge request. Generated from the GitLab GraphQL schema field Query.mergeRequest (MergeRequest). + externalDocs: + description: 'GitLab GraphQL API reference: Query.mergeRequest' + url: https://docs.gitlab.com/api/graphql/reference/#querymergerequest + x-stackQL-graphQL: + id: gitlab.merge_requests.merge_request.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { mergeRequest(id: "{{ .id }}") { allow_collaboration: allowCollaboration allows_multiple_assignees: allowsMultipleAssignees allows_multiple_reviewers: allowsMultipleReviewers approvals_left: approvalsLeft approvals_required: approvalsRequired approved auto_merge_enabled: autoMergeEnabled auto_merge_strategy: autoMergeStrategy closed_at: closedAt commit_count: commitCount conflicts created_at: createdAt description detailed_merge_status: detailedMergeStatus discussion_locked: discussionLocked downvotes draft force_remove_source_branch: forceRemoveSourceBranch has_ci: hasCi hidden human_time_estimate: humanTimeEstimate human_total_time_spent: humanTotalTimeSpent id iid in_progress_merge_commit_sha: inProgressMergeCommitSha merge_after: mergeAfter merge_commit_sha: mergeCommitSha merge_error: mergeError merge_ongoing: mergeOngoing merge_status_enum: mergeStatusEnum mergeable merged_at: mergedAt name prepared_at: preparedAt project_id: projectId rebase_commit_sha: rebaseCommitSha reference resolvable_discussions_count: resolvableDiscussionsCount resolved_discussions_count: resolvedDiscussionsCount retargeted should_remove_source_branch: shouldRemoveSourceBranch source_branch: sourceBranch source_project_id: sourceProjectId squash squash_on_merge: squashOnMerge squash_read_only: squashReadOnly state supports_lock_on_merge: supportsLockOnMerge target_branch: targetBranch target_branch_exists: targetBranchExists target_branch_path: targetBranchPath target_project_id: targetProjectId time_estimate: timeEstimate title total_time_spent: totalTimeSpent updated_at: updatedAt upvotes user_discussions_count: userDiscussionsCount user_notes_count: userNotesCount web_path: webPath web_url: webUrl author { id username name } project { id full_path: fullPath name } milestone { id title } } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Global ID of the merge request. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + mergeRequest: + type: object + properties: + allow_collaboration: + type: boolean + description: Indicates if members of the target project can push to the fork. + allows_multiple_assignees: + type: boolean + description: Allows assigning multiple users to a merge request. + allows_multiple_reviewers: + type: boolean + description: Allows assigning multiple reviewers to a merge request. + approvals_left: + type: integer + description: Number of approvals left. + approvals_required: + type: integer + description: Number of approvals required. + approved: + type: boolean + description: Indicates if the merge request has all the required approvals. + auto_merge_enabled: + type: boolean + description: Indicates if auto merge is enabled for the merge request. + auto_merge_strategy: + type: string + description: Selected auto merge strategy. + closed_at: + type: string + description: Timestamp of when the merge request was closed, null if not closed. + commit_count: + type: integer + description: Number of commits in the merge request. + conflicts: + type: boolean + description: Indicates if the merge request has conflicts. + created_at: + type: string + description: Timestamp of when the merge request was created. + description: + type: string + description: Description of the merge request (Markdown rendered as HTML for caching). + detailed_merge_status: + type: string + enum: + - UNCHECKED + - CHECKING + - MERGEABLE + - COMMITS_STATUS + - CI_MUST_PASS + - CI_STILL_RUNNING + - DISCUSSIONS_NOT_RESOLVED + - DRAFT_STATUS + - NOT_OPEN + - NOT_APPROVED + - BLOCKED_STATUS + - EXTERNAL_STATUS_CHECKS + - PREPARING + - JIRA_ASSOCIATION + - CONFLICT + - NEED_REBASE + - APPROVALS_SYNCING + - LOCKED_PATHS + - LOCKED_LFS_FILES + - MERGE_TIME + - SECURITY_POLICIES_VIOLATIONS + - TITLE_NOT_MATCHING + - REQUESTED_CHANGES + - SECURITY_POLICY_PIPELINE_CHECK + description: Detailed merge status of the merge request. + discussion_locked: + type: boolean + description: Indicates if comments on the merge request are locked to members only. + downvotes: + type: integer + description: Number of downvotes for the merge request. + draft: + type: boolean + description: Indicates if the merge request is a draft. + force_remove_source_branch: + type: boolean + description: Indicates if the project settings will lead to source branch deletion after merge. + has_ci: + type: boolean + description: Indicates if the merge request has CI. + hidden: + type: boolean + description: Indicates the merge request is hidden because the author has been banned. + human_time_estimate: + type: string + description: Human-readable time estimate of the merge request. + human_total_time_spent: + type: string + description: Human-readable total time reported as spent on the merge request. + id: + type: string + description: ID of the merge request. + iid: + type: string + description: Internal ID of the merge request. + in_progress_merge_commit_sha: + type: string + description: Commit SHA of the merge request if merge is in progress. + merge_after: + type: string + description: Date after which the merge request can be merged. + merge_commit_sha: + type: string + description: SHA of the merge request commit (set once merged). + merge_error: + type: string + description: Error message due to a merge error. + merge_ongoing: + type: boolean + description: Indicates if a merge is currently occurring. + merge_status_enum: + type: string + enum: + - UNCHECKED + - CHECKING + - CAN_BE_MERGED + - CANNOT_BE_MERGED + - CANNOT_BE_MERGED_RECHECK + description: Merge status of the merge request. + mergeable: + type: boolean + description: Indicates if the merge request is mergeable. + merged_at: + type: string + description: Timestamp of when the merge request was merged, null if not merged. + name: + type: string + description: Name or title of the object. + prepared_at: + type: string + description: Timestamp of when the merge request was prepared. + project_id: + type: integer + description: ID of the merge request project. + rebase_commit_sha: + type: string + description: Rebase commit SHA of the merge request. + reference: + type: string + description: Internal reference of the merge request. Returned in shortened format by default. + resolvable_discussions_count: + type: integer + description: Number of user discussions that are resolvable in the merge request. + resolved_discussions_count: + type: integer + description: Number of user discussions that are resolved in the merge request. + retargeted: + type: boolean + description: Indicates if merge request was retargeted. + should_remove_source_branch: + type: boolean + description: Indicates if the source branch of the merge request will be deleted after merge. + source_branch: + type: string + description: Source branch of the merge request. + source_project_id: + type: integer + description: ID of the merge request source project. + squash: + type: boolean + description: Indicates if the merge request is set to be squashed when merged. [Project settings](https://docs.gitlab.com/user/project/merge_requests/squash_and_merge/#configure-squash-options-for-a-project) may override this value. Use `squash_on_merge` instead to take project squash options into account. + squash_on_merge: + type: boolean + description: Indicates if the merge request will be squashed when merged. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + state: + type: string + enum: + - merged + - opened + - closed + - locked + - all + description: State of the merge request. + supports_lock_on_merge: + type: boolean + description: Indicates if the merge request supports locked labels. + target_branch: + type: string + description: Target branch of the merge request. + target_branch_exists: + type: boolean + description: Indicates if the target branch of the merge request exists. + target_branch_path: + type: string + description: Path to the target branch of the merge request. + target_project_id: + type: integer + description: ID of the merge request target project. + time_estimate: + type: integer + description: Time estimate of the merge request. + title: + type: string + description: Title of the merge request. + total_time_spent: + type: integer + description: Total time (in seconds) reported as spent on the merge request. + updated_at: + type: string + description: Timestamp of when the merge request was last updated. + upvotes: + type: integer + description: Number of upvotes for the merge request. + user_discussions_count: + type: integer + description: Number of user discussions in the merge request. + user_notes_count: + type: integer + description: User notes count of the merge request. + web_path: + type: string + description: Web path of the merge request. + web_url: + type: string + description: Web URL of the merge request. + author: + type: object + description: MergeRequestAuthor identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + /api/graphql?resource=project_merge_request_violations&method=list: + post: + operationId: project_merge_request_violations_list + summary: Compliance violations reported on merge requests merged within the project. + description: Compliance violations reported on merge requests merged within the project. Generated from the GitLab GraphQL schema field Project.mergeRequestViolations (connection of ComplianceViolation nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.mergeRequestViolations' + url: https://docs.gitlab.com/api/graphql/reference/#projectmergerequestviolations + x-stackQL-graphQL: + id: gitlab.merge_requests.project_merge_request_violations.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.mergeRequestViolations.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.mergeRequestViolations.pageInfo.endCursor + terminateOnJsonPath: $.data.project.mergeRequestViolations.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { mergeRequestViolations(first: 100{{ .cursor }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { id reason severity_level: severityLevel } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: sort + in: query + required: false + description: List compliance violations by sort order. + schema: + type: string + enum: + - SEVERITY_LEVEL_DESC + - SEVERITY_LEVEL_ASC + - VIOLATION_REASON_DESC + - VIOLATION_REASON_ASC + - MERGE_REQUEST_TITLE_DESC + - MERGE_REQUEST_TITLE_ASC + - MERGED_AT_DESC + - MERGED_AT_ASC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + mergeRequestViolations: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: Compliance violation ID. + reason: + type: string + enum: + - APPROVED_BY_MERGE_REQUEST_AUTHOR + - APPROVED_BY_COMMITTER + - APPROVED_BY_INSUFFICIENT_USERS + description: Reason the compliance violation occurred. + severity_level: + type: string + enum: + - INFO + - LOW + - MEDIUM + - HIGH + - CRITICAL + description: Severity of the compliance violation. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_merge_request&method=get: + post: + operationId: project_merge_request_get + summary: A single merge request of the project. + description: A single merge request of the project. Generated from the GitLab GraphQL schema field Project.mergeRequest (MergeRequest). + externalDocs: + description: 'GitLab GraphQL API reference: Project.mergeRequest' + url: https://docs.gitlab.com/api/graphql/reference/#projectmergerequest + x-stackQL-graphQL: + id: gitlab.merge_requests.project_merge_request.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { mergeRequest(iid: "{{ .iid }}") { allow_collaboration: allowCollaboration allows_multiple_assignees: allowsMultipleAssignees allows_multiple_reviewers: allowsMultipleReviewers approvals_left: approvalsLeft approvals_required: approvalsRequired approved auto_merge_enabled: autoMergeEnabled auto_merge_strategy: autoMergeStrategy closed_at: closedAt commit_count: commitCount conflicts created_at: createdAt description detailed_merge_status: detailedMergeStatus discussion_locked: discussionLocked downvotes draft force_remove_source_branch: forceRemoveSourceBranch has_ci: hasCi hidden human_time_estimate: humanTimeEstimate human_total_time_spent: humanTotalTimeSpent id iid in_progress_merge_commit_sha: inProgressMergeCommitSha merge_after: mergeAfter merge_commit_sha: mergeCommitSha merge_error: mergeError merge_ongoing: mergeOngoing merge_status_enum: mergeStatusEnum mergeable merged_at: mergedAt name prepared_at: preparedAt project_id: projectId rebase_commit_sha: rebaseCommitSha reference resolvable_discussions_count: resolvableDiscussionsCount resolved_discussions_count: resolvedDiscussionsCount retargeted should_remove_source_branch: shouldRemoveSourceBranch source_branch: sourceBranch source_project_id: sourceProjectId squash squash_on_merge: squashOnMerge squash_read_only: squashReadOnly state supports_lock_on_merge: supportsLockOnMerge target_branch: targetBranch target_branch_exists: targetBranchExists target_branch_path: targetBranchPath target_project_id: targetProjectId time_estimate: timeEstimate title total_time_spent: totalTimeSpent updated_at: updatedAt upvotes user_discussions_count: userDiscussionsCount user_notes_count: userNotesCount web_path: webPath web_url: webUrl author { id username name } project { id full_path: fullPath name } milestone { id title } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: iid + in: query + required: true + description: IID of the merge request, for example `1`. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + mergeRequest: + type: object + properties: + allow_collaboration: + type: boolean + description: Indicates if members of the target project can push to the fork. + allows_multiple_assignees: + type: boolean + description: Allows assigning multiple users to a merge request. + allows_multiple_reviewers: + type: boolean + description: Allows assigning multiple reviewers to a merge request. + approvals_left: + type: integer + description: Number of approvals left. + approvals_required: + type: integer + description: Number of approvals required. + approved: + type: boolean + description: Indicates if the merge request has all the required approvals. + auto_merge_enabled: + type: boolean + description: Indicates if auto merge is enabled for the merge request. + auto_merge_strategy: + type: string + description: Selected auto merge strategy. + closed_at: + type: string + description: Timestamp of when the merge request was closed, null if not closed. + commit_count: + type: integer + description: Number of commits in the merge request. + conflicts: + type: boolean + description: Indicates if the merge request has conflicts. + created_at: + type: string + description: Timestamp of when the merge request was created. + description: + type: string + description: Description of the merge request (Markdown rendered as HTML for caching). + detailed_merge_status: + type: string + enum: + - UNCHECKED + - CHECKING + - MERGEABLE + - COMMITS_STATUS + - CI_MUST_PASS + - CI_STILL_RUNNING + - DISCUSSIONS_NOT_RESOLVED + - DRAFT_STATUS + - NOT_OPEN + - NOT_APPROVED + - BLOCKED_STATUS + - EXTERNAL_STATUS_CHECKS + - PREPARING + - JIRA_ASSOCIATION + - CONFLICT + - NEED_REBASE + - APPROVALS_SYNCING + - LOCKED_PATHS + - LOCKED_LFS_FILES + - MERGE_TIME + - SECURITY_POLICIES_VIOLATIONS + - TITLE_NOT_MATCHING + - REQUESTED_CHANGES + - SECURITY_POLICY_PIPELINE_CHECK + description: Detailed merge status of the merge request. + discussion_locked: + type: boolean + description: Indicates if comments on the merge request are locked to members only. + downvotes: + type: integer + description: Number of downvotes for the merge request. + draft: + type: boolean + description: Indicates if the merge request is a draft. + force_remove_source_branch: + type: boolean + description: Indicates if the project settings will lead to source branch deletion after merge. + has_ci: + type: boolean + description: Indicates if the merge request has CI. + hidden: + type: boolean + description: Indicates the merge request is hidden because the author has been banned. + human_time_estimate: + type: string + description: Human-readable time estimate of the merge request. + human_total_time_spent: + type: string + description: Human-readable total time reported as spent on the merge request. + id: + type: string + description: ID of the merge request. + iid: + type: string + description: Internal ID of the merge request. + in_progress_merge_commit_sha: + type: string + description: Commit SHA of the merge request if merge is in progress. + merge_after: + type: string + description: Date after which the merge request can be merged. + merge_commit_sha: + type: string + description: SHA of the merge request commit (set once merged). + merge_error: + type: string + description: Error message due to a merge error. + merge_ongoing: + type: boolean + description: Indicates if a merge is currently occurring. + merge_status_enum: + type: string + enum: + - UNCHECKED + - CHECKING + - CAN_BE_MERGED + - CANNOT_BE_MERGED + - CANNOT_BE_MERGED_RECHECK + description: Merge status of the merge request. + mergeable: + type: boolean + description: Indicates if the merge request is mergeable. + merged_at: + type: string + description: Timestamp of when the merge request was merged, null if not merged. + name: + type: string + description: Name or title of the object. + prepared_at: + type: string + description: Timestamp of when the merge request was prepared. + project_id: + type: integer + description: ID of the merge request project. + rebase_commit_sha: + type: string + description: Rebase commit SHA of the merge request. + reference: + type: string + description: Internal reference of the merge request. Returned in shortened format by default. + resolvable_discussions_count: + type: integer + description: Number of user discussions that are resolvable in the merge request. + resolved_discussions_count: + type: integer + description: Number of user discussions that are resolved in the merge request. + retargeted: + type: boolean + description: Indicates if merge request was retargeted. + should_remove_source_branch: + type: boolean + description: Indicates if the source branch of the merge request will be deleted after merge. + source_branch: + type: string + description: Source branch of the merge request. + source_project_id: + type: integer + description: ID of the merge request source project. + squash: + type: boolean + description: Indicates if the merge request is set to be squashed when merged. [Project settings](https://docs.gitlab.com/user/project/merge_requests/squash_and_merge/#configure-squash-options-for-a-project) may override this value. Use `squash_on_merge` instead to take project squash options into account. + squash_on_merge: + type: boolean + description: Indicates if the merge request will be squashed when merged. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + state: + type: string + enum: + - merged + - opened + - closed + - locked + - all + description: State of the merge request. + supports_lock_on_merge: + type: boolean + description: Indicates if the merge request supports locked labels. + target_branch: + type: string + description: Target branch of the merge request. + target_branch_exists: + type: boolean + description: Indicates if the target branch of the merge request exists. + target_branch_path: + type: string + description: Path to the target branch of the merge request. + target_project_id: + type: integer + description: ID of the merge request target project. + time_estimate: + type: integer + description: Time estimate of the merge request. + title: + type: string + description: Title of the merge request. + total_time_spent: + type: integer + description: Total time (in seconds) reported as spent on the merge request. + updated_at: + type: string + description: Timestamp of when the merge request was last updated. + upvotes: + type: integer + description: Number of upvotes for the merge request. + user_discussions_count: + type: integer + description: Number of user discussions in the merge request. + user_notes_count: + type: integer + description: User notes count of the merge request. + web_path: + type: string + description: Web path of the merge request. + web_url: + type: string + description: Web URL of the merge request. + author: + type: object + description: MergeRequestAuthor identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + /api/graphql?resource=project_merge_requests_access_level&method=get: + post: + operationId: project_merge_requests_access_level_get + summary: Access level required for merge requests access. + description: Access level required for merge requests access. Generated from the GitLab GraphQL schema field Project.mergeRequestsAccessLevel (ProjectFeatureAccess). + externalDocs: + description: 'GitLab GraphQL API reference: Project.mergeRequestsAccessLevel' + url: https://docs.gitlab.com/api/graphql/reference/#projectmergerequestsaccesslevel + x-stackQL-graphQL: + id: gitlab.merge_requests.project_merge_requests_access_level.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { mergeRequestsAccessLevel { integer_value: integerValue string_value: stringValue } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + mergeRequestsAccessLevel: + type: object + properties: + integer_value: + type: integer + description: Integer representation of access level. + string_value: + type: string + enum: + - DISABLED + - PRIVATE + - ENABLED + description: String representation of access level. + /api/graphql?resource=project_merge_requests&method=list: + post: + operationId: project_merge_requests_list + summary: Merge requests of the project. + description: Merge requests of the project. Generated from the GitLab GraphQL schema field Project.mergeRequests (connection of MergeRequest nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.mergeRequests' + url: https://docs.gitlab.com/api/graphql/reference/#projectmergerequests + x-stackQL-graphQL: + id: gitlab.merge_requests.project_merge_requests.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.mergeRequests.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.mergeRequests.pageInfo.endCursor + terminateOnJsonPath: $.data.project.mergeRequests.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { mergeRequests(first: 100{{ .cursor }}{{ if .assignee_username }}, assigneeUsername: "{{ .assignee_username }}"{{ end }}{{ if .assignee_wildcard_id }}, assigneeWildcardId: {{ .assignee_wildcard_id }}{{ end }}{{ if .author_username }}, authorUsername: "{{ .author_username }}"{{ end }}{{ if .closed_after }}, closedAfter: "{{ .closed_after }}"{{ end }}{{ if .closed_before }}, closedBefore: "{{ .closed_before }}"{{ end }}{{ if .created_after }}, createdAfter: "{{ .created_after }}"{{ end }}{{ if .created_before }}, createdBefore: "{{ .created_before }}"{{ end }}{{ if .deployed_after }}, deployedAfter: "{{ .deployed_after }}"{{ end }}{{ if .deployed_before }}, deployedBefore: "{{ .deployed_before }}"{{ end }}{{ if .deployment_id }}, deploymentId: "{{ .deployment_id }}"{{ end }}{{ if .draft }}, draft: {{ .draft }}{{ end }}{{ if .environment_name }}, environmentName: "{{ .environment_name }}"{{ end }}{{ if .merged_after }}, mergedAfter: "{{ .merged_after }}"{{ end }}{{ if .merged_before }}, mergedBefore: "{{ .merged_before }}"{{ end }}{{ if .merged_by }}, mergedBy: "{{ .merged_by }}"{{ end }}{{ if .milestone_title }}, milestoneTitle: "{{ .milestone_title }}"{{ end }}{{ if .milestone_wildcard_id }}, milestoneWildcardId: {{ .milestone_wildcard_id }}{{ end }}{{ if .my_reaction_emoji }}, myReactionEmoji: "{{ .my_reaction_emoji }}"{{ end }}{{ if .release_tag }}, releaseTag: "{{ .release_tag }}"{{ end }}{{ if .reviewer_username }}, reviewerUsername: "{{ .reviewer_username }}"{{ end }}{{ if .reviewer_wildcard_id }}, reviewerWildcardId: {{ .reviewer_wildcard_id }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}{{ if .subscribed }}, subscribed: {{ .subscribed }}{{ end }}{{ if .updated_after }}, updatedAfter: "{{ .updated_after }}"{{ end }}{{ if .updated_before }}, updatedBefore: "{{ .updated_before }}"{{ end }}) { nodes { allow_collaboration: allowCollaboration allows_multiple_assignees: allowsMultipleAssignees allows_multiple_reviewers: allowsMultipleReviewers approvals_left: approvalsLeft approvals_required: approvalsRequired approved auto_merge_enabled: autoMergeEnabled auto_merge_strategy: autoMergeStrategy closed_at: closedAt commit_count: commitCount conflicts created_at: createdAt description detailed_merge_status: detailedMergeStatus discussion_locked: discussionLocked downvotes draft force_remove_source_branch: forceRemoveSourceBranch has_ci: hasCi hidden human_time_estimate: humanTimeEstimate human_total_time_spent: humanTotalTimeSpent id iid in_progress_merge_commit_sha: inProgressMergeCommitSha merge_after: mergeAfter merge_commit_sha: mergeCommitSha merge_error: mergeError merge_ongoing: mergeOngoing merge_status_enum: mergeStatusEnum mergeable merged_at: mergedAt name prepared_at: preparedAt project_id: projectId rebase_commit_sha: rebaseCommitSha reference resolvable_discussions_count: resolvableDiscussionsCount resolved_discussions_count: resolvedDiscussionsCount retargeted should_remove_source_branch: shouldRemoveSourceBranch source_branch: sourceBranch source_project_id: sourceProjectId squash squash_on_merge: squashOnMerge squash_read_only: squashReadOnly state supports_lock_on_merge: supportsLockOnMerge target_branch: targetBranch target_branch_exists: targetBranchExists target_branch_path: targetBranchPath target_project_id: targetProjectId time_estimate: timeEstimate title total_time_spent: totalTimeSpent updated_at: updatedAt upvotes user_discussions_count: userDiscussionsCount user_notes_count: userNotesCount web_path: webPath web_url: webUrl author { id username name } project { id full_path: fullPath name } milestone { id title } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: assignee_username + in: query + required: false + description: Username of the assignee. + schema: + type: string + - name: assignee_wildcard_id + in: query + required: false + description: Filter by assignee presence. Incompatible with assigneeUsernames and assigneeUsername. + schema: + type: string + enum: + - NONE + - ANY + - ME + - name: author_username + in: query + required: false + description: Username of the author. + schema: + type: string + - name: closed_after + in: query + required: false + description: Merge requests closed after the date. + schema: + type: string + - name: closed_before + in: query + required: false + description: Merge requests closed before the date. + schema: + type: string + - name: created_after + in: query + required: false + description: Merge requests created after the timestamp. + schema: + type: string + - name: created_before + in: query + required: false + description: Merge requests created before the timestamp. + schema: + type: string + - name: deployed_after + in: query + required: false + description: Merge requests deployed after the timestamp. + schema: + type: string + - name: deployed_before + in: query + required: false + description: Merge requests deployed before the timestamp. + schema: + type: string + - name: deployment_id + in: query + required: false + description: ID of the deployment. + schema: + type: string + - name: draft + in: query + required: false + description: Limit result to draft merge requests. + schema: + type: boolean + - name: environment_name + in: query + required: false + description: Environment merge requests have been deployed to. + schema: + type: string + - name: merged_after + in: query + required: false + description: Merge requests merged after the date. + schema: + type: string + - name: merged_before + in: query + required: false + description: Merge requests merged before the date. + schema: + type: string + - name: merged_by + in: query + required: false + description: Username of the merger. + schema: + type: string + - name: milestone_title + in: query + required: false + description: Title of the milestone. Incompatible with milestoneWildcardId. + schema: + type: string + - name: milestone_wildcard_id + in: query + required: false + description: Filter issues by milestone ID wildcard. Incompatible with milestoneTitle. + schema: + type: string + enum: + - NONE + - ANY + - STARTED + - UPCOMING + - name: my_reaction_emoji + in: query + required: false + description: Filter by your reaction emoji. + schema: + type: string + - name: release_tag + in: query + required: false + description: Filter by release tag. + schema: + type: string + - name: reviewer_username + in: query + required: false + description: Username of the reviewer. + schema: + type: string + - name: reviewer_wildcard_id + in: query + required: false + description: Filter by reviewer presence. Incompatible with reviewerUsername. + schema: + type: string + enum: + - NONE + - ANY + - name: search + in: query + required: false + description: Search query for title or description. + schema: + type: string + - name: sort + in: query + required: false + description: Sort merge requests by the criteria. + schema: + type: string + enum: + - MERGED_AT_ASC + - MERGED_AT_DESC + - CLOSED_AT_ASC + - CLOSED_AT_DESC + - TITLE_ASC + - TITLE_DESC + - POPULARITY_ASC + - POPULARITY_DESC + - PRIORITY_ASC + - PRIORITY_DESC + - LABEL_PRIORITY_ASC + - LABEL_PRIORITY_DESC + - MILESTONE_DUE_ASC + - MILESTONE_DUE_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: state + in: query + required: false + description: Merge request state. If provided, all resolved merge requests will have the state. + schema: + type: string + enum: + - merged + - opened + - closed + - locked + - all + - name: subscribed + in: query + required: false + description: Merge requests the current user is subscribed to. + schema: + type: string + enum: + - EXPLICITLY_SUBSCRIBED + - EXPLICITLY_UNSUBSCRIBED + - name: updated_after + in: query + required: false + description: Merge requests updated after the timestamp. + schema: + type: string + - name: updated_before + in: query + required: false + description: Merge requests updated before the timestamp. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + mergeRequests: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + allow_collaboration: + type: boolean + description: Indicates if members of the target project can push to the fork. + allows_multiple_assignees: + type: boolean + description: Allows assigning multiple users to a merge request. + allows_multiple_reviewers: + type: boolean + description: Allows assigning multiple reviewers to a merge request. + approvals_left: + type: integer + description: Number of approvals left. + approvals_required: + type: integer + description: Number of approvals required. + approved: + type: boolean + description: Indicates if the merge request has all the required approvals. + auto_merge_enabled: + type: boolean + description: Indicates if auto merge is enabled for the merge request. + auto_merge_strategy: + type: string + description: Selected auto merge strategy. + closed_at: + type: string + description: Timestamp of when the merge request was closed, null if not closed. + commit_count: + type: integer + description: Number of commits in the merge request. + conflicts: + type: boolean + description: Indicates if the merge request has conflicts. + created_at: + type: string + description: Timestamp of when the merge request was created. + description: + type: string + description: Description of the merge request (Markdown rendered as HTML for caching). + detailed_merge_status: + type: string + enum: + - UNCHECKED + - CHECKING + - MERGEABLE + - COMMITS_STATUS + - CI_MUST_PASS + - CI_STILL_RUNNING + - DISCUSSIONS_NOT_RESOLVED + - DRAFT_STATUS + - NOT_OPEN + - NOT_APPROVED + - BLOCKED_STATUS + - EXTERNAL_STATUS_CHECKS + - PREPARING + - JIRA_ASSOCIATION + - CONFLICT + - NEED_REBASE + - APPROVALS_SYNCING + - LOCKED_PATHS + - LOCKED_LFS_FILES + - MERGE_TIME + - SECURITY_POLICIES_VIOLATIONS + - TITLE_NOT_MATCHING + - REQUESTED_CHANGES + - SECURITY_POLICY_PIPELINE_CHECK + description: Detailed merge status of the merge request. + discussion_locked: + type: boolean + description: Indicates if comments on the merge request are locked to members only. + downvotes: + type: integer + description: Number of downvotes for the merge request. + draft: + type: boolean + description: Indicates if the merge request is a draft. + force_remove_source_branch: + type: boolean + description: Indicates if the project settings will lead to source branch deletion after merge. + has_ci: + type: boolean + description: Indicates if the merge request has CI. + hidden: + type: boolean + description: Indicates the merge request is hidden because the author has been banned. + human_time_estimate: + type: string + description: Human-readable time estimate of the merge request. + human_total_time_spent: + type: string + description: Human-readable total time reported as spent on the merge request. + id: + type: string + description: ID of the merge request. + iid: + type: string + description: Internal ID of the merge request. + in_progress_merge_commit_sha: + type: string + description: Commit SHA of the merge request if merge is in progress. + merge_after: + type: string + description: Date after which the merge request can be merged. + merge_commit_sha: + type: string + description: SHA of the merge request commit (set once merged). + merge_error: + type: string + description: Error message due to a merge error. + merge_ongoing: + type: boolean + description: Indicates if a merge is currently occurring. + merge_status_enum: + type: string + enum: + - UNCHECKED + - CHECKING + - CAN_BE_MERGED + - CANNOT_BE_MERGED + - CANNOT_BE_MERGED_RECHECK + description: Merge status of the merge request. + mergeable: + type: boolean + description: Indicates if the merge request is mergeable. + merged_at: + type: string + description: Timestamp of when the merge request was merged, null if not merged. + name: + type: string + description: Name or title of the object. + prepared_at: + type: string + description: Timestamp of when the merge request was prepared. + project_id: + type: integer + description: ID of the merge request project. + rebase_commit_sha: + type: string + description: Rebase commit SHA of the merge request. + reference: + type: string + description: Internal reference of the merge request. Returned in shortened format by default. + resolvable_discussions_count: + type: integer + description: Number of user discussions that are resolvable in the merge request. + resolved_discussions_count: + type: integer + description: Number of user discussions that are resolved in the merge request. + retargeted: + type: boolean + description: Indicates if merge request was retargeted. + should_remove_source_branch: + type: boolean + description: Indicates if the source branch of the merge request will be deleted after merge. + source_branch: + type: string + description: Source branch of the merge request. + source_project_id: + type: integer + description: ID of the merge request source project. + squash: + type: boolean + description: Indicates if the merge request is set to be squashed when merged. [Project settings](https://docs.gitlab.com/user/project/merge_requests/squash_and_merge/#configure-squash-options-for-a-project) may override this value. Use `squash_on_merge` instead to take project squash options into account. + squash_on_merge: + type: boolean + description: Indicates if the merge request will be squashed when merged. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + state: + type: string + enum: + - merged + - opened + - closed + - locked + - all + description: State of the merge request. + supports_lock_on_merge: + type: boolean + description: Indicates if the merge request supports locked labels. + target_branch: + type: string + description: Target branch of the merge request. + target_branch_exists: + type: boolean + description: Indicates if the target branch of the merge request exists. + target_branch_path: + type: string + description: Path to the target branch of the merge request. + target_project_id: + type: integer + description: ID of the merge request target project. + time_estimate: + type: integer + description: Time estimate of the merge request. + title: + type: string + description: Title of the merge request. + total_time_spent: + type: integer + description: Total time (in seconds) reported as spent on the merge request. + updated_at: + type: string + description: Timestamp of when the merge request was last updated. + upvotes: + type: integer + description: Number of upvotes for the merge request. + user_discussions_count: + type: integer + description: Number of user discussions in the merge request. + user_notes_count: + type: integer + description: User notes count of the merge request. + web_path: + type: string + description: Web path of the merge request. + web_url: + type: string + description: Web URL of the merge request. + author: + type: object + description: MergeRequestAuthor identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + milestone: + type: object + description: Milestone identity (id, title) + properties: + id: + type: string + title: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + group_merge_request_violations: + id: gitlab.merge_requests.group_merge_request_violations + name: group_merge_request_violations + title: Group Merge Request Violations + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_merge_request_violations&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.mergeRequestViolations.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_merge_request_violations/methods/list' + insert: [] + update: [] + delete: [] + group_merge_requests: + id: gitlab.merge_requests.group_merge_requests + name: group_merge_requests + title: Group Merge Requests + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_merge_requests&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.mergeRequests.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_merge_requests/methods/list' + insert: [] + update: [] + delete: [] + merge_request: + id: gitlab.merge_requests.merge_request + name: merge_request + title: Merge Request + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=merge_request&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.mergeRequest + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/merge_request/methods/get' + insert: [] + update: [] + delete: [] + project_merge_request_violations: + id: gitlab.merge_requests.project_merge_request_violations + name: project_merge_request_violations + title: Project Merge Request Violations + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_merge_request_violations&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.mergeRequestViolations.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_merge_request_violations/methods/list' + insert: [] + update: [] + delete: [] + project_merge_request: + id: gitlab.merge_requests.project_merge_request + name: project_merge_request + title: Project Merge Request + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_merge_request&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.mergeRequest + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_merge_request/methods/get' + insert: [] + update: [] + delete: [] + project_merge_requests_access_level: + id: gitlab.merge_requests.project_merge_requests_access_level + name: project_merge_requests_access_level + title: Project Merge Requests Access Level + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_merge_requests_access_level&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.mergeRequestsAccessLevel + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_merge_requests_access_level/methods/get' + insert: [] + update: [] + delete: [] + project_merge_requests: + id: gitlab.merge_requests.project_merge_requests + name: project_merge_requests + title: Project Merge Requests + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_merge_requests&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.mergeRequests.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_merge_requests/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/metadata.yaml b/providers/src/gitlab/v00.00.00000/services/metadata.yaml new file mode 100644 index 00000000..f733f2e7 --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/metadata.yaml @@ -0,0 +1,240 @@ +openapi: 3.0.3 +info: + title: metadata API + description: 'Instance metadata - GitLab version and revision, current license and query complexity. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=current_license&method=get: + post: + operationId: current_license_get + summary: Fields related to the current license. + description: Fields related to the current license. Generated from the GitLab GraphQL schema field Query.currentLicense (CurrentLicense). + externalDocs: + description: 'GitLab GraphQL API reference: Query.currentLicense' + url: https://docs.gitlab.com/api/graphql/reference/#querycurrentlicense + x-stackQL-graphQL: + id: gitlab.metadata.current_license.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { currentLicense { activated_at: activatedAt billable_users_count: billableUsersCount block_changes_at: blockChangesAt company created_at: createdAt email expires_at: expiresAt has_gitlab_credits_add_on: hasGitlabCreditsAddOn id last_sync: lastSync maximum_user_count: maximumUserCount name plan starts_at: startsAt trial type users_in_license_count: usersInLicenseCount users_over_license_count: usersOverLicenseCount } }' + x-stackql-protocol: graphql + parameters: [] + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + currentLicense: + type: object + properties: + activated_at: + type: string + description: Date when the license was activated. + billable_users_count: + type: integer + description: Number of billable users on the system. + block_changes_at: + type: string + description: Date when licensed features will be blocked. + company: + type: string + description: Company of the licensee. + created_at: + type: string + description: Date when the license was added. + email: + type: string + description: Email of the licensee. + expires_at: + type: string + description: Date when the license expires. + has_gitlab_credits_add_on: + type: boolean + description: Whether the license has an active GitLab Credits add-on. + id: + type: string + description: ID of the license extracted from the license data. + last_sync: + type: string + description: Date when the license was last synced. + maximum_user_count: + type: integer + description: Highest number of billable users on the system during the term of the current license. + name: + type: string + description: Name of the licensee. + plan: + type: string + description: Name of the subscription plan. + starts_at: + type: string + description: Date when the license started. + trial: + type: boolean + description: Indicates if the license is a trial. + type: + type: string + description: Type of the license. + users_in_license_count: + type: integer + description: Number of paid users in the license. + users_over_license_count: + type: integer + description: Number of users over the paid users in the license. + /api/graphql?resource=metadata&method=get: + post: + operationId: metadata_get + summary: Metadata about GitLab. + description: Metadata about GitLab. Generated from the GitLab GraphQL schema field Query.metadata (Metadata). + externalDocs: + description: 'GitLab GraphQL API reference: Query.metadata' + url: https://docs.gitlab.com/api/graphql/reference/#querymetadata + x-stackQL-graphQL: + id: gitlab.metadata.metadata.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: query { metadata { enterprise revision version } } + x-stackql-protocol: graphql + parameters: [] + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + metadata: + type: object + properties: + enterprise: + type: boolean + description: Enterprise edition. + revision: + type: string + description: Revision. + version: + type: string + description: Version. + /api/graphql?resource=query_complexity&method=get: + post: + operationId: query_complexity_get + summary: Information about the complexity of the GraphQL query. + description: Information about the complexity of the GraphQL query. Generated from the GitLab GraphQL schema field Query.queryComplexity (QueryComplexity). + externalDocs: + description: 'GitLab GraphQL API reference: Query.queryComplexity' + url: https://docs.gitlab.com/api/graphql/reference/#queryquerycomplexity + x-stackQL-graphQL: + id: gitlab.metadata.query_complexity.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { queryComplexity { limit_: limit score } }' + x-stackql-protocol: graphql + parameters: [] + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + queryComplexity: + type: object + properties: + limit_: + type: integer + description: GraphQL query complexity limit. + score: + type: integer + description: GraphQL query complexity score. +components: + x-stackQL-resources: + current_license: + id: gitlab.metadata.current_license + name: current_license + title: Current License + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=current_license&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.currentLicense + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/current_license/methods/get' + insert: [] + update: [] + delete: [] + metadata: + id: gitlab.metadata.metadata + name: metadata + title: Metadata + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=metadata&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.metadata + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/metadata/methods/get' + insert: [] + update: [] + delete: [] + query_complexity: + id: gitlab.metadata.query_complexity + name: query_complexity + title: Query Complexity + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=query_complexity&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.queryComplexity + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/query_complexity/methods/get' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/ml.yaml b/providers/src/gitlab/v00.00.00000/services/ml.yaml new file mode 100644 index 00000000..143e2545 --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/ml.yaml @@ -0,0 +1,216 @@ +openapi: 3.0.3 +info: + title: ml API + description: 'Machine learning model registry - experiments. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=ml_experiment&method=get: + post: + operationId: ml_experiment_get + summary: Find a machine learning experiment. + description: Find a machine learning experiment. Generated from the GitLab GraphQL schema field Query.mlExperiment (MlExperiment). + externalDocs: + description: 'GitLab GraphQL API reference: Query.mlExperiment' + url: https://docs.gitlab.com/api/graphql/reference/#querymlexperiment + x-stackQL-graphQL: + id: gitlab.ml.ml_experiment.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { mlExperiment(id: "{{ .id }}") { candidate_count: candidateCount created_at: createdAt id model_id: modelId name path updated_at: updatedAt } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: ID of the experiment. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + mlExperiment: + type: object + properties: + candidate_count: + type: integer + description: Number of candidates in the experiment. + created_at: + type: string + description: Timestamp of when the experiment was created. + id: + type: string + description: ID of the experiment. + model_id: + type: string + description: ID of the model. + name: + type: string + description: Name of the experiment. + path: + type: string + description: Web URL of the experiment. + updated_at: + type: string + description: Timestamp of when the experiment was updated. + /api/graphql?resource=project_ml_experiments&method=list: + post: + operationId: project_ml_experiments_list + summary: Find machine learning experiments + description: Find machine learning experiments Generated from the GitLab GraphQL schema field Project.mlExperiments (connection of MlExperiment nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.mlExperiments' + url: https://docs.gitlab.com/api/graphql/reference/#projectmlexperiments + x-stackQL-graphQL: + id: gitlab.ml.project_ml_experiments.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.mlExperiments.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.mlExperiments.pageInfo.endCursor + terminateOnJsonPath: $.data.project.mlExperiments.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { mlExperiments(first: 100{{ .cursor }}{{ if .name }}, name: "{{ .name }}"{{ end }}{{ if .order_by }}, orderBy: {{ .order_by }}{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { candidate_count: candidateCount created_at: createdAt id model_id: modelId name path updated_at: updatedAt } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: name + in: query + required: false + description: Search for names that include the string. + schema: + type: string + - name: order_by + in: query + required: false + description: Ordering column. Default is created_at. + schema: + type: string + enum: + - NAME + - CREATED_AT + - UPDATED_AT + - ID + - name: sort + in: query + required: false + description: Ordering direction. Default is desc. + schema: + type: string + enum: + - ASC + - DESC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + mlExperiments: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + candidate_count: + type: integer + description: Number of candidates in the experiment. + created_at: + type: string + description: Timestamp of when the experiment was created. + id: + type: string + description: ID of the experiment. + model_id: + type: string + description: ID of the model. + name: + type: string + description: Name of the experiment. + path: + type: string + description: Web URL of the experiment. + updated_at: + type: string + description: Timestamp of when the experiment was updated. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + ml_experiment: + id: gitlab.ml.ml_experiment + name: ml_experiment + title: Ml Experiment + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=ml_experiment&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.mlExperiment + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/ml_experiment/methods/get' + insert: [] + update: [] + delete: [] + project_ml_experiments: + id: gitlab.ml.project_ml_experiments + name: project_ml_experiments + title: Project Ml Experiments + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_ml_experiments&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.mlExperiments.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_ml_experiments/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/packages.yaml b/providers/src/gitlab/v00.00.00000/services/packages.yaml new file mode 100644 index 00000000..615d53c5 --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/packages.yaml @@ -0,0 +1,1885 @@ +openapi: 3.0.3 +info: + title: packages API + description: 'Packages and registries - packages, container repositories, container protection rules, dependency proxy and cleanup policies. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=container_repository&method=get: + post: + operationId: container_repository_get + summary: Find a container repository. + description: Find a container repository. Generated from the GitLab GraphQL schema field Query.containerRepository (ContainerRepositoryDetails). + externalDocs: + description: 'GitLab GraphQL API reference: Query.containerRepository' + url: https://docs.gitlab.com/api/graphql/reference/#querycontainerrepository + x-stackQL-graphQL: + id: gitlab.packages.container_repository.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { containerRepository(id: "{{ .id }}") { created_at: createdAt expiration_policy_cleanup_status: expirationPolicyCleanupStatus expiration_policy_started_at: expirationPolicyStartedAt id last_cleanup_deleted_tags_count: lastCleanupDeletedTagsCount last_published_at: lastPublishedAt location name path protection_rule_exists: protectionRuleExists size status tags_count: tagsCount updated_at: updatedAt project { id full_path: fullPath name } } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Global ID of the container repository. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + containerRepository: + type: object + properties: + created_at: + type: string + description: Timestamp when the container repository was created. + expiration_policy_cleanup_status: + type: string + enum: + - UNSCHEDULED + - SCHEDULED + - UNFINISHED + - ONGOING + description: Tags cleanup status for the container repository. + expiration_policy_started_at: + type: string + description: Timestamp when the cleanup done by the expiration policy was started on the container repository. + id: + type: string + description: ID of the container repository. + last_cleanup_deleted_tags_count: + type: integer + description: Number of deleted tags from the last cleanup. + last_published_at: + type: string + description: Timestamp when a repository tag was last created or updated. Only present for repositories that had tags created or updated after GitLab 16.11. + location: + type: string + description: URL of the container repository. + name: + type: string + description: Name of the container repository. + path: + type: string + description: Path of the container repository. + protection_rule_exists: + type: boolean + description: Whether any matching container protection rule exists for the container repository. + size: + type: number + description: Deduplicated size of the image repository in bytes. This is only available on GitLab.com for repositories created after `2021-11-04`. + status: + type: string + enum: + - DELETE_SCHEDULED + - DELETE_FAILED + - DELETE_ONGOING + description: Status of the container repository. + tags_count: + type: integer + description: Number of tags associated with the image. + updated_at: + type: string + description: Timestamp when the container repository was updated. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=group_container_repositories&method=list: + post: + operationId: group_container_repositories_list + summary: Container repositories of the group. + description: Container repositories of the group. Generated from the GitLab GraphQL schema field Group.containerRepositories (connection of ContainerRepository nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.containerRepositories' + url: https://docs.gitlab.com/api/graphql/reference/#groupcontainerrepositories + x-stackQL-graphQL: + id: gitlab.packages.group_container_repositories.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.containerRepositories.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.containerRepositories.pageInfo.endCursor + terminateOnJsonPath: $.data.group.containerRepositories.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { containerRepositories(first: 100{{ .cursor }}{{ if .name }}, name: "{{ .name }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { created_at: createdAt expiration_policy_cleanup_status: expirationPolicyCleanupStatus expiration_policy_started_at: expirationPolicyStartedAt id last_cleanup_deleted_tags_count: lastCleanupDeletedTagsCount location name path protection_rule_exists: protectionRuleExists status tags_count: tagsCount updated_at: updatedAt project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: name + in: query + required: false + description: Filter the container repositories by their name. + schema: + type: string + - name: sort + in: query + required: false + description: Sort container repositories by the criteria. + schema: + type: string + enum: + - NAME_ASC + - NAME_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + containerRepositories: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp when the container repository was created. + expiration_policy_cleanup_status: + type: string + enum: + - UNSCHEDULED + - SCHEDULED + - UNFINISHED + - ONGOING + description: Tags cleanup status for the container repository. + expiration_policy_started_at: + type: string + description: Timestamp when the cleanup done by the expiration policy was started on the container repository. + id: + type: string + description: ID of the container repository. + last_cleanup_deleted_tags_count: + type: integer + description: Number of deleted tags from the last cleanup. + location: + type: string + description: URL of the container repository. + name: + type: string + description: Name of the container repository. + path: + type: string + description: Path of the container repository. + protection_rule_exists: + type: boolean + description: Whether any matching container protection rule exists for the container repository. + status: + type: string + enum: + - DELETE_SCHEDULED + - DELETE_FAILED + - DELETE_ONGOING + description: Status of the container repository. + tags_count: + type: integer + description: Number of tags associated with the image. + updated_at: + type: string + description: Timestamp when the container repository was updated. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_dependency_proxy_blobs&method=list: + post: + operationId: group_dependency_proxy_blobs_list + summary: Dependency Proxy blobs. + description: Dependency Proxy blobs. Generated from the GitLab GraphQL schema field Group.dependencyProxyBlobs (connection of DependencyProxyBlob nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.dependencyProxyBlobs' + url: https://docs.gitlab.com/api/graphql/reference/#groupdependencyproxyblobs + x-stackQL-graphQL: + id: gitlab.packages.group_dependency_proxy_blobs.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.dependencyProxyBlobs.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.dependencyProxyBlobs.pageInfo.endCursor + terminateOnJsonPath: $.data.group.dependencyProxyBlobs.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { dependencyProxyBlobs(first: 100{{ .cursor }}) { nodes { created_at: createdAt file_name: fileName size updated_at: updatedAt } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + dependencyProxyBlobs: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Date of creation. + file_name: + type: string + description: Name of the blob. + size: + type: string + description: Size of the blob file. + updated_at: + type: string + description: Date of most recent update. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_dependency_proxy_image_ttl_policy&method=get: + post: + operationId: group_dependency_proxy_image_ttl_policy_get + summary: Dependency proxy TTL policy for the group. + description: Dependency proxy TTL policy for the group. Generated from the GitLab GraphQL schema field Group.dependencyProxyImageTtlPolicy (DependencyProxyImageTtlGroupPolicy). + externalDocs: + description: 'GitLab GraphQL API reference: Group.dependencyProxyImageTtlPolicy' + url: https://docs.gitlab.com/api/graphql/reference/#groupdependencyproxyimagettlpolicy + x-stackQL-graphQL: + id: gitlab.packages.group_dependency_proxy_image_ttl_policy.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { dependencyProxyImageTtlPolicy { created_at: createdAt enabled ttl updated_at: updatedAt } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + dependencyProxyImageTtlPolicy: + type: object + properties: + created_at: + type: string + description: Timestamp of creation. + enabled: + type: boolean + description: Indicates whether the policy is enabled or disabled. + ttl: + type: integer + description: Number of days to retain a cached image file. + updated_at: + type: string + description: Timestamp of the most recent update. + /api/graphql?resource=group_dependency_proxy_manifests&method=list: + post: + operationId: group_dependency_proxy_manifests_list + summary: Dependency Proxy manifests. + description: Dependency Proxy manifests. Generated from the GitLab GraphQL schema field Group.dependencyProxyManifests (connection of DependencyProxyManifest nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.dependencyProxyManifests' + url: https://docs.gitlab.com/api/graphql/reference/#groupdependencyproxymanifests + x-stackQL-graphQL: + id: gitlab.packages.group_dependency_proxy_manifests.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.dependencyProxyManifests.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.dependencyProxyManifests.pageInfo.endCursor + terminateOnJsonPath: $.data.group.dependencyProxyManifests.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { dependencyProxyManifests(first: 100{{ .cursor }}) { nodes { created_at: createdAt digest file_name: fileName id image_name: imageName size status updated_at: updatedAt } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + dependencyProxyManifests: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Date of creation. + digest: + type: string + description: Digest of the manifest. + file_name: + type: string + description: Name of the manifest. + id: + type: string + description: ID of the manifest. + image_name: + type: string + description: Name of the image. + size: + type: string + description: Size of the manifest file. + status: + type: string + enum: + - DEFAULT + - PENDING_DESTRUCTION + - PROCESSING + - ERROR + description: Status of the manifest (default, pending_destruction, processing, error) + updated_at: + type: string + description: Date of most recent update. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_dependency_proxy_setting&method=get: + post: + operationId: group_dependency_proxy_setting_get + summary: Dependency Proxy settings for the group. + description: Dependency Proxy settings for the group. Generated from the GitLab GraphQL schema field Group.dependencyProxySetting (DependencyProxySetting). + externalDocs: + description: 'GitLab GraphQL API reference: Group.dependencyProxySetting' + url: https://docs.gitlab.com/api/graphql/reference/#groupdependencyproxysetting + x-stackQL-graphQL: + id: gitlab.packages.group_dependency_proxy_setting.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { dependencyProxySetting { enabled identity } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + dependencyProxySetting: + type: object + properties: + enabled: + type: boolean + description: Indicates whether the dependency proxy is enabled for the group. + identity: + type: string + description: Identity credential used to authenticate with Docker Hub when pulling images. Can be a username (for password or personal access token (PAT)) or organization name (for organization access token (OAT)). + /api/graphql?resource=group_package_settings&method=get: + post: + operationId: group_package_settings_get + summary: Package settings for the namespace. + description: Package settings for the namespace. Generated from the GitLab GraphQL schema field Group.packageSettings (PackageSettings). + externalDocs: + description: 'GitLab GraphQL API reference: Group.packageSettings' + url: https://docs.gitlab.com/api/graphql/reference/#grouppackagesettings + x-stackQL-graphQL: + id: gitlab.packages.group_package_settings.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { packageSettings { audit_events_enabled: auditEventsEnabled generic_duplicate_exception_regex: genericDuplicateExceptionRegex generic_duplicates_allowed: genericDuplicatesAllowed lock_maven_package_requests_forwarding: lockMavenPackageRequestsForwarding lock_npm_package_requests_forwarding: lockNpmPackageRequestsForwarding lock_pypi_package_requests_forwarding: lockPypiPackageRequestsForwarding maven_duplicate_exception_regex: mavenDuplicateExceptionRegex maven_duplicates_allowed: mavenDuplicatesAllowed maven_package_requests_forwarding: mavenPackageRequestsForwarding maven_package_requests_forwarding_locked: mavenPackageRequestsForwardingLocked npm_package_requests_forwarding: npmPackageRequestsForwarding npm_package_requests_forwarding_locked: npmPackageRequestsForwardingLocked nuget_duplicate_exception_regex: nugetDuplicateExceptionRegex nuget_duplicates_allowed: nugetDuplicatesAllowed nuget_symbol_server_enabled: nugetSymbolServerEnabled pypi_package_requests_forwarding: pypiPackageRequestsForwarding pypi_package_requests_forwarding_locked: pypiPackageRequestsForwardingLocked terraform_module_duplicate_exception_regex: terraformModuleDuplicateExceptionRegex terraform_module_duplicates_allowed: terraformModuleDuplicatesAllowed } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + packageSettings: + type: object + properties: + audit_events_enabled: + type: boolean + description: Indicates whether audit events are created when publishing or deleting a package in the namespace (Premium and Ultimate only). + generic_duplicate_exception_regex: + type: string + description: When generic_duplicates_allowed is false, you can publish duplicate packages with names that match this regex. Otherwise, this setting has no effect. + generic_duplicates_allowed: + type: boolean + description: Indicates whether duplicate generic packages are allowed for the namespace. + lock_maven_package_requests_forwarding: + type: boolean + description: Indicates whether Maven package forwarding is locked for all descendent namespaces. + lock_npm_package_requests_forwarding: + type: boolean + description: Indicates whether npm package forwarding is locked for all descendent namespaces. + lock_pypi_package_requests_forwarding: + type: boolean + description: Indicates whether PyPI package forwarding is locked for all descendent namespaces. + maven_duplicate_exception_regex: + type: string + description: When maven_duplicates_allowed is false, you can publish duplicate packages with names that match this regex. Otherwise, this setting has no effect. + maven_duplicates_allowed: + type: boolean + description: Indicates whether duplicate Maven packages are allowed for the namespace. + maven_package_requests_forwarding: + type: boolean + description: Indicates whether Maven package forwarding is allowed for the namespace. + maven_package_requests_forwarding_locked: + type: boolean + description: Indicates whether Maven package forwarding settings are locked by a parent namespace. + npm_package_requests_forwarding: + type: boolean + description: Indicates whether npm package forwarding is allowed for the namespace. + npm_package_requests_forwarding_locked: + type: boolean + description: Indicates whether npm package forwarding settings are locked by a parent namespace. + nuget_duplicate_exception_regex: + type: string + description: 'When nuget_duplicates_allowed is false, you can publish duplicate packages with names that match this regex. Otherwise, this setting has no effect. ' + nuget_duplicates_allowed: + type: boolean + description: Indicates whether duplicate NuGet packages are allowed for the namespace. + nuget_symbol_server_enabled: + type: boolean + description: Indicates whether the NuGet symbol server is enabled for the namespace. + pypi_package_requests_forwarding: + type: boolean + description: Indicates whether PyPI package forwarding is allowed for the namespace. + pypi_package_requests_forwarding_locked: + type: boolean + description: Indicates whether PyPI package forwarding settings are locked by a parent namespace. + terraform_module_duplicate_exception_regex: + type: string + description: When terraform_module_duplicates_allowed is false, you can publish duplicate packages with names that match this regex. Otherwise, this setting has no effect. + terraform_module_duplicates_allowed: + type: boolean + description: Indicates whether duplicate Terraform packages are allowed for the namespace. + /api/graphql?resource=group_packages&method=list: + post: + operationId: group_packages_list + summary: Packages of the group. This field can only be resolved for one group in any single request. + description: Packages of the group. This field can only be resolved for one group in any single request. Generated from the GitLab GraphQL schema field Group.packages (connection of Package nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.packages' + url: https://docs.gitlab.com/api/graphql/reference/#grouppackages + x-stackQL-graphQL: + id: gitlab.packages.group_packages.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.packages.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.packages.pageInfo.endCursor + terminateOnJsonPath: $.data.group.packages.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { packages(first: 100{{ .cursor }}{{ if .include_versionless }}, includeVersionless: {{ .include_versionless }}{{ end }}{{ if .package_name }}, packageName: "{{ .package_name }}"{{ end }}{{ if .package_type }}, packageType: {{ .package_type }}{{ end }}{{ if .package_version }}, packageVersion: "{{ .package_version }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .status }}, status: {{ .status }}{{ end }}) { nodes { created_at: createdAt id name package_type: packageType protection_rule_exists: protectionRuleExists status status_message: statusMessage updated_at: updatedAt version project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: include_versionless + in: query + required: false + description: Include versionless packages. + schema: + type: boolean + - name: package_name + in: query + required: false + description: Search a package by name. + schema: + type: string + - name: package_type + in: query + required: false + description: Filter a package by type. + schema: + type: string + enum: + - MAVEN + - NPM + - CONAN + - NUGET + - PYPI + - COMPOSER + - GENERIC + - GOLANG + - DEBIAN + - RUBYGEMS + - HELM + - TERRAFORM_MODULE + - RPM + - ML_MODEL + - CARGO + - name: package_version + in: query + required: false + description: |- + Filter a package by version. If used in combination with `include_versionless`, + then no versionless packages are returned. + schema: + type: string + - name: sort + in: query + required: false + description: Sort packages by the criteria. + schema: + type: string + enum: + - PROJECT_PATH_DESC + - PROJECT_PATH_ASC + - CREATED_DESC + - CREATED_ASC + - NAME_DESC + - NAME_ASC + - VERSION_DESC + - VERSION_ASC + - TYPE_DESC + - TYPE_ASC + - name: status + in: query + required: false + description: Filter a package by status. + schema: + type: string + enum: + - DEFAULT + - HIDDEN + - PROCESSING + - ERROR + - PENDING_DESTRUCTION + - DEPRECATED + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + packages: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Date of creation. + id: + type: string + description: ID of the package. + name: + type: string + description: Name of the package. + package_type: + type: string + enum: + - MAVEN + - NPM + - CONAN + - NUGET + - PYPI + - COMPOSER + - GENERIC + - GOLANG + - DEBIAN + - RUBYGEMS + - HELM + - TERRAFORM_MODULE + - RPM + - ML_MODEL + - CARGO + description: Package type. + protection_rule_exists: + type: boolean + description: Whether any matching package protection rule exists for the package. + status: + type: string + enum: + - DEFAULT + - HIDDEN + - PROCESSING + - ERROR + - PENDING_DESTRUCTION + - DEPRECATED + description: Package status. + status_message: + type: string + description: Status message. + updated_at: + type: string + description: Date of most recent update. + version: + type: string + description: Version string. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=package&method=get: + post: + operationId: package_get + summary: Find a package. This field can only be resolved for one query in any single request. Returns `null` if a package has no `default` status. + description: Find a package. This field can only be resolved for one query in any single request. Returns `null` if a package has no `default` status. Generated from the GitLab GraphQL schema field Query.package (PackageDetailsType). + externalDocs: + description: 'GitLab GraphQL API reference: Query.package' + url: https://docs.gitlab.com/api/graphql/reference/#querypackage + x-stackQL-graphQL: + id: gitlab.packages.package.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { package(id: "{{ .id }}") { composer_config_repository_url: composerConfigRepositoryUrl composer_url: composerUrl conan_url: conanUrl created_at: createdAt id last_downloaded_at: lastDownloadedAt maven_url: mavenUrl name npm_url: npmUrl nuget_url: nugetUrl package_type: packageType protection_rule_exists: protectionRuleExists public_package: publicPackage pypi_setup_url: pypiSetupUrl pypi_url: pypiUrl status status_message: statusMessage updated_at: updatedAt version project { id full_path: fullPath name } } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Global ID of the package. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + package: + type: object + properties: + composer_config_repository_url: + type: string + description: Url of the Composer setup endpoint. + composer_url: + type: string + description: Url of the Composer endpoint. + conan_url: + type: string + description: Url of the Conan project endpoint. + created_at: + type: string + description: Date of creation. + id: + type: string + description: ID of the package. + last_downloaded_at: + type: string + description: Last time that a file of the package was downloaded. + maven_url: + type: string + description: Url of the Maven project endpoint. + name: + type: string + description: Name of the package. + npm_url: + type: string + description: Url of the NPM project endpoint. + nuget_url: + type: string + description: Url of the Nuget project endpoint. + package_type: + type: string + enum: + - MAVEN + - NPM + - CONAN + - NUGET + - PYPI + - COMPOSER + - GENERIC + - GOLANG + - DEBIAN + - RUBYGEMS + - HELM + - TERRAFORM_MODULE + - RPM + - ML_MODEL + - CARGO + description: Package type. + protection_rule_exists: + type: boolean + description: Whether any matching package protection rule exists for the package. + public_package: + type: boolean + description: Indicates if there is public access to the package. + pypi_setup_url: + type: string + description: Url of the PyPi project setup endpoint. + pypi_url: + type: string + description: Url of the PyPi project endpoint. + status: + type: string + enum: + - DEFAULT + - HIDDEN + - PROCESSING + - ERROR + - PENDING_DESTRUCTION + - DEPRECATED + description: Package status. + status_message: + type: string + description: Status message. + updated_at: + type: string + description: Date of most recent update. + version: + type: string + description: Version string. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=project_container_protection_repository_rules&method=list: + post: + operationId: project_container_protection_repository_rules_list + summary: Container protection rules for the project. + description: Container protection rules for the project. Generated from the GitLab GraphQL schema field Project.containerProtectionRepositoryRules (connection of ContainerProtectionRepositoryRule nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.containerProtectionRepositoryRules' + url: https://docs.gitlab.com/api/graphql/reference/#projectcontainerprotectionrepositoryrules + x-stackQL-graphQL: + id: gitlab.packages.project_container_protection_repository_rules.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.containerProtectionRepositoryRules.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.containerProtectionRepositoryRules.pageInfo.endCursor + terminateOnJsonPath: $.data.project.containerProtectionRepositoryRules.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { containerProtectionRepositoryRules(first: 100{{ .cursor }}) { nodes { id minimum_access_level_for_push: minimumAccessLevelForPush repository_path_pattern: repositoryPathPattern } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + containerProtectionRepositoryRules: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: ID of the container repository protection rule. + minimum_access_level_for_push: + type: string + enum: + - MAINTAINER + - OWNER + - ADMIN + description: Minimum GitLab access level required to push container images to the container repository. Valid values include `MAINTAINER`, `OWNER`, or `ADMIN`. If the value is `nil`, the default minimum access level is `DEVELOPER`. + repository_path_pattern: + type: string + description: 'Container repository path pattern protected by the protection rule. Must start with the project’s full path. For example: `my-project/*-prod-*`. Wildcard character `*` is allowed anywhere after the project’s full path.' + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_container_protection_tag_rules&method=list: + post: + operationId: project_container_protection_tag_rules_list + summary: Container repository tag protection rules for the project. + description: Container repository tag protection rules for the project. Generated from the GitLab GraphQL schema field Project.containerProtectionTagRules (connection of ContainerProtectionTagRule nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.containerProtectionTagRules' + url: https://docs.gitlab.com/api/graphql/reference/#projectcontainerprotectiontagrules + x-stackQL-graphQL: + id: gitlab.packages.project_container_protection_tag_rules.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.containerProtectionTagRules.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.containerProtectionTagRules.pageInfo.endCursor + terminateOnJsonPath: $.data.project.containerProtectionTagRules.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { containerProtectionTagRules(first: 100{{ .cursor }}) { nodes { id immutable minimum_access_level_for_delete: minimumAccessLevelForDelete minimum_access_level_for_push: minimumAccessLevelForPush tag_name_pattern: tagNamePattern } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + containerProtectionTagRules: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: ID of the container repository tag protection rule. + immutable: + type: boolean + description: Returns true when tag rule is for tag immutability. Otherwise, false. + minimum_access_level_for_delete: + type: string + enum: + - MAINTAINER + - OWNER + - ADMIN + description: 'Minimum GitLab access level required to delete container image tags from the container repository. Valid values include `MAINTAINER`, `OWNER`, or `ADMIN`. If the value is `nil`, no access level can delete tags. ' + minimum_access_level_for_push: + type: string + enum: + - MAINTAINER + - OWNER + - ADMIN + description: 'Minimum GitLab access level required to push container image tags to the container repository. Valid values include `MAINTAINER`, `OWNER`, or `ADMIN`. If the value is `nil`, no access level can push tags. ' + tag_name_pattern: + type: string + description: The pattern that matches container image tags to protect. For example, `v1.*`. Wildcard character `*` allowed. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_container_repositories&method=list: + post: + operationId: project_container_repositories_list + summary: Container repositories of the project. + description: Container repositories of the project. Generated from the GitLab GraphQL schema field Project.containerRepositories (connection of ContainerRepository nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.containerRepositories' + url: https://docs.gitlab.com/api/graphql/reference/#projectcontainerrepositories + x-stackQL-graphQL: + id: gitlab.packages.project_container_repositories.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.containerRepositories.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.containerRepositories.pageInfo.endCursor + terminateOnJsonPath: $.data.project.containerRepositories.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { containerRepositories(first: 100{{ .cursor }}{{ if .name }}, name: "{{ .name }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { created_at: createdAt expiration_policy_cleanup_status: expirationPolicyCleanupStatus expiration_policy_started_at: expirationPolicyStartedAt id last_cleanup_deleted_tags_count: lastCleanupDeletedTagsCount location name path protection_rule_exists: protectionRuleExists status tags_count: tagsCount updated_at: updatedAt project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: name + in: query + required: false + description: Filter the container repositories by their name. + schema: + type: string + - name: sort + in: query + required: false + description: Sort container repositories by the criteria. + schema: + type: string + enum: + - NAME_ASC + - NAME_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + containerRepositories: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp when the container repository was created. + expiration_policy_cleanup_status: + type: string + enum: + - UNSCHEDULED + - SCHEDULED + - UNFINISHED + - ONGOING + description: Tags cleanup status for the container repository. + expiration_policy_started_at: + type: string + description: Timestamp when the cleanup done by the expiration policy was started on the container repository. + id: + type: string + description: ID of the container repository. + last_cleanup_deleted_tags_count: + type: integer + description: Number of deleted tags from the last cleanup. + location: + type: string + description: URL of the container repository. + name: + type: string + description: Name of the container repository. + path: + type: string + description: Path of the container repository. + protection_rule_exists: + type: boolean + description: Whether any matching container protection rule exists for the container repository. + status: + type: string + enum: + - DELETE_SCHEDULED + - DELETE_FAILED + - DELETE_ONGOING + description: Status of the container repository. + tags_count: + type: integer + description: Number of tags associated with the image. + updated_at: + type: string + description: Timestamp when the container repository was updated. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_container_tags_expiration_policy&method=get: + post: + operationId: project_container_tags_expiration_policy_get + summary: Container tags expiration policy of the project. + description: Container tags expiration policy of the project. Generated from the GitLab GraphQL schema field Project.containerTagsExpirationPolicy (ContainerTagsExpirationPolicy). + externalDocs: + description: 'GitLab GraphQL API reference: Project.containerTagsExpirationPolicy' + url: https://docs.gitlab.com/api/graphql/reference/#projectcontainertagsexpirationpolicy + x-stackQL-graphQL: + id: gitlab.packages.project_container_tags_expiration_policy.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { containerTagsExpirationPolicy { cadence created_at: createdAt enabled keep_n: keepN name_regex: nameRegex name_regex_keep: nameRegexKeep next_run_at: nextRunAt older_than: olderThan updated_at: updatedAt } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + containerTagsExpirationPolicy: + type: object + properties: + cadence: + type: string + enum: + - EVERY_DAY + - EVERY_WEEK + - EVERY_TWO_WEEKS + - EVERY_MONTH + - EVERY_THREE_MONTHS + description: Schedule of the container expiration policy. + created_at: + type: string + description: Timestamp of when the container expiration policy was created. + enabled: + type: boolean + description: Indicates whether the container expiration policy is enabled. + keep_n: + type: string + enum: + - ONE_TAG + - FIVE_TAGS + - TEN_TAGS + - TWENTY_FIVE_TAGS + - FIFTY_TAGS + - ONE_HUNDRED_TAGS + description: Number of tags to retain. + name_regex: + type: string + description: Tags with names matching the regex pattern will expire. + name_regex_keep: + type: string + description: Tags with names matching the regex pattern will be preserved. + next_run_at: + type: string + description: Next time that the container expiration policy will get executed. + older_than: + type: string + enum: + - ONE_DAY + - THREE_DAYS + - SEVEN_DAYS + - FOURTEEN_DAYS + - THIRTY_DAYS + - SIXTY_DAYS + - NINETY_DAYS + - ONE_HUNDRED_EIGHTY_DAYS + - THREE_HUNDRED_SIXTY_FIVE_DAYS + - SEVEN_HUNDRED_THIRTY_DAYS + - ONE_THOUSAND_NINETY_FIVE_DAYS + description: Tags older than the given age will expire. + updated_at: + type: string + description: Timestamp of when the container expiration policy was updated. + /api/graphql?resource=project_dependency_proxy_packages_setting&method=get: + post: + operationId: project_dependency_proxy_packages_setting_get + summary: 'Packages Dependency Proxy settings for the project. Requires the packages and dependency proxy to be enabled in the config. Requires the packages feature to be enabled at the project level. ' + description: Packages Dependency Proxy settings for the project. Requires the packages and dependency proxy to be enabled in the config. Requires the packages feature to be enabled at the project level. Generated from the GitLab GraphQL schema field Project.dependencyProxyPackagesSetting (DependencyProxyPackagesSetting). + externalDocs: + description: 'GitLab GraphQL API reference: Project.dependencyProxyPackagesSetting' + url: https://docs.gitlab.com/api/graphql/reference/#projectdependencyproxypackagessetting + x-stackQL-graphQL: + id: gitlab.packages.project_dependency_proxy_packages_setting.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { dependencyProxyPackagesSetting { enabled maven_external_registry_url: mavenExternalRegistryUrl maven_external_registry_username: mavenExternalRegistryUsername } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + dependencyProxyPackagesSetting: + type: object + properties: + enabled: + type: boolean + description: Indicates whether the dependency proxy for packages is enabled for the project. + maven_external_registry_url: + type: string + description: URL for the external Maven packages registry. + maven_external_registry_username: + type: string + description: Username for the external Maven packages registry. + /api/graphql?resource=project_packages_cleanup_policy&method=get: + post: + operationId: project_packages_cleanup_policy_get + summary: Packages cleanup policy for the project. + description: Packages cleanup policy for the project. Generated from the GitLab GraphQL schema field Project.packagesCleanupPolicy (PackagesCleanupPolicy). + externalDocs: + description: 'GitLab GraphQL API reference: Project.packagesCleanupPolicy' + url: https://docs.gitlab.com/api/graphql/reference/#projectpackagescleanuppolicy + x-stackQL-graphQL: + id: gitlab.packages.project_packages_cleanup_policy.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { packagesCleanupPolicy { keep_n_duplicated_package_files: keepNDuplicatedPackageFiles next_run_at: nextRunAt } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + packagesCleanupPolicy: + type: object + properties: + keep_n_duplicated_package_files: + type: string + enum: + - ALL_PACKAGE_FILES + - ONE_PACKAGE_FILE + - TEN_PACKAGE_FILES + - TWENTY_PACKAGE_FILES + - THIRTY_PACKAGE_FILES + - FORTY_PACKAGE_FILES + - FIFTY_PACKAGE_FILES + description: Number of duplicated package files to retain. + next_run_at: + type: string + description: Next time that the packages cleanup policy will be executed. + /api/graphql?resource=project_packages&method=list: + post: + operationId: project_packages_list + summary: Packages of the project. + description: Packages of the project. Generated from the GitLab GraphQL schema field Project.packages (connection of Package nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.packages' + url: https://docs.gitlab.com/api/graphql/reference/#projectpackages + x-stackQL-graphQL: + id: gitlab.packages.project_packages.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.packages.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.packages.pageInfo.endCursor + terminateOnJsonPath: $.data.project.packages.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { packages(first: 100{{ .cursor }}{{ if .include_versionless }}, includeVersionless: {{ .include_versionless }}{{ end }}{{ if .package_name }}, packageName: "{{ .package_name }}"{{ end }}{{ if .package_type }}, packageType: {{ .package_type }}{{ end }}{{ if .package_version }}, packageVersion: "{{ .package_version }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .status }}, status: {{ .status }}{{ end }}) { nodes { created_at: createdAt id name package_type: packageType protection_rule_exists: protectionRuleExists status status_message: statusMessage updated_at: updatedAt version project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: include_versionless + in: query + required: false + description: Include versionless packages. + schema: + type: boolean + - name: package_name + in: query + required: false + description: Search a package by name. + schema: + type: string + - name: package_type + in: query + required: false + description: Filter a package by type. + schema: + type: string + enum: + - MAVEN + - NPM + - CONAN + - NUGET + - PYPI + - COMPOSER + - GENERIC + - GOLANG + - DEBIAN + - RUBYGEMS + - HELM + - TERRAFORM_MODULE + - RPM + - ML_MODEL + - CARGO + - name: package_version + in: query + required: false + description: |- + Filter a package by version. If used in combination with `include_versionless`, + then no versionless packages are returned. + schema: + type: string + - name: sort + in: query + required: false + description: Sort packages by the criteria. + schema: + type: string + enum: + - CREATED_DESC + - CREATED_ASC + - NAME_DESC + - NAME_ASC + - VERSION_DESC + - VERSION_ASC + - TYPE_DESC + - TYPE_ASC + - name: status + in: query + required: false + description: Filter a package by status. + schema: + type: string + enum: + - DEFAULT + - HIDDEN + - PROCESSING + - ERROR + - PENDING_DESTRUCTION + - DEPRECATED + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + packages: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Date of creation. + id: + type: string + description: ID of the package. + name: + type: string + description: Name of the package. + package_type: + type: string + enum: + - MAVEN + - NPM + - CONAN + - NUGET + - PYPI + - COMPOSER + - GENERIC + - GOLANG + - DEBIAN + - RUBYGEMS + - HELM + - TERRAFORM_MODULE + - RPM + - ML_MODEL + - CARGO + description: Package type. + protection_rule_exists: + type: boolean + description: Whether any matching package protection rule exists for the package. + status: + type: string + enum: + - DEFAULT + - HIDDEN + - PROCESSING + - ERROR + - PENDING_DESTRUCTION + - DEPRECATED + description: Package status. + status_message: + type: string + description: Status message. + updated_at: + type: string + description: Date of most recent update. + version: + type: string + description: Version string. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + container_repository: + id: gitlab.packages.container_repository + name: container_repository + title: Container Repository + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=container_repository&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.containerRepository + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/container_repository/methods/get' + insert: [] + update: [] + delete: [] + group_container_repositories: + id: gitlab.packages.group_container_repositories + name: group_container_repositories + title: Group Container Repositories + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_container_repositories&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.containerRepositories.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_container_repositories/methods/list' + insert: [] + update: [] + delete: [] + group_dependency_proxy_blobs: + id: gitlab.packages.group_dependency_proxy_blobs + name: group_dependency_proxy_blobs + title: Group Dependency Proxy Blobs + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_dependency_proxy_blobs&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.dependencyProxyBlobs.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_dependency_proxy_blobs/methods/list' + insert: [] + update: [] + delete: [] + group_dependency_proxy_image_ttl_policy: + id: gitlab.packages.group_dependency_proxy_image_ttl_policy + name: group_dependency_proxy_image_ttl_policy + title: Group Dependency Proxy Image Ttl Policy + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_dependency_proxy_image_ttl_policy&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.dependencyProxyImageTtlPolicy + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_dependency_proxy_image_ttl_policy/methods/get' + insert: [] + update: [] + delete: [] + group_dependency_proxy_manifests: + id: gitlab.packages.group_dependency_proxy_manifests + name: group_dependency_proxy_manifests + title: Group Dependency Proxy Manifests + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_dependency_proxy_manifests&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.dependencyProxyManifests.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_dependency_proxy_manifests/methods/list' + insert: [] + update: [] + delete: [] + group_dependency_proxy_setting: + id: gitlab.packages.group_dependency_proxy_setting + name: group_dependency_proxy_setting + title: Group Dependency Proxy Setting + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_dependency_proxy_setting&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.dependencyProxySetting + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_dependency_proxy_setting/methods/get' + insert: [] + update: [] + delete: [] + group_package_settings: + id: gitlab.packages.group_package_settings + name: group_package_settings + title: Group Package Settings + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_package_settings&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.packageSettings + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_package_settings/methods/get' + insert: [] + update: [] + delete: [] + group_packages: + id: gitlab.packages.group_packages + name: group_packages + title: Group Packages + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_packages&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.packages.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_packages/methods/list' + insert: [] + update: [] + delete: [] + package: + id: gitlab.packages.package + name: package + title: Package + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=package&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.package + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/package/methods/get' + insert: [] + update: [] + delete: [] + project_container_protection_repository_rules: + id: gitlab.packages.project_container_protection_repository_rules + name: project_container_protection_repository_rules + title: Project Container Protection Repository Rules + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_container_protection_repository_rules&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.containerProtectionRepositoryRules.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_container_protection_repository_rules/methods/list' + insert: [] + update: [] + delete: [] + project_container_protection_tag_rules: + id: gitlab.packages.project_container_protection_tag_rules + name: project_container_protection_tag_rules + title: Project Container Protection Tag Rules + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_container_protection_tag_rules&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.containerProtectionTagRules.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_container_protection_tag_rules/methods/list' + insert: [] + update: [] + delete: [] + project_container_repositories: + id: gitlab.packages.project_container_repositories + name: project_container_repositories + title: Project Container Repositories + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_container_repositories&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.containerRepositories.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_container_repositories/methods/list' + insert: [] + update: [] + delete: [] + project_container_tags_expiration_policy: + id: gitlab.packages.project_container_tags_expiration_policy + name: project_container_tags_expiration_policy + title: Project Container Tags Expiration Policy + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_container_tags_expiration_policy&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.containerTagsExpirationPolicy + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_container_tags_expiration_policy/methods/get' + insert: [] + update: [] + delete: [] + project_dependency_proxy_packages_setting: + id: gitlab.packages.project_dependency_proxy_packages_setting + name: project_dependency_proxy_packages_setting + title: Project Dependency Proxy Packages Setting + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_dependency_proxy_packages_setting&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.dependencyProxyPackagesSetting + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_dependency_proxy_packages_setting/methods/get' + insert: [] + update: [] + delete: [] + project_packages_cleanup_policy: + id: gitlab.packages.project_packages_cleanup_policy + name: project_packages_cleanup_policy + title: Project Packages Cleanup Policy + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_packages_cleanup_policy&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.packagesCleanupPolicy + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_packages_cleanup_policy/methods/get' + insert: [] + update: [] + delete: [] + project_packages: + id: gitlab.packages.project_packages + name: project_packages + title: Project Packages + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_packages&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.packages.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_packages/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/projects.yaml b/providers/src/gitlab/v00.00.00000/services/projects.yaml new file mode 100644 index 00000000..ad44dc21 --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/projects.yaml @@ -0,0 +1,7341 @@ +openapi: 3.0.3 +info: + title: projects API + description: 'Projects and project-scoped configuration - project details, forks, topics, labels, milestones, releases, environments, deployments, branch rules, repository and statistics. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=milestone&method=get: + post: + operationId: milestone_get + summary: Find a milestone. + description: Find a milestone. Generated from the GitLab GraphQL schema field Query.milestone (Milestone). + externalDocs: + description: 'GitLab GraphQL API reference: Query.milestone' + url: https://docs.gitlab.com/api/graphql/reference/#querymilestone + x-stackQL-graphQL: + id: gitlab.projects.milestone.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { milestone(id: "{{ .id }}") { created_at: createdAt description due_date: dueDate expired group_milestone: groupMilestone id iid project_milestone: projectMilestone start_date: startDate state subgroup_milestone: subgroupMilestone title upcoming updated_at: updatedAt web_path: webPath group_: group { id full_path: fullPath name } project { id full_path: fullPath name } } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Find a milestone by its ID. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + milestone: + type: object + properties: + created_at: + type: string + description: Timestamp of milestone creation. + description: + type: string + description: Description of the milestone. + due_date: + type: string + description: Timestamp of the milestone due date. + expired: + type: boolean + description: Expired state of the milestone (a milestone is expired when the due date is past the current date). Defaults to `false` when due date has not been set. + group_milestone: + type: boolean + description: Indicates if milestone is at group level. + id: + type: string + description: ID of the milestone. + iid: + type: string + description: Internal ID of the milestone. + project_milestone: + type: boolean + description: Indicates if milestone is at project level. + start_date: + type: string + description: Timestamp of the milestone start date. + state: + type: string + enum: + - active + - closed + description: State of the milestone. + subgroup_milestone: + type: boolean + description: Indicates if milestone is at subgroup level. + title: + type: string + description: Title of the milestone. + upcoming: + type: boolean + description: Upcoming state of the milestone (a milestone is upcoming when the start date is in the future). Defaults to `false` when start date has not been set. + updated_at: + type: string + description: Timestamp of last milestone update. + web_path: + type: string + description: Web path of the milestone. + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=project_agent_configurations&method=list: + post: + operationId: project_agent_configurations_list + summary: Agent configurations defined by the project + description: Agent configurations defined by the project Generated from the GitLab GraphQL schema field Project.agentConfigurations (connection of AgentConfiguration nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.agentConfigurations' + url: https://docs.gitlab.com/api/graphql/reference/#projectagentconfigurations + x-stackQL-graphQL: + id: gitlab.projects.project_agent_configurations.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.agentConfigurations.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.agentConfigurations.pageInfo.endCursor + terminateOnJsonPath: $.data.project.agentConfigurations.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { agentConfigurations(first: 100{{ .cursor }}) { nodes { agent_name: agentName } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + agentConfigurations: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + agent_name: + type: string + description: Name of the agent. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_alert_management_alert_status_counts&method=get: + post: + operationId: project_alert_management_alert_status_counts_get + summary: Counts of alerts by status for the project. + description: Counts of alerts by status for the project. Generated from the GitLab GraphQL schema field Project.alertManagementAlertStatusCounts (AlertManagementAlertStatusCountsType). + externalDocs: + description: 'GitLab GraphQL API reference: Project.alertManagementAlertStatusCounts' + url: https://docs.gitlab.com/api/graphql/reference/#projectalertmanagementalertstatuscounts + x-stackQL-graphQL: + id: gitlab.projects.project_alert_management_alert_status_counts.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { alertManagementAlertStatusCounts{{ if or .assignee_username .search }}({{ if .assignee_username }}, assigneeUsername: "{{ .assignee_username }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}){{ end }} { acknowledged all_: all ignored open resolved triggered } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: assignee_username + in: query + required: false + description: Username of a user assigned to the issue. + schema: + type: string + - name: search + in: query + required: false + description: Search query for title, description, service, or monitoring_tool. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + alertManagementAlertStatusCounts: + type: object + properties: + acknowledged: + type: integer + description: Number of alerts with status ACKNOWLEDGED for the project + all_: + type: integer + description: Total number of alerts for the project. + ignored: + type: integer + description: Number of alerts with status IGNORED for the project + open: + type: integer + description: Number of alerts with status TRIGGERED or ACKNOWLEDGED for the project. + resolved: + type: integer + description: Number of alerts with status RESOLVED for the project + triggered: + type: integer + description: Number of alerts with status TRIGGERED for the project + /api/graphql?resource=project_alert_management_alert&method=get: + post: + operationId: project_alert_management_alert_get + summary: A single Alert Management alert of the project. + description: A single Alert Management alert of the project. Generated from the GitLab GraphQL schema field Project.alertManagementAlert (AlertManagementAlert). + externalDocs: + description: 'GitLab GraphQL API reference: Project.alertManagementAlert' + url: https://docs.gitlab.com/api/graphql/reference/#projectalertmanagementalert + x-stackQL-graphQL: + id: gitlab.projects.project_alert_management_alert.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { alertManagementAlert{{ if or .assignee_username .domain .iid .search .sort }}({{ if .assignee_username }}, assigneeUsername: "{{ .assignee_username }}"{{ end }}{{ if .domain }}, domain: {{ .domain }}{{ end }}{{ if .iid }}, iid: "{{ .iid }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}){{ end }} { created_at: createdAt description details details_url: detailsUrl ended_at: endedAt event_count: eventCount hosts id iid monitoring_tool: monitoringTool name runbook service severity started_at: startedAt status title updated_at: updatedAt web_url: webUrl } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: assignee_username + in: query + required: false + description: Username of a user assigned to the issue. + schema: + type: string + - name: domain + in: query + required: false + description: Filter query for given domain. + schema: + type: string + enum: + - operations + - name: iid + in: query + required: false + description: IID of the alert. For example, "1". + schema: + type: string + - name: search + in: query + required: false + description: Search query for title, description, service, or monitoring_tool. + schema: + type: string + - name: sort + in: query + required: false + description: Sort alerts by the criteria. + schema: + type: string + enum: + - STARTED_AT_ASC + - STARTED_AT_DESC + - ENDED_AT_ASC + - ENDED_AT_DESC + - CREATED_TIME_ASC + - CREATED_TIME_DESC + - UPDATED_TIME_ASC + - UPDATED_TIME_DESC + - EVENT_COUNT_ASC + - EVENT_COUNT_DESC + - SEVERITY_ASC + - SEVERITY_DESC + - STATUS_ASC + - STATUS_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + alertManagementAlert: + type: object + properties: + created_at: + type: string + description: Timestamp the alert was created. + description: + type: string + description: Description of the alert. + details: + type: string + description: Alert details. + details_url: + type: string + description: URL of the alert detail page. + ended_at: + type: string + description: Timestamp the alert ended. + event_count: + type: integer + description: Number of events of the alert. + hosts: + type: array + items: + type: string + description: List of hosts the alert came from. + id: + type: string + description: ID of the alert. + iid: + type: string + description: Internal ID of the alert. + monitoring_tool: + type: string + description: Monitoring tool the alert came from. + name: + type: string + description: Name or title of the object. + runbook: + type: string + description: Runbook for the alert as defined in alert details. + service: + type: string + description: Service the alert came from. + severity: + type: string + enum: + - CRITICAL + - HIGH + - MEDIUM + - LOW + - INFO + - UNKNOWN + description: Severity of the alert. + started_at: + type: string + description: Timestamp the alert was raised. + status: + type: string + enum: + - TRIGGERED + - ACKNOWLEDGED + - RESOLVED + - IGNORED + description: Status of the alert. + title: + type: string + description: Title of the alert. + updated_at: + type: string + description: Timestamp the alert was last updated. + web_url: + type: string + description: URL of the alert. + /api/graphql?resource=project_alert_management_alerts&method=list: + post: + operationId: project_alert_management_alerts_list + summary: Alert Management alerts of the project. + description: Alert Management alerts of the project. Generated from the GitLab GraphQL schema field Project.alertManagementAlerts (connection of AlertManagementAlert nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.alertManagementAlerts' + url: https://docs.gitlab.com/api/graphql/reference/#projectalertmanagementalerts + x-stackQL-graphQL: + id: gitlab.projects.project_alert_management_alerts.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.alertManagementAlerts.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.alertManagementAlerts.pageInfo.endCursor + terminateOnJsonPath: $.data.project.alertManagementAlerts.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { alertManagementAlerts(first: 100{{ .cursor }}{{ if .assignee_username }}, assigneeUsername: "{{ .assignee_username }}"{{ end }}{{ if .domain }}, domain: {{ .domain }}{{ end }}{{ if .iid }}, iid: "{{ .iid }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { created_at: createdAt description details details_url: detailsUrl ended_at: endedAt event_count: eventCount hosts id iid monitoring_tool: monitoringTool name runbook service severity started_at: startedAt status title updated_at: updatedAt web_url: webUrl } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: assignee_username + in: query + required: false + description: Username of a user assigned to the issue. + schema: + type: string + - name: domain + in: query + required: false + description: Filter query for given domain. + schema: + type: string + enum: + - operations + - name: iid + in: query + required: false + description: IID of the alert. For example, "1". + schema: + type: string + - name: search + in: query + required: false + description: Search query for title, description, service, or monitoring_tool. + schema: + type: string + - name: sort + in: query + required: false + description: Sort alerts by the criteria. + schema: + type: string + enum: + - STARTED_AT_ASC + - STARTED_AT_DESC + - ENDED_AT_ASC + - ENDED_AT_DESC + - CREATED_TIME_ASC + - CREATED_TIME_DESC + - UPDATED_TIME_ASC + - UPDATED_TIME_DESC + - EVENT_COUNT_ASC + - EVENT_COUNT_DESC + - SEVERITY_ASC + - SEVERITY_DESC + - STATUS_ASC + - STATUS_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + alertManagementAlerts: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp the alert was created. + description: + type: string + description: Description of the alert. + details: + type: string + description: Alert details. + details_url: + type: string + description: URL of the alert detail page. + ended_at: + type: string + description: Timestamp the alert ended. + event_count: + type: integer + description: Number of events of the alert. + hosts: + type: array + items: + type: string + description: List of hosts the alert came from. + id: + type: string + description: ID of the alert. + iid: + type: string + description: Internal ID of the alert. + monitoring_tool: + type: string + description: Monitoring tool the alert came from. + name: + type: string + description: Name or title of the object. + runbook: + type: string + description: Runbook for the alert as defined in alert details. + service: + type: string + description: Service the alert came from. + severity: + type: string + enum: + - CRITICAL + - HIGH + - MEDIUM + - LOW + - INFO + - UNKNOWN + description: Severity of the alert. + started_at: + type: string + description: Timestamp the alert was raised. + status: + type: string + enum: + - TRIGGERED + - ACKNOWLEDGED + - RESOLVED + - IGNORED + description: Status of the alert. + title: + type: string + description: Title of the alert. + updated_at: + type: string + description: Timestamp the alert was last updated. + web_url: + type: string + description: URL of the alert. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_alert_management_http_integrations&method=list: + post: + operationId: project_alert_management_http_integrations_list + summary: HTTP Integrations which can receive alerts for the project. + description: HTTP Integrations which can receive alerts for the project. Generated from the GitLab GraphQL schema field Project.alertManagementHttpIntegrations (connection of AlertManagementHttpIntegration nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.alertManagementHttpIntegrations' + url: https://docs.gitlab.com/api/graphql/reference/#projectalertmanagementhttpintegrations + x-stackQL-graphQL: + id: gitlab.projects.project_alert_management_http_integrations.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.alertManagementHttpIntegrations.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.alertManagementHttpIntegrations.pageInfo.endCursor + terminateOnJsonPath: $.data.project.alertManagementHttpIntegrations.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { alertManagementHttpIntegrations(first: 100{{ .cursor }}{{ if .id }}, id: "{{ .id }}"{{ end }}) { nodes { active id name payload_example: payloadExample token type url } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: id + in: query + required: false + description: ID of the integration. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + alertManagementHttpIntegrations: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + active: + type: boolean + description: Whether the endpoint is currently accepting alerts. + id: + type: string + description: ID of the integration. + name: + type: string + description: Name of the integration. + payload_example: + type: string + description: Example of an alert payload. + token: + type: string + description: Token used to authenticate alert notification requests. + type: + type: string + enum: + - PROMETHEUS + - HTTP + description: Type of integration. + url: + type: string + description: Endpoint which accepts alert notifications. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_available_deploy_keys&method=list: + post: + operationId: project_available_deploy_keys_list + summary: List of available deploy keys + description: List of available deploy keys Generated from the GitLab GraphQL schema field Project.availableDeployKeys (connection of AccessLevelDeployKey nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.availableDeployKeys' + url: https://docs.gitlab.com/api/graphql/reference/#projectavailabledeploykeys + x-stackQL-graphQL: + id: gitlab.projects.project_available_deploy_keys.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.availableDeployKeys.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.availableDeployKeys.pageInfo.endCursor + terminateOnJsonPath: $.data.project.availableDeployKeys.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { availableDeployKeys(first: 100{{ .cursor }}{{ if .title_query }}, titleQuery: "{{ .title_query }}"{{ end }}) { nodes { expires_at: expiresAt id title user { id username name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: title_query + in: query + required: false + description: Term by which to search deploy key titles. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + availableDeployKeys: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + expires_at: + type: string + description: Expiration date of the deploy key. + id: + type: string + description: ID of the deploy key. + title: + type: string + description: Title of the deploy key. + user: + type: object + description: AccessLevelUser identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_branch_rules&method=list: + post: + operationId: project_branch_rules_list + summary: Branch rules configured for the project. + description: Branch rules configured for the project. Generated from the GitLab GraphQL schema field Project.branchRules (connection of BranchRule nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.branchRules' + url: https://docs.gitlab.com/api/graphql/reference/#projectbranchrules + x-stackQL-graphQL: + id: gitlab.projects.project_branch_rules.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.branchRules.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.branchRules.pageInfo.endCursor + terminateOnJsonPath: $.data.project.branchRules.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { branchRules(first: 100{{ .cursor }}{{ if .build_missing }}, buildMissing: {{ .build_missing }}{{ end }}) { nodes { created_at: createdAt id is_default: isDefault is_protected: isProtected matching_branches_count: matchingBranchesCount name updated_at: updatedAt } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: build_missing + in: query + required: false + description: Return unpersisted custom branch rules. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + branchRules: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of when the branch rule was created. + id: + type: string + description: ID of the branch rule. + is_default: + type: boolean + description: Check if the branch rule protects the project's default branch. + is_protected: + type: boolean + description: Check if the branch rule protects access for the branch. + matching_branches_count: + type: integer + description: Number of existing branches that match the branch rule. + name: + type: string + description: Name of the branch rule target. Includes wildcards. + updated_at: + type: string + description: Timestamp of when the branch rule was last updated. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_cluster_agent&method=get: + post: + operationId: project_cluster_agent_get + summary: Find a single cluster agent by name. + description: Find a single cluster agent by name. Generated from the GitLab GraphQL schema field Project.clusterAgent (ClusterAgent). + externalDocs: + description: 'GitLab GraphQL API reference: Project.clusterAgent' + url: https://docs.gitlab.com/api/graphql/reference/#projectclusteragent + x-stackQL-graphQL: + id: gitlab.projects.project_cluster_agent.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { clusterAgent(name: "{{ .name }}"{{ if .has_remote_development_enabled }}, hasRemoteDevelopmentEnabled: {{ .has_remote_development_enabled }}{{ end }}{{ if .has_vulnerabilities }}, hasVulnerabilities: {{ .has_vulnerabilities }}{{ end }}{{ if .has_workspaces_agent_config }}, hasWorkspacesAgentConfig: {{ .has_workspaces_agent_config }}{{ end }}) { created_at: createdAt id is_receptive: isReceptive name updated_at: updatedAt web_path: webPath project { id full_path: fullPath name } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: name + in: query + required: true + description: Name of the cluster agent. + schema: + type: string + - name: has_remote_development_enabled + in: query + required: false + description: Returns only cluster agents which have been enabled with the remote development feature. + schema: + type: boolean + - name: has_vulnerabilities + in: query + required: false + description: Returns only cluster agents which have vulnerabilities. + schema: + type: boolean + - name: has_workspaces_agent_config + in: query + required: false + description: Returns only cluster agents which have an associated workspaces agent config. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + clusterAgent: + type: object + properties: + created_at: + type: string + description: Timestamp the cluster agent was created. + id: + type: string + description: ID of the cluster agent. + is_receptive: + type: boolean + description: Whether the cluster agent is receptive or not. + name: + type: string + description: Name of the cluster agent. + updated_at: + type: string + description: Timestamp the cluster agent was updated. + web_path: + type: string + description: Web path of the cluster agent. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=project_cluster_agents&method=list: + post: + operationId: project_cluster_agents_list + summary: Cluster agents associated with the project. + description: Cluster agents associated with the project. Generated from the GitLab GraphQL schema field Project.clusterAgents (connection of ClusterAgent nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.clusterAgents' + url: https://docs.gitlab.com/api/graphql/reference/#projectclusteragents + x-stackQL-graphQL: + id: gitlab.projects.project_cluster_agents.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.clusterAgents.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.clusterAgents.pageInfo.endCursor + terminateOnJsonPath: $.data.project.clusterAgents.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { clusterAgents(first: 100{{ .cursor }}{{ if .has_remote_development_enabled }}, hasRemoteDevelopmentEnabled: {{ .has_remote_development_enabled }}{{ end }}{{ if .has_vulnerabilities }}, hasVulnerabilities: {{ .has_vulnerabilities }}{{ end }}{{ if .has_workspaces_agent_config }}, hasWorkspacesAgentConfig: {{ .has_workspaces_agent_config }}{{ end }}) { nodes { created_at: createdAt id is_receptive: isReceptive name updated_at: updatedAt web_path: webPath project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: has_remote_development_enabled + in: query + required: false + description: Returns only cluster agents which have been enabled with the remote development feature. + schema: + type: boolean + - name: has_vulnerabilities + in: query + required: false + description: Returns only cluster agents which have vulnerabilities. + schema: + type: boolean + - name: has_workspaces_agent_config + in: query + required: false + description: Returns only cluster agents which have an associated workspaces agent config. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + clusterAgents: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp the cluster agent was created. + id: + type: string + description: ID of the cluster agent. + is_receptive: + type: boolean + description: Whether the cluster agent is receptive or not. + name: + type: string + description: Name of the cluster agent. + updated_at: + type: string + description: Timestamp the cluster agent was updated. + web_path: + type: string + description: Web path of the cluster agent. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_component_usages&method=list: + post: + operationId: project_component_usages_list + summary: Component(s) used by the project. + description: Component(s) used by the project. Generated from the GitLab GraphQL schema field Project.componentUsages (connection of CiCatalogResourceComponentUsage nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.componentUsages' + url: https://docs.gitlab.com/api/graphql/reference/#projectcomponentusages + x-stackQL-graphQL: + id: gitlab.projects.project_component_usages.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.componentUsages.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.componentUsages.pageInfo.endCursor + terminateOnJsonPath: $.data.project.componentUsages.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { componentUsages(first: 100{{ .cursor }}) { nodes { last_used_date: lastUsedDate name version } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + componentUsages: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + last_used_date: + type: string + description: When the component was last used. + name: + type: string + description: Name of the component. + version: + type: string + description: Version of the component. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_data_transfer&method=get: + post: + operationId: project_data_transfer_get + summary: Data transfer data point for a specific period. This is mocked data under a development feature flag. + description: Data transfer data point for a specific period. This is mocked data under a development feature flag. Generated from the GitLab GraphQL schema field Project.dataTransfer (ProjectDataTransfer). + externalDocs: + description: 'GitLab GraphQL API reference: Project.dataTransfer' + url: https://docs.gitlab.com/api/graphql/reference/#projectdatatransfer + x-stackQL-graphQL: + id: gitlab.projects.project_data_transfer.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { dataTransfer{{ if or .from_ .to_ }}({{ if .from_ }}, from: "{{ .from_ }}"{{ end }}{{ if .to_ }}, to: "{{ .to_ }}"{{ end }}){{ end }} { total_egress: totalEgress } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: from_ + in: query + required: false + description: Retain egress data for one year. Data for the current month will increase dynamically as egress occurs. + schema: + type: string + - name: to_ + in: query + required: false + description: End date for the data. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + dataTransfer: + type: object + properties: + total_egress: + type: string + description: Total egress for that project in that period of time. + /api/graphql?resource=project_deployment&method=get: + post: + operationId: project_deployment_get + summary: Details of the deployment of the project. + description: Details of the deployment of the project. Generated from the GitLab GraphQL schema field Project.deployment (Deployment). + externalDocs: + description: 'GitLab GraphQL API reference: Project.deployment' + url: https://docs.gitlab.com/api/graphql/reference/#projectdeployment + x-stackQL-graphQL: + id: gitlab.projects.project_deployment.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { deployment(iid: "{{ .iid }}") { created_at: createdAt finished_at: finishedAt id iid pending_approval_count: pendingApprovalCount ref ref_path: refPath sha status tag updated_at: updatedAt web_path: webPath } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: iid + in: query + required: true + description: Project-level internal ID of the Deployment. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + deployment: + type: object + properties: + created_at: + type: string + description: When the deployment record was created. + finished_at: + type: string + description: When the deployment finished. + id: + type: string + description: Global ID of the deployment. + iid: + type: string + description: Project-level internal ID of the deployment. + pending_approval_count: + type: integer + description: Number of pending unified approvals on the deployment. + ref: + type: string + description: Git-Ref that the deployment ran on. + ref_path: + type: string + description: Path to the Git-Ref that the deployment ran on. + sha: + type: string + description: Git-SHA that the deployment ran on. + status: + type: string + enum: + - CREATED + - RUNNING + - SUCCESS + - FAILED + - CANCELED + - SKIPPED + - BLOCKED + description: Status of the deployment. + tag: + type: boolean + description: True or false if the deployment ran on a Git-tag. + updated_at: + type: string + description: When the deployment record was updated. + web_path: + type: string + description: Web path to the deployment page. + /api/graphql?resource=project_detailed_import_status&method=get: + post: + operationId: project_detailed_import_status_get + summary: Detailed import status of the project. + description: Detailed import status of the project. Generated from the GitLab GraphQL schema field Project.detailedImportStatus (DetailedImportStatus). + externalDocs: + description: 'GitLab GraphQL API reference: Project.detailedImportStatus' + url: https://docs.gitlab.com/api/graphql/reference/#projectdetailedimportstatus + x-stackQL-graphQL: + id: gitlab.projects.project_detailed_import_status.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { detailedImportStatus { id last_error: lastError last_successful_update_at: lastSuccessfulUpdateAt last_update_at: lastUpdateAt last_update_started_at: lastUpdateStartedAt status url } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + detailedImportStatus: + type: object + properties: + id: + type: string + description: ID of the import state. + last_error: + type: string + description: Last error of the import. + last_successful_update_at: + type: string + description: Time of the last successful update. + last_update_at: + type: string + description: Time of the last update. + last_update_started_at: + type: string + description: Time of the start of the last update. + status: + type: string + description: Current status of the import. + url: + type: string + description: Import url. + /api/graphql?resource=project_environment&method=get: + post: + operationId: project_environment_get + summary: A single environment of the project. + description: A single environment of the project. Generated from the GitLab GraphQL schema field Project.environment (Environment). + externalDocs: + description: 'GitLab GraphQL API reference: Project.environment' + url: https://docs.gitlab.com/api/graphql/reference/#projectenvironment + x-stackQL-graphQL: + id: gitlab.projects.project_environment.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { environment{{ if or .name .search .type }}({{ if .name }}, name: "{{ .name }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .type }}, type: "{{ .type }}"{{ end }}){{ end }} { auto_delete_at: autoDeleteAt auto_stop_at: autoStopAt auto_stop_setting: autoStopSetting created_at: createdAt deployments_display_count: deploymentsDisplayCount description environment_type: environmentType external_url: externalUrl flux_resource_path: fluxResourcePath id kubernetes_namespace: kubernetesNamespace name path slug state tier updated_at: updatedAt } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: name + in: query + required: false + description: Name of the environment. + schema: + type: string + - name: search + in: query + required: false + description: Search query for environment name. + schema: + type: string + - name: type + in: query + required: false + description: Search query for environment type. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + environment: + type: object + properties: + auto_delete_at: + type: string + description: When the environment is going to be deleted automatically. + auto_stop_at: + type: string + description: When the environment is going to be stopped automatically. + auto_stop_setting: + type: string + enum: + - ALWAYS + - WITH_ACTION + description: Auto stop setting of the environment. + created_at: + type: string + description: When the environment was created. + deployments_display_count: + type: string + description: Number of deployments in the environment for display. Returns the precise number up to 999, and "999+" for counts exceeding this limit. + description: + type: string + description: Description of the environment. + environment_type: + type: string + description: Folder name of the environment. + external_url: + type: string + description: External URL of the environment. + flux_resource_path: + type: string + description: Flux resource path of the environment. + id: + type: string + description: ID of the environment. + kubernetes_namespace: + type: string + description: Kubernetes namespace of the environment. + name: + type: string + description: Human-readable name of the environment. + path: + type: string + description: Path to the environment. + slug: + type: string + description: Slug of the environment. + state: + type: string + description: 'State of the environment, for example: available/stopped.' + tier: + type: string + enum: + - PRODUCTION + - STAGING + - TESTING + - DEVELOPMENT + - OTHER + description: Deployment tier of the environment. + updated_at: + type: string + description: When the environment was updated. + /api/graphql?resource=project_environments&method=list: + post: + operationId: project_environments_list + summary: Environments of the project. This field can only be resolved for one project in any single request. + description: Environments of the project. This field can only be resolved for one project in any single request. Generated from the GitLab GraphQL schema field Project.environments (connection of Environment nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.environments' + url: https://docs.gitlab.com/api/graphql/reference/#projectenvironments + x-stackQL-graphQL: + id: gitlab.projects.project_environments.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.environments.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.environments.pageInfo.endCursor + terminateOnJsonPath: $.data.project.environments.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { environments(first: 100{{ .cursor }}{{ if .name }}, name: "{{ .name }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .type }}, type: "{{ .type }}"{{ end }}) { nodes { auto_delete_at: autoDeleteAt auto_stop_at: autoStopAt auto_stop_setting: autoStopSetting created_at: createdAt deployments_display_count: deploymentsDisplayCount description environment_type: environmentType external_url: externalUrl flux_resource_path: fluxResourcePath id kubernetes_namespace: kubernetesNamespace name path slug state tier updated_at: updatedAt } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: name + in: query + required: false + description: Name of the environment. + schema: + type: string + - name: search + in: query + required: false + description: Search query for environment name. + schema: + type: string + - name: type + in: query + required: false + description: Search query for environment type. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + environments: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + auto_delete_at: + type: string + description: When the environment is going to be deleted automatically. + auto_stop_at: + type: string + description: When the environment is going to be stopped automatically. + auto_stop_setting: + type: string + enum: + - ALWAYS + - WITH_ACTION + description: Auto stop setting of the environment. + created_at: + type: string + description: When the environment was created. + deployments_display_count: + type: string + description: Number of deployments in the environment for display. Returns the precise number up to 999, and "999+" for counts exceeding this limit. + description: + type: string + description: Description of the environment. + environment_type: + type: string + description: Folder name of the environment. + external_url: + type: string + description: External URL of the environment. + flux_resource_path: + type: string + description: Flux resource path of the environment. + id: + type: string + description: ID of the environment. + kubernetes_namespace: + type: string + description: Kubernetes namespace of the environment. + name: + type: string + description: Human-readable name of the environment. + path: + type: string + description: Path to the environment. + slug: + type: string + description: Slug of the environment. + state: + type: string + description: 'State of the environment, for example: available/stopped.' + tier: + type: string + enum: + - PRODUCTION + - STAGING + - TESTING + - DEVELOPMENT + - OTHER + description: Deployment tier of the environment. + updated_at: + type: string + description: When the environment was updated. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_fork_targets&method=list: + post: + operationId: project_fork_targets_list + summary: Namespaces in which the current user can fork the project into. + description: Namespaces in which the current user can fork the project into. Generated from the GitLab GraphQL schema field Project.forkTargets (connection of Namespace nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.forkTargets' + url: https://docs.gitlab.com/api/graphql/reference/#projectforktargets + x-stackQL-graphQL: + id: gitlab.projects.project_fork_targets.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.forkTargets.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.forkTargets.pageInfo.endCursor + terminateOnJsonPath: $.data.project.forkTargets.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { forkTargets(first: 100{{ .cursor }}{{ if .search }}, search: "{{ .search }}"{{ end }}) { nodes { actual_repository_size_limit: actualRepositorySizeLimit actual_size_limit: actualSizeLimit additional_purchased_storage_size: additionalPurchasedStorageSize avatar_url: avatarUrl contains_locked_projects: containsLockedProjects cross_project_pipeline_available: crossProjectPipelineAvailable description full_name: fullName full_path: fullPath id lfs_enabled: lfsEnabled name path repository_size_excess_project_count: repositorySizeExcessProjectCount request_access_enabled: requestAccessEnabled shared_runners_setting: sharedRunnersSetting storage_size_limit: storageSizeLimit total_repository_size: totalRepositorySize total_repository_size_excess: totalRepositorySizeExcess visibility web_url: webUrl } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: search + in: query + required: false + description: Search query for path or name. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + forkTargets: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for repositories in the namespace in bytes. This limit only applies to namespaces under Project limit enforcement. + actual_size_limit: + type: number + description: The actual storage size limit (in bytes) based on the enforcement type of either repository or namespace. This limit is agnostic of enforcement type. + additional_purchased_storage_size: + type: number + description: Additional storage purchased for the root namespace in bytes. + avatar_url: + type: string + description: URL to avatar image file of the namespace. + contains_locked_projects: + type: boolean + description: Includes at least one project where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + cross_project_pipeline_available: + type: boolean + description: Indicates if the cross_project_pipeline feature is available for the namespace. + description: + type: string + description: Description of the namespace. + full_name: + type: string + description: Full name of the namespace. + full_path: + type: string + description: Full path of the namespace. + id: + type: string + description: ID of the namespace. + lfs_enabled: + type: boolean + description: Indicates if Large File Storage (LFS) is enabled for namespace. + name: + type: string + description: Name of the namespace. + path: + type: string + description: Path of the namespace. + repository_size_excess_project_count: + type: integer + description: Number of projects in the root namespace where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + request_access_enabled: + type: boolean + description: Indicates if users can request access to namespace. + shared_runners_setting: + type: string + enum: + - DISABLED_AND_UNOVERRIDABLE + - DISABLED_AND_OVERRIDABLE + - ENABLED + description: Shared runners availability for the namespace and its descendants. + storage_size_limit: + type: number + description: The storage limit (in bytes) included with the root namespace plan. This limit only applies to namespaces under namespace limit enforcement. + total_repository_size: + type: number + description: Total repository size of all projects in the root namespace in bytes. + total_repository_size_excess: + type: number + description: Total excess repository size of all projects in the root namespace in bytes. This only applies to namespaces under Project limit enforcement. + visibility: + type: string + description: Visibility of the namespace. + web_url: + type: string + description: URL of the namespace. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_forked_from&method=get: + post: + operationId: project_forked_from_get + summary: Project the project was forked from. + description: Project the project was forked from. Generated from the GitLab GraphQL schema field Project.forkedFrom (Project). + externalDocs: + description: 'GitLab GraphQL API reference: Project.forkedFrom' + url: https://docs.gitlab.com/api/graphql/reference/#projectforkedfrom + x-stackQL-graphQL: + id: gitlab.projects.project_forked_from.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { forkedFrom { actual_repository_size_limit: actualRepositorySizeLimit admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_merge_on_skipped_pipeline: allowMergeOnSkippedPipeline allows_multiple_merge_request_assignees: allowsMultipleMergeRequestAssignees allows_multiple_merge_request_reviewers: allowsMultipleMergeRequestReviewers archived autoclose_referenced_issues: autocloseReferencedIssues avatar_url: avatarUrl ci_config_path_or_default: ciConfigPathOrDefault container_registry_enabled: containerRegistryEnabled container_scanning_for_registry_enabled: containerScanningForRegistryEnabled created_at: createdAt description edit_path: editPath forks_count: forksCount full_path: fullPath has_jira_vulnerability_issue_creation_enabled: hasJiraVulnerabilityIssueCreationEnabled http_url_to_repo: httpUrlToRepo id import_status: importStatus is_forked: isForked issues_enabled: issuesEnabled jira_import_status: jiraImportStatus jobs_enabled: jobsEnabled last_activity_at: lastActivityAt lfs_enabled: lfsEnabled merge_commit_template: mergeCommitTemplate merge_request_title_regex: mergeRequestTitleRegex merge_request_title_regex_description: mergeRequestTitleRegexDescription merge_requests_disable_committers_approval: mergeRequestsDisableCommittersApproval merge_requests_enabled: mergeRequestsEnabled merge_requests_ff_only_enabled: mergeRequestsFfOnlyEnabled name name_with_namespace: nameWithNamespace only_allow_merge_if_all_discussions_are_resolved: onlyAllowMergeIfAllDiscussionsAreResolved only_allow_merge_if_all_status_checks_passed: onlyAllowMergeIfAllStatusChecksPassed only_allow_merge_if_pipeline_succeeds: onlyAllowMergeIfPipelineSucceeds open_issues_count: openIssuesCount open_merge_requests_count: openMergeRequestsCount pages_force_https: pagesForceHttps pages_use_unique_domain: pagesUseUniqueDomain path pre_receive_secret_detection_enabled: preReceiveSecretDetectionEnabled prevent_merge_without_jira_issue_enabled: preventMergeWithoutJiraIssueEnabled printing_merge_request_link_enabled: printingMergeRequestLinkEnabled public_jobs: publicJobs remove_source_branch_after_merge: removeSourceBranchAfterMerge repository_size_excess: repositorySizeExcess request_access_enabled: requestAccessEnabled secret_push_protection_enabled: secretPushProtectionEnabled security_configuration_path: securityConfigurationPath security_dashboard_path: securityDashboardPath service_desk_address: serviceDeskAddress service_desk_enabled: serviceDeskEnabled shared_runners_enabled: sharedRunnersEnabled snippets_enabled: snippetsEnabled squash_commit_template: squashCommitTemplate squash_read_only: squashReadOnly ssh_url_to_repo: sshUrlToRepo star_count: starCount suggestion_commit_message: suggestionCommitMessage topics updated_at: updatedAt visibility web_path: webPath web_url: webUrl wiki_enabled: wikiEnabled namespace { id full_path: fullPath name } group_: group { id full_path: fullPath name } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + forkedFrom: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for the repository in bytes. + admin_edit_path: + type: string + description: Admin path for editing project. Only available to admins. + admin_show_path: + type: string + description: Admin path of the project. Only available to admins. + allow_merge_on_skipped_pipeline: + type: boolean + description: If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. + allows_multiple_merge_request_assignees: + type: boolean + description: Project allows assigning multiple users to a merge request. + allows_multiple_merge_request_reviewers: + type: boolean + description: Project allows assigning multiple reviewers to a merge request. + archived: + type: boolean + description: Indicates if the project or any ancestor is archived. + autoclose_referenced_issues: + type: boolean + description: Indicates if issues referenced by merge requests and commits within the default branch are closed automatically. + avatar_url: + type: string + description: Avatar URL of the project. + ci_config_path_or_default: + type: string + description: Path of the CI configuration file. + container_registry_enabled: + type: boolean + description: Indicates if Container registry is enabled for the current user + container_scanning_for_registry_enabled: + type: boolean + description: Indicates whether container scanning for registry is enabled or not for the project. Returns `null` if unauthorized. + created_at: + type: string + description: Timestamp of the project creation. + description: + type: string + description: Short description of the project. + edit_path: + type: string + description: Path for editing project. + forks_count: + type: integer + description: Number of times the project has been forked. + full_path: + type: string + description: Full path of the project. + has_jira_vulnerability_issue_creation_enabled: + type: boolean + description: Indicates whether Jira issue creation from vulnerabilities is enabled. + http_url_to_repo: + type: string + description: URL to connect to the project via HTTPS. + id: + type: string + description: ID of the project. + import_status: + type: string + description: Status of import background job of the project. + is_forked: + type: boolean + description: Project is forked. + issues_enabled: + type: boolean + description: Indicates if Issues are enabled for the current user + jira_import_status: + type: string + description: Status of Jira import background job of the project. + jobs_enabled: + type: boolean + description: Indicates if CI/CD pipeline jobs are enabled for the current user. + last_activity_at: + type: string + description: Timestamp of the project last activity. + lfs_enabled: + type: boolean + description: Indicates if the project has Large File Storage (LFS) enabled. + merge_commit_template: + type: string + description: Template used to create merge commit message in merge requests. + merge_request_title_regex: + type: string + description: Regex used to validate the title of merge requests. + merge_request_title_regex_description: + type: string + description: Description of the regex used to validate the title of merge requests. + merge_requests_disable_committers_approval: + type: boolean + description: Indicates that committers of the given merge request cannot approve. + merge_requests_enabled: + type: boolean + description: Indicates if Merge requests are enabled for the current user + merge_requests_ff_only_enabled: + type: boolean + description: Indicates if no merge commits should be created and all merges should instead be fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded. + name: + type: string + description: Name of the project without the namespace. + name_with_namespace: + type: string + description: Name of the project including the namespace. + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Indicates if merge requests of the project can only be merged when all the discussions are resolved. + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Indicates that merges of merge requests should be blocked unless all status checks have passed. + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Indicates if merge requests of the project can only be merged with successful jobs. + open_issues_count: + type: integer + description: Number of open issues for the project. + open_merge_requests_count: + type: integer + description: Number of open merge requests for the project. + pages_force_https: + type: boolean + description: Project's Pages site redirects unsecured connections to HTTPS. + pages_use_unique_domain: + type: boolean + description: Project's Pages site uses a unique subdomain. + path: + type: string + description: Path of the project. + pre_receive_secret_detection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + prevent_merge_without_jira_issue_enabled: + type: boolean + description: Indicates if an associated issue from Jira is required. + printing_merge_request_link_enabled: + type: boolean + description: Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line. + public_jobs: + type: boolean + description: Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts. + remove_source_branch_after_merge: + type: boolean + description: Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project. + repository_size_excess: + type: number + description: Size of repository that exceeds the limit in bytes. + request_access_enabled: + type: boolean + description: Indicates if users can request member access to the project. + secret_push_protection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + security_configuration_path: + type: string + description: Path to project's security configuration. + security_dashboard_path: + type: string + description: Path to project's security dashboard. + service_desk_address: + type: string + description: E-mail address of the Service Desk. + service_desk_enabled: + type: boolean + description: Indicates if the project has Service Desk enabled. + shared_runners_enabled: + type: boolean + description: Indicates if shared runners are enabled for the project. + snippets_enabled: + type: boolean + description: Indicates if Snippets are enabled for the current user + squash_commit_template: + type: string + description: Template used to create squash commit message in merge requests. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + ssh_url_to_repo: + type: string + description: URL to connect to the project via SSH. + star_count: + type: integer + description: Number of times the project has been starred. + suggestion_commit_message: + type: string + description: Commit message used to apply merge request suggestions. + topics: + type: array + items: + type: string + description: List of project topics. + updated_at: + type: string + description: Timestamp of when the project was last updated. + visibility: + type: string + description: Visibility of the project. + web_path: + type: string + description: Web path of the project. + web_url: + type: string + description: Web URL of the project. + wiki_enabled: + type: boolean + description: Indicates if Wikis are enabled for the current user + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=project_forking_access_level&method=get: + post: + operationId: project_forking_access_level_get + summary: Access level required for forking access. + description: Access level required for forking access. Generated from the GitLab GraphQL schema field Project.forkingAccessLevel (ProjectFeatureAccess). + externalDocs: + description: 'GitLab GraphQL API reference: Project.forkingAccessLevel' + url: https://docs.gitlab.com/api/graphql/reference/#projectforkingaccesslevel + x-stackQL-graphQL: + id: gitlab.projects.project_forking_access_level.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { forkingAccessLevel { integer_value: integerValue string_value: stringValue } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + forkingAccessLevel: + type: object + properties: + integer_value: + type: integer + description: Integer representation of access level. + string_value: + type: string + enum: + - DISABLED + - PRIVATE + - ENABLED + description: String representation of access level. + /api/graphql?resource=project_group&method=get: + post: + operationId: project_group_get + summary: Group of the project. + description: Group of the project. Generated from the GitLab GraphQL schema field Project.group (Group). + externalDocs: + description: 'GitLab GraphQL API reference: Project.group' + url: https://docs.gitlab.com/api/graphql/reference/#projectgroup + x-stackQL-graphQL: + id: gitlab.projects.project_group.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { group { actual_repository_size_limit: actualRepositorySizeLimit actual_size_limit: actualSizeLimit additional_purchased_storage_size: additionalPurchasedStorageSize admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_stale_runner_pruning: allowStaleRunnerPruning archived auto_devops_enabled: autoDevopsEnabled avatar_url: avatarUrl billable_members_count: billableMembersCount contains_locked_projects: containsLockedProjects created_at: createdAt cross_project_pipeline_available: crossProjectPipelineAvailable dependency_proxy_blob_count: dependencyProxyBlobCount dependency_proxy_image_count: dependencyProxyImageCount dependency_proxy_image_prefix: dependencyProxyImagePrefix dependency_proxy_total_size: dependencyProxyTotalSize dependency_proxy_total_size_bytes: dependencyProxyTotalSizeBytes descendant_groups_count: descendantGroupsCount description edit_path: editPath emails_disabled: emailsDisabled emails_enabled: emailsEnabled enforce_free_user_cap: enforceFreeUserCap full_name: fullName full_path: fullPath group_members_count: groupMembersCount id is_linked_to_subscription: isLinkedToSubscription is_self_archived: isSelfArchived lfs_enabled: lfsEnabled lock_math_rendering_limits_enabled: lockMathRenderingLimitsEnabled math_rendering_limits_enabled: mathRenderingLimitsEnabled mentions_disabled: mentionsDisabled name path project_creation_level: projectCreationLevel projects_count: projectsCount repository_size_excess_project_count: repositorySizeExcessProjectCount request_access_enabled: requestAccessEnabled require_two_factor_authentication: requireTwoFactorAuthentication share_with_group_lock: shareWithGroupLock shared_runners_setting: sharedRunnersSetting storage_size_limit: storageSizeLimit subgroup_creation_level: subgroupCreationLevel total_repository_size: totalRepositorySize total_repository_size_excess: totalRepositorySizeExcess two_factor_grace_period: twoFactorGracePeriod updated_at: updatedAt visibility web_path: webPath web_url: webUrl } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + group: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for repositories in the namespace in bytes. This limit only applies to namespaces under Project limit enforcement. + actual_size_limit: + type: number + description: The actual storage size limit (in bytes) based on the enforcement type of either repository or namespace. This limit is agnostic of enforcement type. + additional_purchased_storage_size: + type: number + description: Additional storage purchased for the root namespace in bytes. + admin_edit_path: + type: string + description: Admin path for editing group. Only available to admins. + admin_show_path: + type: string + description: Admin path of the group. Only available to admins. + allow_stale_runner_pruning: + type: boolean + description: Indicates whether to regularly prune stale group runners. Defaults to false. + archived: + type: boolean + description: Indicates if the group or any ancestor is archived. + auto_devops_enabled: + type: boolean + description: Indicates whether Auto DevOps is enabled for all projects within the group. + avatar_url: + type: string + description: Avatar URL of the group. + billable_members_count: + type: integer + description: Number of billable users in the group. + contains_locked_projects: + type: boolean + description: Includes at least one project where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + created_at: + type: string + description: Timestamp of the group creation. + cross_project_pipeline_available: + type: boolean + description: Indicates if the cross_project_pipeline feature is available for the namespace. + dependency_proxy_blob_count: + type: integer + description: Number of dependency proxy blobs cached in the group. + dependency_proxy_image_count: + type: integer + description: Number of dependency proxy images cached in the group. + dependency_proxy_image_prefix: + type: string + description: Prefix for pulling images when using the dependency proxy. + dependency_proxy_total_size: + type: string + description: Total size of the dependency proxy cached images. + dependency_proxy_total_size_bytes: + type: string + description: Total size of the dependency proxy cached images in bytes, encoded as a string. + descendant_groups_count: + type: integer + description: Count of direct descendant groups of the group. + description: + type: string + description: Description of the namespace. + edit_path: + type: string + description: Path for editing group. + emails_disabled: + type: boolean + description: Indicates if a group has email notifications disabled. + emails_enabled: + type: boolean + description: Indicates if a group has email notifications enabled. + enforce_free_user_cap: + type: boolean + description: Indicates whether the group has limited users for a free plan. + full_name: + type: string + description: Full name of the group. + full_path: + type: string + description: Full path of the group. + group_members_count: + type: integer + description: Count of direct members of the group. + id: + type: string + description: ID of the group. + is_linked_to_subscription: + type: boolean + description: Indicates if group is linked to a subscription. + is_self_archived: + type: boolean + description: Indicates if the group is archived. + lfs_enabled: + type: boolean + description: Indicates if Large File Storage (LFS) is enabled for namespace. + lock_math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are locked for all descendant groups. + math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are used for the group. + mentions_disabled: + type: boolean + description: Indicates if a group is disabled from getting mentioned. + name: + type: string + description: Name of the group. + path: + type: string + description: Path of the namespace. + project_creation_level: + type: string + description: Permission level required to create projects in the group. + projects_count: + type: integer + description: Count of direct projects in the group. + repository_size_excess_project_count: + type: integer + description: Number of projects in the root namespace where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + request_access_enabled: + type: boolean + description: Indicates if users can request access to namespace. + require_two_factor_authentication: + type: boolean + description: Indicates if all users in the group are required to set up two-factor authentication. + share_with_group_lock: + type: boolean + description: Indicates if sharing a project with another group within the group is prevented. + shared_runners_setting: + type: string + enum: + - DISABLED_AND_UNOVERRIDABLE + - DISABLED_AND_OVERRIDABLE + - ENABLED + description: Shared runners availability for the namespace and its descendants. + storage_size_limit: + type: number + description: The storage limit (in bytes) included with the root namespace plan. This limit only applies to namespaces under namespace limit enforcement. + subgroup_creation_level: + type: string + description: Permission level required to create subgroups within the group. + total_repository_size: + type: number + description: Total repository size of all projects in the root namespace in bytes. + total_repository_size_excess: + type: number + description: Total excess repository size of all projects in the root namespace in bytes. This only applies to namespaces under Project limit enforcement. + two_factor_grace_period: + type: integer + description: Time before two-factor authentication is enforced. + updated_at: + type: string + description: Timestamp of when the group was last updated. + visibility: + type: string + description: Visibility of the namespace. + web_path: + type: string + description: Web path of the group. + web_url: + type: string + description: Web URL of the group. + /api/graphql?resource=project_incident_management_escalation_policies&method=list: + post: + operationId: project_incident_management_escalation_policies_list + summary: Incident Management escalation policies of the project. + description: Incident Management escalation policies of the project. Generated from the GitLab GraphQL schema field Project.incidentManagementEscalationPolicies (connection of EscalationPolicyType nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.incidentManagementEscalationPolicies' + url: https://docs.gitlab.com/api/graphql/reference/#projectincidentmanagementescalationpolicies + x-stackQL-graphQL: + id: gitlab.projects.project_incident_management_escalation_policies.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.incidentManagementEscalationPolicies.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.incidentManagementEscalationPolicies.pageInfo.endCursor + terminateOnJsonPath: $.data.project.incidentManagementEscalationPolicies.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { incidentManagementEscalationPolicies(first: 100{{ .cursor }}{{ if .name }}, name: "{{ .name }}"{{ end }}) { nodes { description id name } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: name + in: query + required: false + description: Fuzzy search by escalation policy name. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + incidentManagementEscalationPolicies: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the escalation policy. + id: + type: string + description: ID of the escalation policy. + name: + type: string + description: Name of the escalation policy. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_incident_management_escalation_policy&method=get: + post: + operationId: project_incident_management_escalation_policy_get + summary: Incident Management escalation policy of the project. + description: Incident Management escalation policy of the project. Generated from the GitLab GraphQL schema field Project.incidentManagementEscalationPolicy (EscalationPolicyType). + externalDocs: + description: 'GitLab GraphQL API reference: Project.incidentManagementEscalationPolicy' + url: https://docs.gitlab.com/api/graphql/reference/#projectincidentmanagementescalationpolicy + x-stackQL-graphQL: + id: gitlab.projects.project_incident_management_escalation_policy.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { incidentManagementEscalationPolicy(id: "{{ .id }}"{{ if .name }}, name: "{{ .name }}"{{ end }}) { description id name } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: id + in: query + required: true + description: ID of the escalation policy. + schema: + type: string + - name: name + in: query + required: false + description: Fuzzy search by escalation policy name. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + incidentManagementEscalationPolicy: + type: object + properties: + description: + type: string + description: Description of the escalation policy. + id: + type: string + description: ID of the escalation policy. + name: + type: string + description: Name of the escalation policy. + /api/graphql?resource=project_incident_management_oncall_schedules&method=list: + post: + operationId: project_incident_management_oncall_schedules_list + summary: Incident Management On-call schedules of the project. + description: Incident Management On-call schedules of the project. Generated from the GitLab GraphQL schema field Project.incidentManagementOncallSchedules (connection of IncidentManagementOncallSchedule nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.incidentManagementOncallSchedules' + url: https://docs.gitlab.com/api/graphql/reference/#projectincidentmanagementoncallschedules + x-stackQL-graphQL: + id: gitlab.projects.project_incident_management_oncall_schedules.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.incidentManagementOncallSchedules.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.incidentManagementOncallSchedules.pageInfo.endCursor + terminateOnJsonPath: $.data.project.incidentManagementOncallSchedules.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { incidentManagementOncallSchedules(first: 100{{ .cursor }}) { nodes { description iid name timezone } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + incidentManagementOncallSchedules: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the on-call schedule. + iid: + type: string + description: Internal ID of the on-call schedule. + name: + type: string + description: Name of the on-call schedule. + timezone: + type: string + description: Time zone of the on-call schedule. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_incident_management_timeline_event&method=get: + post: + operationId: project_incident_management_timeline_event_get + summary: Incident Management Timeline event associated with the incident. + description: Incident Management Timeline event associated with the incident. Generated from the GitLab GraphQL schema field Project.incidentManagementTimelineEvent (TimelineEventType). + externalDocs: + description: 'GitLab GraphQL API reference: Project.incidentManagementTimelineEvent' + url: https://docs.gitlab.com/api/graphql/reference/#projectincidentmanagementtimelineevent + x-stackQL-graphQL: + id: gitlab.projects.project_incident_management_timeline_event.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { incidentManagementTimelineEvent(id: "{{ .id }}", incidentId: "{{ .incident_id }}") { action created_at: createdAt editable id note occurred_at: occurredAt updated_at: updatedAt author { id username name } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: id + in: query + required: true + description: ID of the timeline event. + schema: + type: string + - name: incident_id + in: query + required: true + description: ID of the incident. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + incidentManagementTimelineEvent: + type: object + properties: + action: + type: string + description: Indicates the timeline event icon. + created_at: + type: string + description: Timestamp when the event created. + editable: + type: boolean + description: Indicates the timeline event is editable. + id: + type: string + description: ID of the timeline event. + note: + type: string + description: Text note of the timeline event. + occurred_at: + type: string + description: Timestamp when the event occurred. + updated_at: + type: string + description: Timestamp when the event updated. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + /api/graphql?resource=project_incident_management_timeline_events&method=list: + post: + operationId: project_incident_management_timeline_events_list + summary: Incident Management Timeline events associated with the incident. + description: Incident Management Timeline events associated with the incident. Generated from the GitLab GraphQL schema field Project.incidentManagementTimelineEvents (connection of TimelineEventType nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.incidentManagementTimelineEvents' + url: https://docs.gitlab.com/api/graphql/reference/#projectincidentmanagementtimelineevents + x-stackQL-graphQL: + id: gitlab.projects.project_incident_management_timeline_events.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.incidentManagementTimelineEvents.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.incidentManagementTimelineEvents.pageInfo.endCursor + terminateOnJsonPath: $.data.project.incidentManagementTimelineEvents.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { incidentManagementTimelineEvents(first: 100{{ .cursor }}, incidentId: "{{ .incident_id }}") { nodes { action created_at: createdAt editable id note occurred_at: occurredAt updated_at: updatedAt author { id username name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: incident_id + in: query + required: true + description: ID of the incident. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + incidentManagementTimelineEvents: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + action: + type: string + description: Indicates the timeline event icon. + created_at: + type: string + description: Timestamp when the event created. + editable: + type: boolean + description: Indicates the timeline event is editable. + id: + type: string + description: ID of the timeline event. + note: + type: string + description: Text note of the timeline event. + occurred_at: + type: string + description: Timestamp when the event occurred. + updated_at: + type: string + description: Timestamp when the event updated. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_iteration_cadences&method=list: + post: + operationId: project_iteration_cadences_list + summary: Find iteration cadences. + description: Find iteration cadences. Generated from the GitLab GraphQL schema field Project.iterationCadences (connection of IterationCadence nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.iterationCadences' + url: https://docs.gitlab.com/api/graphql/reference/#projectiterationcadences + x-stackQL-graphQL: + id: gitlab.projects.project_iteration_cadences.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.iterationCadences.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.iterationCadences.pageInfo.endCursor + terminateOnJsonPath: $.data.project.iterationCadences.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { iterationCadences(first: 100{{ .cursor }}{{ if .active }}, active: {{ .active }}{{ end }}{{ if .automatic }}, automatic: {{ .automatic }}{{ end }}{{ if .duration_in_weeks }}, durationInWeeks: {{ .duration_in_weeks }}{{ end }}{{ if .id }}, id: "{{ .id }}"{{ end }}{{ if .include_ancestor_groups }}, includeAncestorGroups: {{ .include_ancestor_groups }}{{ end }}{{ if .title }}, title: "{{ .title }}"{{ end }}) { nodes { active automatic description duration_in_weeks: durationInWeeks id iterations_in_advance: iterationsInAdvance roll_over: rollOver start_date: startDate title } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: active + in: query + required: false + description: Whether the iteration cadence is active. + schema: + type: boolean + - name: automatic + in: query + required: false + description: Whether the iteration cadence should automatically generate upcoming iterations. + schema: + type: boolean + - name: duration_in_weeks + in: query + required: false + description: Duration in weeks of the iterations within the cadence. + schema: + type: integer + - name: id + in: query + required: false + description: Global ID of the iteration cadence to look up. + schema: + type: string + - name: include_ancestor_groups + in: query + required: false + description: Whether to include ancestor groups to search iterations cadences in. + schema: + type: boolean + - name: title + in: query + required: false + description: Fuzzy search by title. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + iterationCadences: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + active: + type: boolean + description: Whether the iteration cadence is active. + automatic: + type: boolean + description: Whether the iteration cadence should automatically generate upcoming iterations. + description: + type: string + description: Description of the iteration cadence. Maximum length is 5000 characters. + duration_in_weeks: + type: integer + description: Duration in weeks of the iterations within the cadence. + id: + type: string + description: Global ID of the iteration cadence. + iterations_in_advance: + type: integer + description: Number of future iterations to schedule in addition to the current one. + roll_over: + type: boolean + description: Whether the iteration cadence should roll over issues to the next iteration or not. + start_date: + type: string + description: Timestamp of the automation start date. + title: + type: string + description: Title of the iteration cadence. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_iterations&method=list: + post: + operationId: project_iterations_list + summary: Find iterations. + description: Find iterations. Generated from the GitLab GraphQL schema field Project.iterations (connection of Iteration nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.iterations' + url: https://docs.gitlab.com/api/graphql/reference/#projectiterations + x-stackQL-graphQL: + id: gitlab.projects.project_iterations.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.iterations.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.iterations.pageInfo.endCursor + terminateOnJsonPath: $.data.project.iterations.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { iterations(first: 100{{ .cursor }}{{ if .id }}, id: "{{ .id }}"{{ end }}{{ if .iid }}, iid: "{{ .iid }}"{{ end }}{{ if .include_ancestors }}, includeAncestors: {{ .include_ancestors }}{{ end }}{{ if .include_descendants }}, includeDescendants: {{ .include_descendants }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}) { nodes { created_at: createdAt description due_date: dueDate id iid scoped_path: scopedPath scoped_url: scopedUrl sequence start_date: startDate state title updated_at: updatedAt web_path: webPath web_url: webUrl group_: group { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: id + in: query + required: false + description: Global ID of the Iteration to look up. + schema: + type: string + - name: iid + in: query + required: false + description: Internal ID of the Iteration to look up. + schema: + type: string + - name: include_ancestors + in: query + required: false + description: Whether to include ancestor iterations. Defaults to true. + schema: + type: boolean + - name: include_descendants + in: query + required: false + description: Whether to include descendant iterations. + schema: + type: boolean + - name: search + in: query + required: false + description: Query used for fuzzy-searching in the fields selected in the argument `in`. Returns all iterations if empty. + schema: + type: string + - name: sort + in: query + required: false + description: List iterations by sort order. If unspecified, an arbitrary order (subject to change) is used. + schema: + type: string + enum: + - CADENCE_AND_DUE_DATE_ASC + - CADENCE_AND_DUE_DATE_DESC + - name: state + in: query + required: false + description: Filter iterations by state. + schema: + type: string + enum: + - upcoming + - current + - opened + - closed + - all + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + iterations: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of iteration creation. + description: + type: string + description: Description of the iteration. + due_date: + type: string + description: Timestamp of the iteration due date. + id: + type: string + description: ID of the iteration. + iid: + type: string + description: Internal ID of the iteration. + scoped_path: + type: string + description: Web path of the iteration, scoped to the query parent. Only valid for Project parents. Returns null in other contexts. + scoped_url: + type: string + description: Web URL of the iteration, scoped to the query parent. Only valid for Project parents. Returns null in other contexts. + sequence: + type: integer + description: Sequence number for the iteration when you sort the containing cadence's iterations by the start and end date. The earliest starting and ending iteration is assigned 1. + start_date: + type: string + description: Timestamp of the iteration start date. + state: + type: string + enum: + - upcoming + - current + - opened + - closed + - all + description: State of the iteration. + title: + type: string + description: Title of the iteration. + updated_at: + type: string + description: Timestamp of last iteration update. + web_path: + type: string + description: Web path of the iteration. + web_url: + type: string + description: Web URL of the iteration. + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_jira_imports&method=list: + post: + operationId: project_jira_imports_list + summary: Jira imports into the project. + description: Jira imports into the project. Generated from the GitLab GraphQL schema field Project.jiraImports (connection of JiraImport nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.jiraImports' + url: https://docs.gitlab.com/api/graphql/reference/#projectjiraimports + x-stackQL-graphQL: + id: gitlab.projects.project_jira_imports.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.jiraImports.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.jiraImports.pageInfo.endCursor + terminateOnJsonPath: $.data.project.jiraImports.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { jiraImports(first: 100{{ .cursor }}) { nodes { created_at: createdAt failed_to_import_count: failedToImportCount imported_issues_count: importedIssuesCount jira_project_key: jiraProjectKey scheduled_at: scheduledAt total_issue_count: totalIssueCount } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + jiraImports: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of when the Jira import was created. + failed_to_import_count: + type: integer + description: Count of issues that failed to import. + imported_issues_count: + type: integer + description: Count of issues that were successfully imported. + jira_project_key: + type: string + description: Project key for the imported Jira project. + scheduled_at: + type: string + description: Timestamp of when the Jira import was scheduled. + total_issue_count: + type: integer + description: Total count of issues that were attempted to import. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_label&method=get: + post: + operationId: project_label_get + summary: Label available on the project. + description: Label available on the project. Generated from the GitLab GraphQL schema field Project.label (Label). + externalDocs: + description: 'GitLab GraphQL API reference: Project.label' + url: https://docs.gitlab.com/api/graphql/reference/#projectlabel + x-stackQL-graphQL: + id: gitlab.projects.project_label.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { label(title: "{{ .title }}") { archived color created_at: createdAt description id lock_on_merge: lockOnMerge text_color: textColor title updated_at: updatedAt } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: title + in: query + required: true + description: Title of the label. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + label: + type: object + properties: + archived: + type: boolean + description: Indicates the label is archived. + color: + type: string + description: Background color of the label. + created_at: + type: string + description: When the label was created. + description: + type: string + description: Description of the label (Markdown rendered as HTML for caching). + id: + type: string + description: Global ID of the label. + lock_on_merge: + type: boolean + description: Indicates this label is locked for merge requests that have been merged. + text_color: + type: string + description: Text color of the label. + title: + type: string + description: Content of the label. + updated_at: + type: string + description: When the label was last updated. + /api/graphql?resource=project_labels&method=list: + post: + operationId: project_labels_list + summary: Labels available on this project. + description: Labels available on this project. Generated from the GitLab GraphQL schema field Project.labels (connection of Label nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.labels' + url: https://docs.gitlab.com/api/graphql/reference/#projectlabels + x-stackQL-graphQL: + id: gitlab.projects.project_labels.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.labels.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.labels.pageInfo.endCursor + terminateOnJsonPath: $.data.project.labels.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { labels(first: 100{{ .cursor }}{{ if .archived }}, archived: {{ .archived }}{{ end }}{{ if .include_ancestor_groups }}, includeAncestorGroups: {{ .include_ancestor_groups }}{{ end }}{{ if .search_term }}, searchTerm: "{{ .search_term }}"{{ end }}{{ if .title }}, title: "{{ .title }}"{{ end }}) { nodes { archived color created_at: createdAt description id lock_on_merge: lockOnMerge text_color: textColor title updated_at: updatedAt } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: archived + in: query + required: false + description: Filters archived labels. Defaults to false. + schema: + type: boolean + - name: include_ancestor_groups + in: query + required: false + description: Include labels from ancestor groups. + schema: + type: boolean + - name: search_term + in: query + required: false + description: Search term to find labels with. + schema: + type: string + - name: title + in: query + required: false + description: Exact match on title. Cannot be used with `searchTerm`. `searchIn` will be ignored if `title` argument is provided. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + labels: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + archived: + type: boolean + description: Indicates the label is archived. + color: + type: string + description: Background color of the label. + created_at: + type: string + description: When the label was created. + description: + type: string + description: Description of the label (Markdown rendered as HTML for caching). + id: + type: string + description: Global ID of the label. + lock_on_merge: + type: boolean + description: Indicates this label is locked for merge requests that have been merged. + text_color: + type: string + description: Text color of the label. + title: + type: string + description: Content of the label. + updated_at: + type: string + description: When the label was last updated. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_max_access_level&method=get: + post: + operationId: project_max_access_level_get + summary: Maximum access level of the current user in the project. + description: Maximum access level of the current user in the project. Generated from the GitLab GraphQL schema field Project.maxAccessLevel (AccessLevel). + externalDocs: + description: 'GitLab GraphQL API reference: Project.maxAccessLevel' + url: https://docs.gitlab.com/api/graphql/reference/#projectmaxaccesslevel + x-stackQL-graphQL: + id: gitlab.projects.project_max_access_level.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { maxAccessLevel { human_access: humanAccess integer_value: integerValue string_value: stringValue } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + maxAccessLevel: + type: object + properties: + human_access: + type: string + description: Human-readable display name for the access level. + integer_value: + type: integer + description: Integer number of the access level. + string_value: + type: string + enum: + - NO_ACCESS + - MINIMAL_ACCESS + - GUEST + - PLANNER + - REPORTER + - SECURITY_MANAGER + - DEVELOPER + - MAINTAINER + - OWNER + - ADMIN + description: Enum string of the the access level. + /api/graphql?resource=project_milestones&method=list: + post: + operationId: project_milestones_list + summary: Milestones of the project. + description: Milestones of the project. Generated from the GitLab GraphQL schema field Project.milestones (connection of Milestone nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.milestones' + url: https://docs.gitlab.com/api/graphql/reference/#projectmilestones + x-stackQL-graphQL: + id: gitlab.projects.project_milestones.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.milestones.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.milestones.pageInfo.endCursor + terminateOnJsonPath: $.data.project.milestones.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { milestones(first: 100{{ .cursor }}{{ if .containing_date }}, containingDate: "{{ .containing_date }}"{{ end }}{{ if .include_ancestors }}, includeAncestors: {{ .include_ancestors }}{{ end }}{{ if .search_title }}, searchTitle: "{{ .search_title }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}{{ if .title }}, title: "{{ .title }}"{{ end }}) { nodes { created_at: createdAt description due_date: dueDate expired group_milestone: groupMilestone id iid project_milestone: projectMilestone start_date: startDate state subgroup_milestone: subgroupMilestone title upcoming updated_at: updatedAt web_path: webPath group_: group { id full_path: fullPath name } project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: containing_date + in: query + required: false + description: Date the milestone contains. + schema: + type: string + - name: include_ancestors + in: query + required: false + description: Also return milestones in the project's parent group and its ancestors. + schema: + type: boolean + - name: search_title + in: query + required: false + description: Search string for the title. + schema: + type: string + - name: sort + in: query + required: false + description: Sort milestones by the criteria. + schema: + type: string + enum: + - DUE_DATE_ASC + - DUE_DATE_DESC + - EXPIRED_LAST_DUE_DATE_ASC + - EXPIRED_LAST_DUE_DATE_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: state + in: query + required: false + description: Filter milestones by state. + schema: + type: string + enum: + - active + - closed + - name: title + in: query + required: false + description: Title of the milestone. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + milestones: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of milestone creation. + description: + type: string + description: Description of the milestone. + due_date: + type: string + description: Timestamp of the milestone due date. + expired: + type: boolean + description: Expired state of the milestone (a milestone is expired when the due date is past the current date). Defaults to `false` when due date has not been set. + group_milestone: + type: boolean + description: Indicates if milestone is at group level. + id: + type: string + description: ID of the milestone. + iid: + type: string + description: Internal ID of the milestone. + project_milestone: + type: boolean + description: Indicates if milestone is at project level. + start_date: + type: string + description: Timestamp of the milestone start date. + state: + type: string + enum: + - active + - closed + description: State of the milestone. + subgroup_milestone: + type: boolean + description: Indicates if milestone is at subgroup level. + title: + type: string + description: Title of the milestone. + upcoming: + type: boolean + description: Upcoming state of the milestone (a milestone is upcoming when the start date is in the future). Defaults to `false` when start date has not been set. + updated_at: + type: string + description: Timestamp of last milestone update. + web_path: + type: string + description: Web path of the milestone. + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_namespace&method=get: + post: + operationId: project_namespace_get + summary: Namespace of the project. + description: Namespace of the project. Generated from the GitLab GraphQL schema field Project.namespace (Namespace). + externalDocs: + description: 'GitLab GraphQL API reference: Project.namespace' + url: https://docs.gitlab.com/api/graphql/reference/#projectnamespace + x-stackQL-graphQL: + id: gitlab.projects.project_namespace.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { namespace { actual_repository_size_limit: actualRepositorySizeLimit actual_size_limit: actualSizeLimit additional_purchased_storage_size: additionalPurchasedStorageSize avatar_url: avatarUrl contains_locked_projects: containsLockedProjects cross_project_pipeline_available: crossProjectPipelineAvailable description full_name: fullName full_path: fullPath id lfs_enabled: lfsEnabled name path repository_size_excess_project_count: repositorySizeExcessProjectCount request_access_enabled: requestAccessEnabled shared_runners_setting: sharedRunnersSetting storage_size_limit: storageSizeLimit total_repository_size: totalRepositorySize total_repository_size_excess: totalRepositorySizeExcess visibility web_url: webUrl } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + namespace: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for repositories in the namespace in bytes. This limit only applies to namespaces under Project limit enforcement. + actual_size_limit: + type: number + description: The actual storage size limit (in bytes) based on the enforcement type of either repository or namespace. This limit is agnostic of enforcement type. + additional_purchased_storage_size: + type: number + description: Additional storage purchased for the root namespace in bytes. + avatar_url: + type: string + description: URL to avatar image file of the namespace. + contains_locked_projects: + type: boolean + description: Includes at least one project where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + cross_project_pipeline_available: + type: boolean + description: Indicates if the cross_project_pipeline feature is available for the namespace. + description: + type: string + description: Description of the namespace. + full_name: + type: string + description: Full name of the namespace. + full_path: + type: string + description: Full path of the namespace. + id: + type: string + description: ID of the namespace. + lfs_enabled: + type: boolean + description: Indicates if Large File Storage (LFS) is enabled for namespace. + name: + type: string + description: Name of the namespace. + path: + type: string + description: Path of the namespace. + repository_size_excess_project_count: + type: integer + description: Number of projects in the root namespace where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + request_access_enabled: + type: boolean + description: Indicates if users can request access to namespace. + shared_runners_setting: + type: string + enum: + - DISABLED_AND_UNOVERRIDABLE + - DISABLED_AND_OVERRIDABLE + - ENABLED + description: Shared runners availability for the namespace and its descendants. + storage_size_limit: + type: number + description: The storage limit (in bytes) included with the root namespace plan. This limit only applies to namespaces under namespace limit enforcement. + total_repository_size: + type: number + description: Total repository size of all projects in the root namespace in bytes. + total_repository_size_excess: + type: number + description: Total excess repository size of all projects in the root namespace in bytes. This only applies to namespaces under Project limit enforcement. + visibility: + type: string + description: Visibility of the namespace. + web_url: + type: string + description: URL of the namespace. + /api/graphql?resource=project_nested_environments&method=list: + post: + operationId: project_nested_environments_list + summary: Environments for this project with nested folders, can only be resolved for one project in any single request + description: Environments for this project with nested folders, can only be resolved for one project in any single request Generated from the GitLab GraphQL schema field Project.nestedEnvironments (connection of NestedEnvironment nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.nestedEnvironments' + url: https://docs.gitlab.com/api/graphql/reference/#projectnestedenvironments + x-stackQL-graphQL: + id: gitlab.projects.project_nested_environments.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.nestedEnvironments.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.nestedEnvironments.pageInfo.endCursor + terminateOnJsonPath: $.data.project.nestedEnvironments.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { nestedEnvironments(first: 100{{ .cursor }}{{ if .name }}, name: "{{ .name }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .type }}, type: "{{ .type }}"{{ end }}) { nodes { name size } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: name + in: query + required: false + description: Name of the environment. + schema: + type: string + - name: search + in: query + required: false + description: Search query for environment name. + schema: + type: string + - name: type + in: query + required: false + description: Search query for environment type. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + nestedEnvironments: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + name: + type: string + description: Human-readable name of the environment. + size: + type: integer + description: Number of environments nested in the folder. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_pages_deployments&method=list: + post: + operationId: project_pages_deployments_list + summary: List of the project's Pages Deployments. + description: List of the project's Pages Deployments. Generated from the GitLab GraphQL schema field Project.pagesDeployments (connection of PagesDeployment nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.pagesDeployments' + url: https://docs.gitlab.com/api/graphql/reference/#projectpagesdeployments + x-stackQL-graphQL: + id: gitlab.projects.project_pages_deployments.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.pagesDeployments.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.pagesDeployments.pageInfo.endCursor + terminateOnJsonPath: $.data.project.pagesDeployments.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { pagesDeployments(first: 100{{ .cursor }}{{ if .active }}, active: {{ .active }}{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .versioned }}, versioned: {{ .versioned }}{{ end }}) { nodes { active ci_build_id: ciBuildId created_at: createdAt deleted_at: deletedAt expires_at: expiresAt file_count: fileCount id path_prefix: pathPrefix root_directory: rootDirectory size updated_at: updatedAt url project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: active + in: query + required: false + description: Filter by active or inactive state. + schema: + type: boolean + - name: sort + in: query + required: false + description: Sort results. + schema: + type: string + enum: + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: versioned + in: query + required: false + description: |- + Filter deployments that are + versioned or unversioned. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + pagesDeployments: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + active: + type: boolean + description: Whether the deployment is currently active. + ci_build_id: + type: string + description: ID of the CI build that created the deployment. + created_at: + type: string + description: Time the deployment was created. + deleted_at: + type: string + description: Time the deployment was deleted. + expires_at: + type: string + description: Time the deployment will expire. + file_count: + type: integer + description: Number of files that were published with the deployment. + id: + type: string + description: ID of the Pages Deployment. + path_prefix: + type: string + description: URL path Prefix that points to the deployment. + root_directory: + type: string + description: Path within the build assets that functions as the root directory for Pages sites. + size: + type: integer + description: Size of the storage used. + updated_at: + type: string + description: Time the deployment was last updated. + url: + type: string + description: Publicly accessible URL of the deployment. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_path_locks&method=list: + post: + operationId: project_path_locks_list + summary: The project's path locks. + description: The project's path locks. Generated from the GitLab GraphQL schema field Project.pathLocks (connection of PathLock nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.pathLocks' + url: https://docs.gitlab.com/api/graphql/reference/#projectpathlocks + x-stackQL-graphQL: + id: gitlab.projects.project_path_locks.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.pathLocks.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.pathLocks.pageInfo.endCursor + terminateOnJsonPath: $.data.project.pathLocks.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { pathLocks(first: 100{{ .cursor }}) { nodes { id path user { id username name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + pathLocks: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: ID of the path lock. + path: + type: string + description: Locked path. + user: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_pending_member_approvals&method=list: + post: + operationId: project_pending_member_approvals_list + summary: Pending member promotions of the project. + description: Pending member promotions of the project. Generated from the GitLab GraphQL schema field Project.pendingMemberApprovals (connection of MemberApproval nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.pendingMemberApprovals' + url: https://docs.gitlab.com/api/graphql/reference/#projectpendingmemberapprovals + x-stackQL-graphQL: + id: gitlab.projects.project_pending_member_approvals.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.pendingMemberApprovals.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.pendingMemberApprovals.pageInfo.endCursor + terminateOnJsonPath: $.data.project.pendingMemberApprovals.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { pendingMemberApprovals(first: 100{{ .cursor }}) { nodes { created_at: createdAt member_role_id: memberRoleId status updated_at: updatedAt user { id username name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + pendingMemberApprovals: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp when the member approval was created. + member_role_id: + type: string + description: ID of the member role. + status: + type: string + description: Status for the member approval request (approved, denied, pending). + updated_at: + type: string + description: Timestamp when the member approval was last updated. + user: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_push_rules&method=get: + post: + operationId: project_push_rules_get + summary: Project's push rules settings. + description: Project's push rules settings. Generated from the GitLab GraphQL schema field Project.pushRules (PushRules). + externalDocs: + description: 'GitLab GraphQL API reference: Project.pushRules' + url: https://docs.gitlab.com/api/graphql/reference/#projectpushrules + x-stackQL-graphQL: + id: gitlab.projects.project_push_rules.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { pushRules { author_email_regex: authorEmailRegex branch_name_regex: branchNameRegex commit_committer_check: commitCommitterCheck commit_committer_name_check: commitCommitterNameCheck commit_message_negative_regex: commitMessageNegativeRegex commit_message_regex: commitMessageRegex deny_delete_tag: denyDeleteTag file_name_regex: fileNameRegex max_file_size: maxFileSize member_check: memberCheck prevent_secrets: preventSecrets reject_non_dco_commits: rejectNonDcoCommits reject_unsigned_commits: rejectUnsignedCommits } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + pushRules: + type: object + properties: + author_email_regex: + type: string + description: All commit author emails must match the regular expression. + branch_name_regex: + type: string + description: All branch names must match the regular expression. + commit_committer_check: + type: boolean + description: Only allow commits where the committer email matches a verified GitLab user email. + commit_committer_name_check: + type: boolean + description: Only allow commits where the author name matches the GitLab user name. + commit_message_negative_regex: + type: string + description: No commit message is allowed to match the regular expression. + commit_message_regex: + type: string + description: All commit messages must match the regular expression. + deny_delete_tag: + type: boolean + description: Deny deleting a tag with `git push`. + file_name_regex: + type: string + description: All committed filenames must not match the regular expression. + max_file_size: + type: integer + description: Maximum file size (MB). + member_check: + type: boolean + description: Restrict commits by author (email) to existing GitLab users. + prevent_secrets: + type: boolean + description: GitLab rejects any files that are likely to contain secrets. + reject_non_dco_commits: + type: boolean + description: Reject commit when it is not DCO certified. + reject_unsigned_commits: + type: boolean + description: Reject commit when it is not signed through GPG. + /api/graphql?resource=project_release&method=get: + post: + operationId: project_release_get + summary: A single release of the project. + description: A single release of the project. Generated from the GitLab GraphQL schema field Project.release (Release). + externalDocs: + description: 'GitLab GraphQL API reference: Project.release' + url: https://docs.gitlab.com/api/graphql/reference/#projectrelease + x-stackQL-graphQL: + id: gitlab.projects.project_release.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { release(tagName: "{{ .tag_name }}") { created_at: createdAt description historical_release: historicalRelease id name released_at: releasedAt tag_name: tagName tag_path: tagPath upcoming_release: upcomingRelease author { id username name } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: tag_name + in: query + required: true + description: Name of the tag associated to the release. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + release: + type: object + properties: + created_at: + type: string + description: Timestamp of when the release was created. + description: + type: string + description: Description (also known as "release notes") of the release. + historical_release: + type: boolean + description: Indicates the release is a historical release. + id: + type: string + description: Global ID of the release. + name: + type: string + description: Name of the release. + released_at: + type: string + description: Timestamp of when the release was released. + tag_name: + type: string + description: Name of the tag associated with the release. + tag_path: + type: string + description: Relative web path to the tag associated with the release. + upcoming_release: + type: boolean + description: Indicates the release is an upcoming release. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + /api/graphql?resource=project_releases&method=list: + post: + operationId: project_releases_list + summary: Releases of the project. + description: Releases of the project. Generated from the GitLab GraphQL schema field Project.releases (connection of Release nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.releases' + url: https://docs.gitlab.com/api/graphql/reference/#projectreleases + x-stackQL-graphQL: + id: gitlab.projects.project_releases.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.releases.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.releases.pageInfo.endCursor + terminateOnJsonPath: $.data.project.releases.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { releases(first: 100{{ .cursor }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { created_at: createdAt description historical_release: historicalRelease id name released_at: releasedAt tag_name: tagName tag_path: tagPath upcoming_release: upcomingRelease author { id username name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: sort + in: query + required: false + description: Sort releases by given criteria. + schema: + type: string + enum: + - CREATED_DESC + - CREATED_ASC + - RELEASED_AT_DESC + - RELEASED_AT_ASC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + releases: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of when the release was created. + description: + type: string + description: Description (also known as "release notes") of the release. + historical_release: + type: boolean + description: Indicates the release is a historical release. + id: + type: string + description: Global ID of the release. + name: + type: string + description: Name of the release. + released_at: + type: string + description: Timestamp of when the release was released. + tag_name: + type: string + description: Name of the tag associated with the release. + tag_path: + type: string + description: Relative web path to the tag associated with the release. + upcoming_release: + type: boolean + description: Indicates the release is an upcoming release. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_repository&method=get: + post: + operationId: project_repository_get + summary: Git repository of the project. + description: Git repository of the project. Generated from the GitLab GraphQL schema field Project.repository (Repository). + externalDocs: + description: 'GitLab GraphQL API reference: Project.repository' + url: https://docs.gitlab.com/api/graphql/reference/#projectrepository + x-stackQL-graphQL: + id: gitlab.projects.project_repository.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { repository { branch_count: branchCount code_owners_path: codeOwnersPath commit_count: commitCount disk_path: diskPath empty exists_: exists root_ref: rootRef tag_count: tagCount } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + repository: + type: object + properties: + branch_count: + type: integer + description: Number of branches in the repository. + code_owners_path: + type: string + description: Path to CODEOWNERS file in a ref. + commit_count: + type: integer + description: Number of commits in the default branch of the repository. + disk_path: + type: string + description: Shows a disk path of the repository. + empty: + type: boolean + description: Indicates repository has no visible content. + exists_: + type: boolean + description: Indicates a corresponding Git repository exists on disk. + root_ref: + type: string + description: Default branch of the repository. + tag_count: + type: integer + description: Number of tags in the repository. + /api/graphql?resource=project_requirement_states_count&method=get: + post: + operationId: project_requirement_states_count_get + summary: Number of requirements for the project by their state. + description: Number of requirements for the project by their state. Generated from the GitLab GraphQL schema field Project.requirementStatesCount (RequirementStatesCount). + externalDocs: + description: 'GitLab GraphQL API reference: Project.requirementStatesCount' + url: https://docs.gitlab.com/api/graphql/reference/#projectrequirementstatescount + x-stackQL-graphQL: + id: gitlab.projects.project_requirement_states_count.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { requirementStatesCount { archived opened } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + requirementStatesCount: + type: object + properties: + archived: + type: integer + description: Number of archived requirements. + opened: + type: integer + description: Number of opened requirements. + /api/graphql?resource=project_requirement&method=get: + post: + operationId: project_requirement_get + summary: Find a single requirement. + description: Find a single requirement. Generated from the GitLab GraphQL schema field Project.requirement (Requirement). + externalDocs: + description: 'GitLab GraphQL API reference: Project.requirement' + url: https://docs.gitlab.com/api/graphql/reference/#projectrequirement + x-stackQL-graphQL: + id: gitlab.projects.project_requirement.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { requirement{{ if or .last_test_report_state .search .sort .state .work_item_iid }}({{ if .last_test_report_state }}, lastTestReportState: {{ .last_test_report_state }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}{{ if .work_item_iid }}, workItemIid: "{{ .work_item_iid }}"{{ end }}){{ end }} { created_at: createdAt description id last_test_report_manually_created: lastTestReportManuallyCreated last_test_report_state: lastTestReportState state title updated_at: updatedAt work_item_iid: workItemIid author { id username name } project { id full_path: fullPath name } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: last_test_report_state + in: query + required: false + description: State of latest requirement test report. + schema: + type: string + enum: + - MISSING + - PASSED + - FAILED + - name: search + in: query + required: false + description: Search query for requirement title. + schema: + type: string + - name: sort + in: query + required: false + description: List requirements by sort order. + schema: + type: string + enum: + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: state + in: query + required: false + description: Filter requirements by state. + schema: + type: string + enum: + - OPENED + - ARCHIVED + - name: work_item_iid + in: query + required: false + description: IID of the requirement work item, for example, "1". + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + requirement: + type: object + properties: + created_at: + type: string + description: Timestamp of when the requirement was created. + description: + type: string + description: Description of the requirement. + id: + type: string + description: ID of the requirement. + last_test_report_manually_created: + type: boolean + description: Indicates if latest test report was created by user. + last_test_report_state: + type: string + enum: + - PASSED + - FAILED + description: Latest requirement test report state. + state: + type: string + enum: + - OPENED + - ARCHIVED + description: State of the requirement. + title: + type: string + description: Title of the requirement. + updated_at: + type: string + description: Timestamp of when the requirement was last updated. + work_item_iid: + type: string + description: Work item IID of the requirement, will replace current IID as identifier soon. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=project_requirements&method=list: + post: + operationId: project_requirements_list + summary: Find requirements. + description: Find requirements. Generated from the GitLab GraphQL schema field Project.requirements (connection of Requirement nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.requirements' + url: https://docs.gitlab.com/api/graphql/reference/#projectrequirements + x-stackQL-graphQL: + id: gitlab.projects.project_requirements.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.requirements.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.requirements.pageInfo.endCursor + terminateOnJsonPath: $.data.project.requirements.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { requirements(first: 100{{ .cursor }}{{ if .last_test_report_state }}, lastTestReportState: {{ .last_test_report_state }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}{{ if .work_item_iid }}, workItemIid: "{{ .work_item_iid }}"{{ end }}) { nodes { created_at: createdAt description id last_test_report_manually_created: lastTestReportManuallyCreated last_test_report_state: lastTestReportState state title updated_at: updatedAt work_item_iid: workItemIid author { id username name } project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: last_test_report_state + in: query + required: false + description: State of latest requirement test report. + schema: + type: string + enum: + - MISSING + - PASSED + - FAILED + - name: search + in: query + required: false + description: Search query for requirement title. + schema: + type: string + - name: sort + in: query + required: false + description: List requirements by sort order. + schema: + type: string + enum: + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: state + in: query + required: false + description: Filter requirements by state. + schema: + type: string + enum: + - OPENED + - ARCHIVED + - name: work_item_iid + in: query + required: false + description: IID of the requirement work item, for example, "1". + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + requirements: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of when the requirement was created. + description: + type: string + description: Description of the requirement. + id: + type: string + description: ID of the requirement. + last_test_report_manually_created: + type: boolean + description: Indicates if latest test report was created by user. + last_test_report_state: + type: string + enum: + - PASSED + - FAILED + description: Latest requirement test report state. + state: + type: string + enum: + - OPENED + - ARCHIVED + description: State of the requirement. + title: + type: string + description: Title of the requirement. + updated_at: + type: string + description: Timestamp of when the requirement was last updated. + work_item_iid: + type: string + description: Work item IID of the requirement, will replace current IID as identifier soon. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_root_group&method=get: + post: + operationId: project_root_group_get + summary: Top-level group of the project. + description: Top-level group of the project. Generated from the GitLab GraphQL schema field Project.rootGroup (Group). + externalDocs: + description: 'GitLab GraphQL API reference: Project.rootGroup' + url: https://docs.gitlab.com/api/graphql/reference/#projectrootgroup + x-stackQL-graphQL: + id: gitlab.projects.project_root_group.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { rootGroup { actual_repository_size_limit: actualRepositorySizeLimit actual_size_limit: actualSizeLimit additional_purchased_storage_size: additionalPurchasedStorageSize admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_stale_runner_pruning: allowStaleRunnerPruning archived auto_devops_enabled: autoDevopsEnabled avatar_url: avatarUrl billable_members_count: billableMembersCount contains_locked_projects: containsLockedProjects created_at: createdAt cross_project_pipeline_available: crossProjectPipelineAvailable dependency_proxy_blob_count: dependencyProxyBlobCount dependency_proxy_image_count: dependencyProxyImageCount dependency_proxy_image_prefix: dependencyProxyImagePrefix dependency_proxy_total_size: dependencyProxyTotalSize dependency_proxy_total_size_bytes: dependencyProxyTotalSizeBytes descendant_groups_count: descendantGroupsCount description edit_path: editPath emails_disabled: emailsDisabled emails_enabled: emailsEnabled enforce_free_user_cap: enforceFreeUserCap full_name: fullName full_path: fullPath group_members_count: groupMembersCount id is_linked_to_subscription: isLinkedToSubscription is_self_archived: isSelfArchived lfs_enabled: lfsEnabled lock_math_rendering_limits_enabled: lockMathRenderingLimitsEnabled math_rendering_limits_enabled: mathRenderingLimitsEnabled mentions_disabled: mentionsDisabled name path project_creation_level: projectCreationLevel projects_count: projectsCount repository_size_excess_project_count: repositorySizeExcessProjectCount request_access_enabled: requestAccessEnabled require_two_factor_authentication: requireTwoFactorAuthentication share_with_group_lock: shareWithGroupLock shared_runners_setting: sharedRunnersSetting storage_size_limit: storageSizeLimit subgroup_creation_level: subgroupCreationLevel total_repository_size: totalRepositorySize total_repository_size_excess: totalRepositorySizeExcess two_factor_grace_period: twoFactorGracePeriod updated_at: updatedAt visibility web_path: webPath web_url: webUrl } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + rootGroup: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for repositories in the namespace in bytes. This limit only applies to namespaces under Project limit enforcement. + actual_size_limit: + type: number + description: The actual storage size limit (in bytes) based on the enforcement type of either repository or namespace. This limit is agnostic of enforcement type. + additional_purchased_storage_size: + type: number + description: Additional storage purchased for the root namespace in bytes. + admin_edit_path: + type: string + description: Admin path for editing group. Only available to admins. + admin_show_path: + type: string + description: Admin path of the group. Only available to admins. + allow_stale_runner_pruning: + type: boolean + description: Indicates whether to regularly prune stale group runners. Defaults to false. + archived: + type: boolean + description: Indicates if the group or any ancestor is archived. + auto_devops_enabled: + type: boolean + description: Indicates whether Auto DevOps is enabled for all projects within the group. + avatar_url: + type: string + description: Avatar URL of the group. + billable_members_count: + type: integer + description: Number of billable users in the group. + contains_locked_projects: + type: boolean + description: Includes at least one project where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + created_at: + type: string + description: Timestamp of the group creation. + cross_project_pipeline_available: + type: boolean + description: Indicates if the cross_project_pipeline feature is available for the namespace. + dependency_proxy_blob_count: + type: integer + description: Number of dependency proxy blobs cached in the group. + dependency_proxy_image_count: + type: integer + description: Number of dependency proxy images cached in the group. + dependency_proxy_image_prefix: + type: string + description: Prefix for pulling images when using the dependency proxy. + dependency_proxy_total_size: + type: string + description: Total size of the dependency proxy cached images. + dependency_proxy_total_size_bytes: + type: string + description: Total size of the dependency proxy cached images in bytes, encoded as a string. + descendant_groups_count: + type: integer + description: Count of direct descendant groups of the group. + description: + type: string + description: Description of the namespace. + edit_path: + type: string + description: Path for editing group. + emails_disabled: + type: boolean + description: Indicates if a group has email notifications disabled. + emails_enabled: + type: boolean + description: Indicates if a group has email notifications enabled. + enforce_free_user_cap: + type: boolean + description: Indicates whether the group has limited users for a free plan. + full_name: + type: string + description: Full name of the group. + full_path: + type: string + description: Full path of the group. + group_members_count: + type: integer + description: Count of direct members of the group. + id: + type: string + description: ID of the group. + is_linked_to_subscription: + type: boolean + description: Indicates if group is linked to a subscription. + is_self_archived: + type: boolean + description: Indicates if the group is archived. + lfs_enabled: + type: boolean + description: Indicates if Large File Storage (LFS) is enabled for namespace. + lock_math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are locked for all descendant groups. + math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are used for the group. + mentions_disabled: + type: boolean + description: Indicates if a group is disabled from getting mentioned. + name: + type: string + description: Name of the group. + path: + type: string + description: Path of the namespace. + project_creation_level: + type: string + description: Permission level required to create projects in the group. + projects_count: + type: integer + description: Count of direct projects in the group. + repository_size_excess_project_count: + type: integer + description: Number of projects in the root namespace where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + request_access_enabled: + type: boolean + description: Indicates if users can request access to namespace. + require_two_factor_authentication: + type: boolean + description: Indicates if all users in the group are required to set up two-factor authentication. + share_with_group_lock: + type: boolean + description: Indicates if sharing a project with another group within the group is prevented. + shared_runners_setting: + type: string + enum: + - DISABLED_AND_UNOVERRIDABLE + - DISABLED_AND_OVERRIDABLE + - ENABLED + description: Shared runners availability for the namespace and its descendants. + storage_size_limit: + type: number + description: The storage limit (in bytes) included with the root namespace plan. This limit only applies to namespaces under namespace limit enforcement. + subgroup_creation_level: + type: string + description: Permission level required to create subgroups within the group. + total_repository_size: + type: number + description: Total repository size of all projects in the root namespace in bytes. + total_repository_size_excess: + type: number + description: Total excess repository size of all projects in the root namespace in bytes. This only applies to namespaces under Project limit enforcement. + two_factor_grace_period: + type: integer + description: Time before two-factor authentication is enforced. + updated_at: + type: string + description: Timestamp of when the group was last updated. + visibility: + type: string + description: Visibility of the namespace. + web_path: + type: string + description: Web path of the group. + web_url: + type: string + description: Web URL of the group. + /api/graphql?resource=project_saved_replies&method=list: + post: + operationId: project_saved_replies_list + summary: Saved replies available to the project. + description: Saved replies available to the project. Generated from the GitLab GraphQL schema field Project.savedReplies (connection of ProjectSavedReply nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.savedReplies' + url: https://docs.gitlab.com/api/graphql/reference/#projectsavedreplies + x-stackQL-graphQL: + id: gitlab.projects.project_saved_replies.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.savedReplies.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.savedReplies.pageInfo.endCursor + terminateOnJsonPath: $.data.project.savedReplies.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { savedReplies(first: 100{{ .cursor }}) { nodes { content id name } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + savedReplies: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + content: + type: string + description: Content of the saved reply. + id: + type: string + description: Global ID of the project-level saved reply. + name: + type: string + description: Name of the saved reply. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_saved_reply&method=get: + post: + operationId: project_saved_reply_get + summary: Saved reply in the project. + description: Saved reply in the project. Generated from the GitLab GraphQL schema field Project.savedReply (ProjectSavedReply). + externalDocs: + description: 'GitLab GraphQL API reference: Project.savedReply' + url: https://docs.gitlab.com/api/graphql/reference/#projectsavedreply + x-stackQL-graphQL: + id: gitlab.projects.project_saved_reply.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { savedReply(id: "{{ .id }}") { content id name } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: id + in: query + required: true + description: Global ID of a saved reply. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + savedReply: + type: object + properties: + content: + type: string + description: Content of the saved reply. + id: + type: string + description: Global ID of the project-level saved reply. + name: + type: string + description: Name of the saved reply. + /api/graphql?resource=project_sentry_detailed_error&method=get: + post: + operationId: project_sentry_detailed_error_get + summary: Detailed version of a Sentry error on the project. + description: Detailed version of a Sentry error on the project. Generated from the GitLab GraphQL schema field Project.sentryDetailedError (SentryDetailedError). + externalDocs: + description: 'GitLab GraphQL API reference: Project.sentryDetailedError' + url: https://docs.gitlab.com/api/graphql/reference/#projectsentrydetailederror + x-stackQL-graphQL: + id: gitlab.projects.project_sentry_detailed_error.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { sentryDetailedError(id: "{{ .id }}") { count culprit external_base_url: externalBaseUrl external_url: externalUrl first_release_last_commit: firstReleaseLastCommit first_release_short_version: firstReleaseShortVersion first_release_version: firstReleaseVersion first_seen: firstSeen gitlab_commit: gitlabCommit gitlab_commit_path: gitlabCommitPath gitlab_issue_path: gitlabIssuePath id integrated last_release_last_commit: lastReleaseLastCommit last_release_short_version: lastReleaseShortVersion last_release_version: lastReleaseVersion last_seen: lastSeen message sentry_id: sentryId sentry_project_id: sentryProjectId sentry_project_name: sentryProjectName sentry_project_slug: sentryProjectSlug short_id: shortId status title type user_count: userCount } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: id + in: query + required: true + description: ID of the Sentry issue. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + sentryDetailedError: + type: object + properties: + count: + type: integer + description: Count of occurrences. + culprit: + type: string + description: Culprit of the error. + external_base_url: + type: string + description: External Base URL of the Sentry Instance. + external_url: + type: string + description: External URL of the error. + first_release_last_commit: + type: string + description: Commit the error was first seen. + first_release_short_version: + type: string + description: Release short version the error was first seen. + first_release_version: + type: string + description: Release version the error was first seen. + first_seen: + type: string + description: Timestamp when the error was first seen. + gitlab_commit: + type: string + description: GitLab commit SHA attributed to the Error based on the release version. + gitlab_commit_path: + type: string + description: Path to the GitLab page for the GitLab commit attributed to the error. + gitlab_issue_path: + type: string + description: URL of GitLab Issue. + id: + type: string + description: ID (global ID) of the error. + integrated: + type: boolean + description: Error tracking backend. + last_release_last_commit: + type: string + description: Commit the error was last seen. + last_release_short_version: + type: string + description: Release short version the error was last seen. + last_release_version: + type: string + description: Release version the error was last seen. + last_seen: + type: string + description: Timestamp when the error was last seen. + message: + type: string + description: Sentry metadata message of the error. + sentry_id: + type: string + description: ID (Sentry ID) of the error. + sentry_project_id: + type: string + description: ID of the project (Sentry project). + sentry_project_name: + type: string + description: Name of the project affected by the error. + sentry_project_slug: + type: string + description: Slug of the project affected by the error. + short_id: + type: string + description: Short ID (Sentry ID) of the error. + status: + type: string + enum: + - RESOLVED + - RESOLVED_IN_NEXT_RELEASE + - UNRESOLVED + - IGNORED + description: Status of the error. + title: + type: string + description: Title of the error. + type: + type: string + description: Type of the error. + user_count: + type: integer + description: Count of users affected by the error. + /api/graphql?resource=project_sentry_errors&method=get: + post: + operationId: project_sentry_errors_get + summary: Paginated collection of Sentry errors on the project. + description: Paginated collection of Sentry errors on the project. Generated from the GitLab GraphQL schema field Project.sentryErrors (SentryErrorCollection). + externalDocs: + description: 'GitLab GraphQL API reference: Project.sentryErrors' + url: https://docs.gitlab.com/api/graphql/reference/#projectsentryerrors + x-stackQL-graphQL: + id: gitlab.projects.project_sentry_errors.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { sentryErrors { external_url: externalUrl } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + sentryErrors: + type: object + properties: + external_url: + type: string + description: External URL for Sentry. + /api/graphql?resource=project_statistics_details_paths&method=get: + post: + operationId: project_statistics_details_paths_get + summary: Redirects for Statistics of the project. + description: Redirects for Statistics of the project. Generated from the GitLab GraphQL schema field Project.statisticsDetailsPaths (ProjectStatisticsRedirect). + externalDocs: + description: 'GitLab GraphQL API reference: Project.statisticsDetailsPaths' + url: https://docs.gitlab.com/api/graphql/reference/#projectstatisticsdetailspaths + x-stackQL-graphQL: + id: gitlab.projects.project_statistics_details_paths.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { statisticsDetailsPaths { build_artifacts: buildArtifacts container_registry: containerRegistry packages repository snippets wiki } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + statisticsDetailsPaths: + type: object + properties: + build_artifacts: + type: string + description: Redirection Route for job_artifacts. + container_registry: + type: string + description: Redirection Route for container_registry. + packages: + type: string + description: Redirection Route for packages. + repository: + type: string + description: Redirection Route for repository. + snippets: + type: string + description: Redirection Route for snippets. + wiki: + type: string + description: Redirection Route for wiki. + /api/graphql?resource=project_statistics&method=get: + post: + operationId: project_statistics_get + summary: Statistics of the project. + description: Statistics of the project. Generated from the GitLab GraphQL schema field Project.statistics (ProjectStatistics). + externalDocs: + description: 'GitLab GraphQL API reference: Project.statistics' + url: https://docs.gitlab.com/api/graphql/reference/#projectstatistics + x-stackQL-graphQL: + id: gitlab.projects.project_statistics.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { statistics { build_artifacts_size: buildArtifactsSize commit_count: commitCount container_registry_size: containerRegistrySize lfs_objects_size: lfsObjectsSize packages_size: packagesSize pipeline_artifacts_size: pipelineArtifactsSize repository_size: repositorySize snippets_size: snippetsSize storage_size: storageSize uploads_size: uploadsSize wiki_size: wikiSize } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + statistics: + type: object + properties: + build_artifacts_size: + type: number + description: Build artifacts size of the project in bytes. + commit_count: + type: number + description: Commit count of the project. + container_registry_size: + type: number + description: Container registry size of the project in bytes. + lfs_objects_size: + type: number + description: Large File Storage (LFS) object size of the project in bytes. + packages_size: + type: number + description: Packages size of the project in bytes. + pipeline_artifacts_size: + type: number + description: CI Pipeline artifacts size in bytes. + repository_size: + type: number + description: Repository size of the project in bytes. + snippets_size: + type: number + description: Snippets size of the project in bytes. + storage_size: + type: number + description: Storage size of the project in bytes. + uploads_size: + type: number + description: Uploads size of the project in bytes. + wiki_size: + type: number + description: Wiki size of the project in bytes. + /api/graphql?resource=project_target_branch_rules&method=list: + post: + operationId: project_target_branch_rules_list + summary: Target branch rules of the project. + description: Target branch rules of the project. Generated from the GitLab GraphQL schema field Project.targetBranchRules (connection of ProjectTargetBranchRule nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.targetBranchRules' + url: https://docs.gitlab.com/api/graphql/reference/#projecttargetbranchrules + x-stackQL-graphQL: + id: gitlab.projects.project_target_branch_rules.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.targetBranchRules.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.targetBranchRules.pageInfo.endCursor + terminateOnJsonPath: $.data.project.targetBranchRules.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { targetBranchRules(first: 100{{ .cursor }}) { nodes { created_at: createdAt id name target_branch: targetBranch } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + targetBranchRules: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp of when the target branch rule was created. + id: + type: string + description: ID of the target branch rule. + name: + type: string + description: Name of the target branch rule. + target_branch: + type: string + description: Target branch for the target branch rule. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_terraform_state&method=get: + post: + operationId: project_terraform_state_get + summary: Find a single Terraform state by name. + description: Find a single Terraform state by name. Generated from the GitLab GraphQL schema field Project.terraformState (TerraformState). + externalDocs: + description: 'GitLab GraphQL API reference: Project.terraformState' + url: https://docs.gitlab.com/api/graphql/reference/#projectterraformstate + x-stackQL-graphQL: + id: gitlab.projects.project_terraform_state.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { terraformState(name: "{{ .name }}") { created_at: createdAt deleted_at: deletedAt id locked_at: lockedAt name updated_at: updatedAt } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: name + in: query + required: true + description: Name of the Terraform state. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + terraformState: + type: object + properties: + created_at: + type: string + description: Timestamp the Terraform state was created. + deleted_at: + type: string + description: Timestamp the Terraform state was deleted. + id: + type: string + description: ID of the Terraform state. + locked_at: + type: string + description: Timestamp the Terraform state was locked. + name: + type: string + description: Name of the Terraform state. + updated_at: + type: string + description: Timestamp the Terraform state was updated. + /api/graphql?resource=project_terraform_states&method=list: + post: + operationId: project_terraform_states_list + summary: Terraform states associated with the project. + description: Terraform states associated with the project. Generated from the GitLab GraphQL schema field Project.terraformStates (connection of TerraformState nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.terraformStates' + url: https://docs.gitlab.com/api/graphql/reference/#projectterraformstates + x-stackQL-graphQL: + id: gitlab.projects.project_terraform_states.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.terraformStates.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.terraformStates.pageInfo.endCursor + terminateOnJsonPath: $.data.project.terraformStates.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { terraformStates(first: 100{{ .cursor }}) { nodes { created_at: createdAt deleted_at: deletedAt id locked_at: lockedAt name updated_at: updatedAt } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + terraformStates: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp the Terraform state was created. + deleted_at: + type: string + description: Timestamp the Terraform state was deleted. + id: + type: string + description: ID of the Terraform state. + locked_at: + type: string + description: Timestamp the Terraform state was locked. + name: + type: string + description: Name of the Terraform state. + updated_at: + type: string + description: Timestamp the Terraform state was updated. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_timelogs&method=list: + post: + operationId: project_timelogs_list + summary: Time logged on issues and merge requests in the project. + description: Time logged on issues and merge requests in the project. Generated from the GitLab GraphQL schema field Project.timelogs (connection of Timelog nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.timelogs' + url: https://docs.gitlab.com/api/graphql/reference/#projecttimelogs + x-stackQL-graphQL: + id: gitlab.projects.project_timelogs.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.timelogs.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.timelogs.pageInfo.endCursor + terminateOnJsonPath: $.data.project.timelogs.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { timelogs(first: 100{{ .cursor }}{{ if .end_date }}, endDate: "{{ .end_date }}"{{ end }}{{ if .end_time }}, endTime: "{{ .end_time }}"{{ end }}{{ if .group_id }}, groupId: "{{ .group_id }}"{{ end }}{{ if .project_id }}, projectId: "{{ .project_id }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .start_date }}, startDate: "{{ .start_date }}"{{ end }}{{ if .start_time }}, startTime: "{{ .start_time }}"{{ end }}{{ if .username }}, username: "{{ .username }}"{{ end }}) { nodes { id spent_at: spentAt summary time_spent: timeSpent user { id username name } project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: end_date + in: query + required: false + description: List timelogs within a date range where the logged date is equal to or before endDate. + schema: + type: string + - name: end_time + in: query + required: false + description: List timelogs within a time range where the logged time is equal to or before endTime. + schema: + type: string + - name: group_id + in: query + required: false + description: List timelogs for a group. + schema: + type: string + - name: project_id + in: query + required: false + description: List timelogs for a project. + schema: + type: string + - name: sort + in: query + required: false + description: List timelogs in a particular order. + schema: + type: string + enum: + - SPENT_AT_ASC + - SPENT_AT_DESC + - TIME_SPENT_ASC + - TIME_SPENT_DESC + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - name: start_date + in: query + required: false + description: List timelogs within a date range where the logged date is equal to or after startDate. + schema: + type: string + - name: start_time + in: query + required: false + description: List timelogs within a time range where the logged time is equal to or after startTime. + schema: + type: string + - name: username + in: query + required: false + description: List timelogs for a user. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + timelogs: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: Internal ID of the timelog. + spent_at: + type: string + description: Timestamp of when the time tracked was spent at. + summary: + type: string + description: Summary of how the time was spent. + time_spent: + type: integer + description: Time spent displayed in seconds. + user: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project&method=get: + post: + operationId: project_get + summary: Find a project. + description: Find a project. Generated from the GitLab GraphQL schema field Query.project (Project). + externalDocs: + description: 'GitLab GraphQL API reference: Query.project' + url: https://docs.gitlab.com/api/graphql/reference/#queryproject + x-stackQL-graphQL: + id: gitlab.projects.project.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { actual_repository_size_limit: actualRepositorySizeLimit admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_merge_on_skipped_pipeline: allowMergeOnSkippedPipeline allows_multiple_merge_request_assignees: allowsMultipleMergeRequestAssignees allows_multiple_merge_request_reviewers: allowsMultipleMergeRequestReviewers archived autoclose_referenced_issues: autocloseReferencedIssues avatar_url: avatarUrl ci_config_path_or_default: ciConfigPathOrDefault container_registry_enabled: containerRegistryEnabled container_scanning_for_registry_enabled: containerScanningForRegistryEnabled created_at: createdAt description edit_path: editPath forks_count: forksCount full_path: fullPath has_jira_vulnerability_issue_creation_enabled: hasJiraVulnerabilityIssueCreationEnabled http_url_to_repo: httpUrlToRepo id import_status: importStatus is_forked: isForked issues_enabled: issuesEnabled jira_import_status: jiraImportStatus jobs_enabled: jobsEnabled last_activity_at: lastActivityAt lfs_enabled: lfsEnabled merge_commit_template: mergeCommitTemplate merge_request_title_regex: mergeRequestTitleRegex merge_request_title_regex_description: mergeRequestTitleRegexDescription merge_requests_disable_committers_approval: mergeRequestsDisableCommittersApproval merge_requests_enabled: mergeRequestsEnabled merge_requests_ff_only_enabled: mergeRequestsFfOnlyEnabled name name_with_namespace: nameWithNamespace only_allow_merge_if_all_discussions_are_resolved: onlyAllowMergeIfAllDiscussionsAreResolved only_allow_merge_if_all_status_checks_passed: onlyAllowMergeIfAllStatusChecksPassed only_allow_merge_if_pipeline_succeeds: onlyAllowMergeIfPipelineSucceeds open_issues_count: openIssuesCount open_merge_requests_count: openMergeRequestsCount pages_force_https: pagesForceHttps pages_use_unique_domain: pagesUseUniqueDomain path pre_receive_secret_detection_enabled: preReceiveSecretDetectionEnabled prevent_merge_without_jira_issue_enabled: preventMergeWithoutJiraIssueEnabled printing_merge_request_link_enabled: printingMergeRequestLinkEnabled public_jobs: publicJobs remove_source_branch_after_merge: removeSourceBranchAfterMerge repository_size_excess: repositorySizeExcess request_access_enabled: requestAccessEnabled secret_push_protection_enabled: secretPushProtectionEnabled security_configuration_path: securityConfigurationPath security_dashboard_path: securityDashboardPath service_desk_address: serviceDeskAddress service_desk_enabled: serviceDeskEnabled shared_runners_enabled: sharedRunnersEnabled snippets_enabled: snippetsEnabled squash_commit_template: squashCommitTemplate squash_read_only: squashReadOnly ssh_url_to_repo: sshUrlToRepo star_count: starCount suggestion_commit_message: suggestionCommitMessage topics updated_at: updatedAt visibility web_path: webPath web_url: webUrl wiki_enabled: wikiEnabled namespace { id full_path: fullPath name } group_: group { id full_path: fullPath name } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project. For example, `gitlab-org/gitlab-foss`. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for the repository in bytes. + admin_edit_path: + type: string + description: Admin path for editing project. Only available to admins. + admin_show_path: + type: string + description: Admin path of the project. Only available to admins. + allow_merge_on_skipped_pipeline: + type: boolean + description: If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. + allows_multiple_merge_request_assignees: + type: boolean + description: Project allows assigning multiple users to a merge request. + allows_multiple_merge_request_reviewers: + type: boolean + description: Project allows assigning multiple reviewers to a merge request. + archived: + type: boolean + description: Indicates if the project or any ancestor is archived. + autoclose_referenced_issues: + type: boolean + description: Indicates if issues referenced by merge requests and commits within the default branch are closed automatically. + avatar_url: + type: string + description: Avatar URL of the project. + ci_config_path_or_default: + type: string + description: Path of the CI configuration file. + container_registry_enabled: + type: boolean + description: Indicates if Container registry is enabled for the current user + container_scanning_for_registry_enabled: + type: boolean + description: Indicates whether container scanning for registry is enabled or not for the project. Returns `null` if unauthorized. + created_at: + type: string + description: Timestamp of the project creation. + description: + type: string + description: Short description of the project. + edit_path: + type: string + description: Path for editing project. + forks_count: + type: integer + description: Number of times the project has been forked. + full_path: + type: string + description: Full path of the project. + has_jira_vulnerability_issue_creation_enabled: + type: boolean + description: Indicates whether Jira issue creation from vulnerabilities is enabled. + http_url_to_repo: + type: string + description: URL to connect to the project via HTTPS. + id: + type: string + description: ID of the project. + import_status: + type: string + description: Status of import background job of the project. + is_forked: + type: boolean + description: Project is forked. + issues_enabled: + type: boolean + description: Indicates if Issues are enabled for the current user + jira_import_status: + type: string + description: Status of Jira import background job of the project. + jobs_enabled: + type: boolean + description: Indicates if CI/CD pipeline jobs are enabled for the current user. + last_activity_at: + type: string + description: Timestamp of the project last activity. + lfs_enabled: + type: boolean + description: Indicates if the project has Large File Storage (LFS) enabled. + merge_commit_template: + type: string + description: Template used to create merge commit message in merge requests. + merge_request_title_regex: + type: string + description: Regex used to validate the title of merge requests. + merge_request_title_regex_description: + type: string + description: Description of the regex used to validate the title of merge requests. + merge_requests_disable_committers_approval: + type: boolean + description: Indicates that committers of the given merge request cannot approve. + merge_requests_enabled: + type: boolean + description: Indicates if Merge requests are enabled for the current user + merge_requests_ff_only_enabled: + type: boolean + description: Indicates if no merge commits should be created and all merges should instead be fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded. + name: + type: string + description: Name of the project without the namespace. + name_with_namespace: + type: string + description: Name of the project including the namespace. + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Indicates if merge requests of the project can only be merged when all the discussions are resolved. + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Indicates that merges of merge requests should be blocked unless all status checks have passed. + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Indicates if merge requests of the project can only be merged with successful jobs. + open_issues_count: + type: integer + description: Number of open issues for the project. + open_merge_requests_count: + type: integer + description: Number of open merge requests for the project. + pages_force_https: + type: boolean + description: Project's Pages site redirects unsecured connections to HTTPS. + pages_use_unique_domain: + type: boolean + description: Project's Pages site uses a unique subdomain. + path: + type: string + description: Path of the project. + pre_receive_secret_detection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + prevent_merge_without_jira_issue_enabled: + type: boolean + description: Indicates if an associated issue from Jira is required. + printing_merge_request_link_enabled: + type: boolean + description: Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line. + public_jobs: + type: boolean + description: Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts. + remove_source_branch_after_merge: + type: boolean + description: Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project. + repository_size_excess: + type: number + description: Size of repository that exceeds the limit in bytes. + request_access_enabled: + type: boolean + description: Indicates if users can request member access to the project. + secret_push_protection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + security_configuration_path: + type: string + description: Path to project's security configuration. + security_dashboard_path: + type: string + description: Path to project's security dashboard. + service_desk_address: + type: string + description: E-mail address of the Service Desk. + service_desk_enabled: + type: boolean + description: Indicates if the project has Service Desk enabled. + shared_runners_enabled: + type: boolean + description: Indicates if shared runners are enabled for the project. + snippets_enabled: + type: boolean + description: Indicates if Snippets are enabled for the current user + squash_commit_template: + type: string + description: Template used to create squash commit message in merge requests. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + ssh_url_to_repo: + type: string + description: URL to connect to the project via SSH. + star_count: + type: integer + description: Number of times the project has been starred. + suggestion_commit_message: + type: string + description: Commit message used to apply merge request suggestions. + topics: + type: array + items: + type: string + description: List of project topics. + updated_at: + type: string + description: Timestamp of when the project was last updated. + visibility: + type: string + description: Visibility of the project. + web_path: + type: string + description: Web path of the project. + web_url: + type: string + description: Web URL of the project. + wiki_enabled: + type: boolean + description: Indicates if Wikis are enabled for the current user + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=projects&method=list: + post: + operationId: projects_list + summary: Find projects visible to the current user. + description: Find projects visible to the current user. Generated from the GitLab GraphQL schema field Query.projects (connection of Project nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.projects' + url: https://docs.gitlab.com/api/graphql/reference/#queryprojects + x-stackQL-graphQL: + id: gitlab.projects.projects.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.projects.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.projects.pageInfo.endCursor + terminateOnJsonPath: $.data.projects.pageInfo.hasNextPage + query: 'query { projects(first: 100{{ .cursor }}{{ if .active }}, active: {{ .active }}{{ end }}{{ if .aimed_for_deletion }}, aimedForDeletion: {{ .aimed_for_deletion }}{{ end }}{{ if .archived }}, archived: {{ .archived }}{{ end }}{{ if .include_hidden }}, includeHidden: {{ .include_hidden }}{{ end }}{{ if .last_repository_check_failed }}, lastRepositoryCheckFailed: {{ .last_repository_check_failed }}{{ end }}{{ if .marked_for_deletion_on }}, markedForDeletionOn: "{{ .marked_for_deletion_on }}"{{ end }}{{ if .membership }}, membership: {{ .membership }}{{ end }}{{ if .min_access_level }}, minAccessLevel: {{ .min_access_level }}{{ end }}{{ if .namespace_path }}, namespacePath: "{{ .namespace_path }}"{{ end }}{{ if .not_aimed_for_deletion }}, notAimedForDeletion: {{ .not_aimed_for_deletion }}{{ end }}{{ if .personal }}, personal: {{ .personal }}{{ end }}{{ if .programming_language_name }}, programmingLanguageName: "{{ .programming_language_name }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .search_namespaces }}, searchNamespaces: {{ .search_namespaces }}{{ end }}{{ if .sort }}, sort: "{{ .sort }}"{{ end }}{{ if .visibility_level }}, visibilityLevel: {{ .visibility_level }}{{ end }}{{ if .with_issues_enabled }}, withIssuesEnabled: {{ .with_issues_enabled }}{{ end }}{{ if .with_merge_requests_enabled }}, withMergeRequestsEnabled: {{ .with_merge_requests_enabled }}{{ end }}) { nodes { actual_repository_size_limit: actualRepositorySizeLimit admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_merge_on_skipped_pipeline: allowMergeOnSkippedPipeline allows_multiple_merge_request_assignees: allowsMultipleMergeRequestAssignees allows_multiple_merge_request_reviewers: allowsMultipleMergeRequestReviewers archived autoclose_referenced_issues: autocloseReferencedIssues avatar_url: avatarUrl ci_config_path_or_default: ciConfigPathOrDefault container_registry_enabled: containerRegistryEnabled container_scanning_for_registry_enabled: containerScanningForRegistryEnabled created_at: createdAt description edit_path: editPath forks_count: forksCount full_path: fullPath has_jira_vulnerability_issue_creation_enabled: hasJiraVulnerabilityIssueCreationEnabled http_url_to_repo: httpUrlToRepo id import_status: importStatus is_forked: isForked issues_enabled: issuesEnabled jira_import_status: jiraImportStatus jobs_enabled: jobsEnabled last_activity_at: lastActivityAt lfs_enabled: lfsEnabled merge_commit_template: mergeCommitTemplate merge_request_title_regex: mergeRequestTitleRegex merge_request_title_regex_description: mergeRequestTitleRegexDescription merge_requests_disable_committers_approval: mergeRequestsDisableCommittersApproval merge_requests_enabled: mergeRequestsEnabled merge_requests_ff_only_enabled: mergeRequestsFfOnlyEnabled name name_with_namespace: nameWithNamespace only_allow_merge_if_all_discussions_are_resolved: onlyAllowMergeIfAllDiscussionsAreResolved only_allow_merge_if_all_status_checks_passed: onlyAllowMergeIfAllStatusChecksPassed only_allow_merge_if_pipeline_succeeds: onlyAllowMergeIfPipelineSucceeds open_issues_count: openIssuesCount open_merge_requests_count: openMergeRequestsCount pages_force_https: pagesForceHttps pages_use_unique_domain: pagesUseUniqueDomain path pre_receive_secret_detection_enabled: preReceiveSecretDetectionEnabled prevent_merge_without_jira_issue_enabled: preventMergeWithoutJiraIssueEnabled printing_merge_request_link_enabled: printingMergeRequestLinkEnabled public_jobs: publicJobs remove_source_branch_after_merge: removeSourceBranchAfterMerge repository_size_excess: repositorySizeExcess request_access_enabled: requestAccessEnabled secret_push_protection_enabled: secretPushProtectionEnabled security_configuration_path: securityConfigurationPath security_dashboard_path: securityDashboardPath service_desk_address: serviceDeskAddress service_desk_enabled: serviceDeskEnabled shared_runners_enabled: sharedRunnersEnabled snippets_enabled: snippetsEnabled squash_commit_template: squashCommitTemplate squash_read_only: squashReadOnly ssh_url_to_repo: sshUrlToRepo star_count: starCount suggestion_commit_message: suggestionCommitMessage topics updated_at: updatedAt visibility web_path: webPath web_url: webUrl wiki_enabled: wikiEnabled namespace { id full_path: fullPath name } group_: group { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: active + in: query + required: false + description: Filters by projects that are not archived and not marked for deletion. + schema: + type: boolean + - name: aimed_for_deletion + in: query + required: false + description: Return only projects marked for deletion. + schema: + type: boolean + - name: archived + in: query + required: false + description: Filter projects by archived status. + schema: + type: string + enum: + - ONLY + - INCLUDE + - EXCLUDE + - name: include_hidden + in: query + required: false + description: Include hidden projects. + schema: + type: boolean + - name: last_repository_check_failed + in: query + required: false + description: Return only projects where the last repository check failed. Only available for administrators. + schema: + type: boolean + - name: marked_for_deletion_on + in: query + required: false + description: Date when the project was marked for deletion. + schema: + type: string + - name: membership + in: query + required: false + description: Return only projects that the current user is a member of. + schema: + type: boolean + - name: min_access_level + in: query + required: false + description: Return only projects where current user has at least the specified access level. + schema: + type: string + enum: + - NO_ACCESS + - MINIMAL_ACCESS + - GUEST + - PLANNER + - REPORTER + - SECURITY_MANAGER + - DEVELOPER + - MAINTAINER + - OWNER + - ADMIN + - name: namespace_path + in: query + required: false + description: Filter projects by their namespace's full path (group or user). + schema: + type: string + - name: not_aimed_for_deletion + in: query + required: false + description: Exclude projects that are marked for deletion. + schema: + type: boolean + - name: personal + in: query + required: false + description: Return only personal projects. + schema: + type: boolean + - name: programming_language_name + in: query + required: false + description: 'Filter projects by programming language name (case insensitive). For example: `css` or `ruby`.' + schema: + type: string + - name: search + in: query + required: false + description: Search query, which can be for the project name, a path, or a description. + schema: + type: string + - name: search_namespaces + in: query + required: false + description: Include namespace in project search. + schema: + type: boolean + - name: sort + in: query + required: false + description: 'Sort order of results. Format: `_`, for example: `id_desc` or `name_asc`. Defaults to `id_desc`, or `similarity` if search used.' + schema: + type: string + - name: visibility_level + in: query + required: false + description: Filter projects by visibility level. + schema: + type: string + enum: + - private + - internal + - public + - name: with_issues_enabled + in: query + required: false + description: Return only projects with issues enabled. + schema: + type: boolean + - name: with_merge_requests_enabled + in: query + required: false + description: Return only projects with merge requests enabled. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + projects: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for the repository in bytes. + admin_edit_path: + type: string + description: Admin path for editing project. Only available to admins. + admin_show_path: + type: string + description: Admin path of the project. Only available to admins. + allow_merge_on_skipped_pipeline: + type: boolean + description: If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. + allows_multiple_merge_request_assignees: + type: boolean + description: Project allows assigning multiple users to a merge request. + allows_multiple_merge_request_reviewers: + type: boolean + description: Project allows assigning multiple reviewers to a merge request. + archived: + type: boolean + description: Indicates if the project or any ancestor is archived. + autoclose_referenced_issues: + type: boolean + description: Indicates if issues referenced by merge requests and commits within the default branch are closed automatically. + avatar_url: + type: string + description: Avatar URL of the project. + ci_config_path_or_default: + type: string + description: Path of the CI configuration file. + container_registry_enabled: + type: boolean + description: Indicates if Container registry is enabled for the current user + container_scanning_for_registry_enabled: + type: boolean + description: Indicates whether container scanning for registry is enabled or not for the project. Returns `null` if unauthorized. + created_at: + type: string + description: Timestamp of the project creation. + description: + type: string + description: Short description of the project. + edit_path: + type: string + description: Path for editing project. + forks_count: + type: integer + description: Number of times the project has been forked. + full_path: + type: string + description: Full path of the project. + has_jira_vulnerability_issue_creation_enabled: + type: boolean + description: Indicates whether Jira issue creation from vulnerabilities is enabled. + http_url_to_repo: + type: string + description: URL to connect to the project via HTTPS. + id: + type: string + description: ID of the project. + import_status: + type: string + description: Status of import background job of the project. + is_forked: + type: boolean + description: Project is forked. + issues_enabled: + type: boolean + description: Indicates if Issues are enabled for the current user + jira_import_status: + type: string + description: Status of Jira import background job of the project. + jobs_enabled: + type: boolean + description: Indicates if CI/CD pipeline jobs are enabled for the current user. + last_activity_at: + type: string + description: Timestamp of the project last activity. + lfs_enabled: + type: boolean + description: Indicates if the project has Large File Storage (LFS) enabled. + merge_commit_template: + type: string + description: Template used to create merge commit message in merge requests. + merge_request_title_regex: + type: string + description: Regex used to validate the title of merge requests. + merge_request_title_regex_description: + type: string + description: Description of the regex used to validate the title of merge requests. + merge_requests_disable_committers_approval: + type: boolean + description: Indicates that committers of the given merge request cannot approve. + merge_requests_enabled: + type: boolean + description: Indicates if Merge requests are enabled for the current user + merge_requests_ff_only_enabled: + type: boolean + description: Indicates if no merge commits should be created and all merges should instead be fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded. + name: + type: string + description: Name of the project without the namespace. + name_with_namespace: + type: string + description: Name of the project including the namespace. + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Indicates if merge requests of the project can only be merged when all the discussions are resolved. + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Indicates that merges of merge requests should be blocked unless all status checks have passed. + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Indicates if merge requests of the project can only be merged with successful jobs. + open_issues_count: + type: integer + description: Number of open issues for the project. + open_merge_requests_count: + type: integer + description: Number of open merge requests for the project. + pages_force_https: + type: boolean + description: Project's Pages site redirects unsecured connections to HTTPS. + pages_use_unique_domain: + type: boolean + description: Project's Pages site uses a unique subdomain. + path: + type: string + description: Path of the project. + pre_receive_secret_detection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + prevent_merge_without_jira_issue_enabled: + type: boolean + description: Indicates if an associated issue from Jira is required. + printing_merge_request_link_enabled: + type: boolean + description: Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line. + public_jobs: + type: boolean + description: Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts. + remove_source_branch_after_merge: + type: boolean + description: Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project. + repository_size_excess: + type: number + description: Size of repository that exceeds the limit in bytes. + request_access_enabled: + type: boolean + description: Indicates if users can request member access to the project. + secret_push_protection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + security_configuration_path: + type: string + description: Path to project's security configuration. + security_dashboard_path: + type: string + description: Path to project's security dashboard. + service_desk_address: + type: string + description: E-mail address of the Service Desk. + service_desk_enabled: + type: boolean + description: Indicates if the project has Service Desk enabled. + shared_runners_enabled: + type: boolean + description: Indicates if shared runners are enabled for the project. + snippets_enabled: + type: boolean + description: Indicates if Snippets are enabled for the current user + squash_commit_template: + type: string + description: Template used to create squash commit message in merge requests. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + ssh_url_to_repo: + type: string + description: URL to connect to the project via SSH. + star_count: + type: integer + description: Number of times the project has been starred. + suggestion_commit_message: + type: string + description: Commit message used to apply merge request suggestions. + topics: + type: array + items: + type: string + description: List of project topics. + updated_at: + type: string + description: Timestamp of when the project was last updated. + visibility: + type: string + description: Visibility of the project. + web_path: + type: string + description: Web path of the project. + web_url: + type: string + description: Web URL of the project. + wiki_enabled: + type: boolean + description: Indicates if Wikis are enabled for the current user + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=topics&method=list: + post: + operationId: topics_list + summary: Find project topics. + description: Find project topics. Generated from the GitLab GraphQL schema field Query.topics (connection of Topic nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.topics' + url: https://docs.gitlab.com/api/graphql/reference/#querytopics + x-stackQL-graphQL: + id: gitlab.projects.topics.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.topics.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.topics.pageInfo.endCursor + terminateOnJsonPath: $.data.topics.pageInfo.hasNextPage + query: 'query { topics(first: 100{{ .cursor }}{{ if .search }}, search: "{{ .search }}"{{ end }}) { nodes { avatar_url: avatarUrl description id name title } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: search + in: query + required: false + description: Search query for topic name. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + topics: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + avatar_url: + type: string + description: URL to avatar image file of the topic. + description: + type: string + description: Description of the topic. + id: + type: string + description: ID of the topic. + name: + type: string + description: Name of the topic. + title: + type: string + description: Title of the topic. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + milestone: + id: gitlab.projects.milestone + name: milestone + title: Milestone + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=milestone&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.milestone + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/milestone/methods/get' + insert: [] + update: [] + delete: [] + project_agent_configurations: + id: gitlab.projects.project_agent_configurations + name: project_agent_configurations + title: Project Agent Configurations + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_agent_configurations&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.agentConfigurations.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_agent_configurations/methods/list' + insert: [] + update: [] + delete: [] + project_alert_management_alert_status_counts: + id: gitlab.projects.project_alert_management_alert_status_counts + name: project_alert_management_alert_status_counts + title: Project Alert Management Alert Status Counts + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_alert_management_alert_status_counts&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.alertManagementAlertStatusCounts + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_alert_management_alert_status_counts/methods/get' + insert: [] + update: [] + delete: [] + project_alert_management_alert: + id: gitlab.projects.project_alert_management_alert + name: project_alert_management_alert + title: Project Alert Management Alert + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_alert_management_alert&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.alertManagementAlert + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_alert_management_alert/methods/get' + insert: [] + update: [] + delete: [] + project_alert_management_alerts: + id: gitlab.projects.project_alert_management_alerts + name: project_alert_management_alerts + title: Project Alert Management Alerts + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_alert_management_alerts&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.alertManagementAlerts.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_alert_management_alerts/methods/list' + insert: [] + update: [] + delete: [] + project_alert_management_http_integrations: + id: gitlab.projects.project_alert_management_http_integrations + name: project_alert_management_http_integrations + title: Project Alert Management Http Integrations + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_alert_management_http_integrations&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.alertManagementHttpIntegrations.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_alert_management_http_integrations/methods/list' + insert: [] + update: [] + delete: [] + project_available_deploy_keys: + id: gitlab.projects.project_available_deploy_keys + name: project_available_deploy_keys + title: Project Available Deploy Keys + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_available_deploy_keys&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.availableDeployKeys.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_available_deploy_keys/methods/list' + insert: [] + update: [] + delete: [] + project_branch_rules: + id: gitlab.projects.project_branch_rules + name: project_branch_rules + title: Project Branch Rules + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_branch_rules&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.branchRules.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_branch_rules/methods/list' + insert: [] + update: [] + delete: [] + project_cluster_agent: + id: gitlab.projects.project_cluster_agent + name: project_cluster_agent + title: Project Cluster Agent + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_cluster_agent&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.clusterAgent + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_cluster_agent/methods/get' + insert: [] + update: [] + delete: [] + project_cluster_agents: + id: gitlab.projects.project_cluster_agents + name: project_cluster_agents + title: Project Cluster Agents + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_cluster_agents&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.clusterAgents.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_cluster_agents/methods/list' + insert: [] + update: [] + delete: [] + project_component_usages: + id: gitlab.projects.project_component_usages + name: project_component_usages + title: Project Component Usages + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_component_usages&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.componentUsages.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_component_usages/methods/list' + insert: [] + update: [] + delete: [] + project_data_transfer: + id: gitlab.projects.project_data_transfer + name: project_data_transfer + title: Project Data Transfer + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_data_transfer&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.dataTransfer + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_data_transfer/methods/get' + insert: [] + update: [] + delete: [] + project_deployment: + id: gitlab.projects.project_deployment + name: project_deployment + title: Project Deployment + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_deployment&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.deployment + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_deployment/methods/get' + insert: [] + update: [] + delete: [] + project_detailed_import_status: + id: gitlab.projects.project_detailed_import_status + name: project_detailed_import_status + title: Project Detailed Import Status + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_detailed_import_status&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.detailedImportStatus + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_detailed_import_status/methods/get' + insert: [] + update: [] + delete: [] + project_environment: + id: gitlab.projects.project_environment + name: project_environment + title: Project Environment + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_environment&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.environment + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_environment/methods/get' + insert: [] + update: [] + delete: [] + project_environments: + id: gitlab.projects.project_environments + name: project_environments + title: Project Environments + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_environments&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.environments.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_environments/methods/list' + insert: [] + update: [] + delete: [] + project_fork_targets: + id: gitlab.projects.project_fork_targets + name: project_fork_targets + title: Project Fork Targets + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_fork_targets&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.forkTargets.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_fork_targets/methods/list' + insert: [] + update: [] + delete: [] + project_forked_from: + id: gitlab.projects.project_forked_from + name: project_forked_from + title: Project Forked From + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_forked_from&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.forkedFrom + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_forked_from/methods/get' + insert: [] + update: [] + delete: [] + project_forking_access_level: + id: gitlab.projects.project_forking_access_level + name: project_forking_access_level + title: Project Forking Access Level + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_forking_access_level&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.forkingAccessLevel + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_forking_access_level/methods/get' + insert: [] + update: [] + delete: [] + project_group: + id: gitlab.projects.project_group + name: project_group + title: Project Group + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_group&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.group + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_group/methods/get' + insert: [] + update: [] + delete: [] + project_incident_management_escalation_policies: + id: gitlab.projects.project_incident_management_escalation_policies + name: project_incident_management_escalation_policies + title: Project Incident Management Escalation Policies + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_incident_management_escalation_policies&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.incidentManagementEscalationPolicies.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_incident_management_escalation_policies/methods/list' + insert: [] + update: [] + delete: [] + project_incident_management_escalation_policy: + id: gitlab.projects.project_incident_management_escalation_policy + name: project_incident_management_escalation_policy + title: Project Incident Management Escalation Policy + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_incident_management_escalation_policy&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.incidentManagementEscalationPolicy + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_incident_management_escalation_policy/methods/get' + insert: [] + update: [] + delete: [] + project_incident_management_oncall_schedules: + id: gitlab.projects.project_incident_management_oncall_schedules + name: project_incident_management_oncall_schedules + title: Project Incident Management Oncall Schedules + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_incident_management_oncall_schedules&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.incidentManagementOncallSchedules.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_incident_management_oncall_schedules/methods/list' + insert: [] + update: [] + delete: [] + project_incident_management_timeline_event: + id: gitlab.projects.project_incident_management_timeline_event + name: project_incident_management_timeline_event + title: Project Incident Management Timeline Event + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_incident_management_timeline_event&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.incidentManagementTimelineEvent + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_incident_management_timeline_event/methods/get' + insert: [] + update: [] + delete: [] + project_incident_management_timeline_events: + id: gitlab.projects.project_incident_management_timeline_events + name: project_incident_management_timeline_events + title: Project Incident Management Timeline Events + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_incident_management_timeline_events&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.incidentManagementTimelineEvents.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_incident_management_timeline_events/methods/list' + insert: [] + update: [] + delete: [] + project_iteration_cadences: + id: gitlab.projects.project_iteration_cadences + name: project_iteration_cadences + title: Project Iteration Cadences + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_iteration_cadences&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.iterationCadences.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_iteration_cadences/methods/list' + insert: [] + update: [] + delete: [] + project_iterations: + id: gitlab.projects.project_iterations + name: project_iterations + title: Project Iterations + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_iterations&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.iterations.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_iterations/methods/list' + insert: [] + update: [] + delete: [] + project_jira_imports: + id: gitlab.projects.project_jira_imports + name: project_jira_imports + title: Project Jira Imports + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_jira_imports&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.jiraImports.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_jira_imports/methods/list' + insert: [] + update: [] + delete: [] + project_label: + id: gitlab.projects.project_label + name: project_label + title: Project Label + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_label&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.label + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_label/methods/get' + insert: [] + update: [] + delete: [] + project_labels: + id: gitlab.projects.project_labels + name: project_labels + title: Project Labels + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_labels&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.labels.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_labels/methods/list' + insert: [] + update: [] + delete: [] + project_max_access_level: + id: gitlab.projects.project_max_access_level + name: project_max_access_level + title: Project Max Access Level + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_max_access_level&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.maxAccessLevel + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_max_access_level/methods/get' + insert: [] + update: [] + delete: [] + project_milestones: + id: gitlab.projects.project_milestones + name: project_milestones + title: Project Milestones + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_milestones&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.milestones.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_milestones/methods/list' + insert: [] + update: [] + delete: [] + project_namespace: + id: gitlab.projects.project_namespace + name: project_namespace + title: Project Namespace + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_namespace&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.namespace + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_namespace/methods/get' + insert: [] + update: [] + delete: [] + project_nested_environments: + id: gitlab.projects.project_nested_environments + name: project_nested_environments + title: Project Nested Environments + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_nested_environments&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.nestedEnvironments.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_nested_environments/methods/list' + insert: [] + update: [] + delete: [] + project_pages_deployments: + id: gitlab.projects.project_pages_deployments + name: project_pages_deployments + title: Project Pages Deployments + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_pages_deployments&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.pagesDeployments.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_pages_deployments/methods/list' + insert: [] + update: [] + delete: [] + project_path_locks: + id: gitlab.projects.project_path_locks + name: project_path_locks + title: Project Path Locks + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_path_locks&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.pathLocks.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_path_locks/methods/list' + insert: [] + update: [] + delete: [] + project_pending_member_approvals: + id: gitlab.projects.project_pending_member_approvals + name: project_pending_member_approvals + title: Project Pending Member Approvals + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_pending_member_approvals&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.pendingMemberApprovals.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_pending_member_approvals/methods/list' + insert: [] + update: [] + delete: [] + project_push_rules: + id: gitlab.projects.project_push_rules + name: project_push_rules + title: Project Push Rules + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_push_rules&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.pushRules + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_push_rules/methods/get' + insert: [] + update: [] + delete: [] + project_release: + id: gitlab.projects.project_release + name: project_release + title: Project Release + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_release&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.release + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_release/methods/get' + insert: [] + update: [] + delete: [] + project_releases: + id: gitlab.projects.project_releases + name: project_releases + title: Project Releases + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_releases&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.releases.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_releases/methods/list' + insert: [] + update: [] + delete: [] + project_repository: + id: gitlab.projects.project_repository + name: project_repository + title: Project Repository + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_repository&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.repository + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_repository/methods/get' + insert: [] + update: [] + delete: [] + project_requirement_states_count: + id: gitlab.projects.project_requirement_states_count + name: project_requirement_states_count + title: Project Requirement States Count + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_requirement_states_count&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.requirementStatesCount + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_requirement_states_count/methods/get' + insert: [] + update: [] + delete: [] + project_requirement: + id: gitlab.projects.project_requirement + name: project_requirement + title: Project Requirement + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_requirement&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.requirement + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_requirement/methods/get' + insert: [] + update: [] + delete: [] + project_requirements: + id: gitlab.projects.project_requirements + name: project_requirements + title: Project Requirements + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_requirements&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.requirements.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_requirements/methods/list' + insert: [] + update: [] + delete: [] + project_root_group: + id: gitlab.projects.project_root_group + name: project_root_group + title: Project Root Group + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_root_group&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.rootGroup + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_root_group/methods/get' + insert: [] + update: [] + delete: [] + project_saved_replies: + id: gitlab.projects.project_saved_replies + name: project_saved_replies + title: Project Saved Replies + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_saved_replies&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.savedReplies.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_saved_replies/methods/list' + insert: [] + update: [] + delete: [] + project_saved_reply: + id: gitlab.projects.project_saved_reply + name: project_saved_reply + title: Project Saved Reply + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_saved_reply&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.savedReply + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_saved_reply/methods/get' + insert: [] + update: [] + delete: [] + project_sentry_detailed_error: + id: gitlab.projects.project_sentry_detailed_error + name: project_sentry_detailed_error + title: Project Sentry Detailed Error + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_sentry_detailed_error&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.sentryDetailedError + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_sentry_detailed_error/methods/get' + insert: [] + update: [] + delete: [] + project_sentry_errors: + id: gitlab.projects.project_sentry_errors + name: project_sentry_errors + title: Project Sentry Errors + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_sentry_errors&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.sentryErrors + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_sentry_errors/methods/get' + insert: [] + update: [] + delete: [] + project_statistics_details_paths: + id: gitlab.projects.project_statistics_details_paths + name: project_statistics_details_paths + title: Project Statistics Details Paths + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_statistics_details_paths&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.statisticsDetailsPaths + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_statistics_details_paths/methods/get' + insert: [] + update: [] + delete: [] + project_statistics: + id: gitlab.projects.project_statistics + name: project_statistics + title: Project Statistics + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_statistics&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.statistics + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_statistics/methods/get' + insert: [] + update: [] + delete: [] + project_target_branch_rules: + id: gitlab.projects.project_target_branch_rules + name: project_target_branch_rules + title: Project Target Branch Rules + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_target_branch_rules&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.targetBranchRules.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_target_branch_rules/methods/list' + insert: [] + update: [] + delete: [] + project_terraform_state: + id: gitlab.projects.project_terraform_state + name: project_terraform_state + title: Project Terraform State + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_terraform_state&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.terraformState + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_terraform_state/methods/get' + insert: [] + update: [] + delete: [] + project_terraform_states: + id: gitlab.projects.project_terraform_states + name: project_terraform_states + title: Project Terraform States + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_terraform_states&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.terraformStates.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_terraform_states/methods/list' + insert: [] + update: [] + delete: [] + project_timelogs: + id: gitlab.projects.project_timelogs + name: project_timelogs + title: Project Timelogs + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_timelogs&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.timelogs.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_timelogs/methods/list' + insert: [] + update: [] + delete: [] + project: + id: gitlab.projects.project + name: project + title: Project + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project/methods/get' + insert: [] + update: [] + delete: [] + projects: + id: gitlab.projects.projects + name: projects + title: Projects + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=projects&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.projects.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/projects/methods/list' + insert: [] + update: [] + delete: [] + topics: + id: gitlab.projects.topics + name: topics + title: Topics + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=topics&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.topics.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/topics/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/security.yaml b/providers/src/gitlab/v00.00.00000/services/security.yaml new file mode 100644 index 00000000..6b80cfda --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/security.yaml @@ -0,0 +1,6395 @@ +openapi: 3.0.3 +info: + title: security API + description: 'Security and compliance - vulnerabilities, vulnerability statistics and scanners, security policies, dependencies (SBOM), DAST profiles and compliance frameworks. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=dependency&method=get: + post: + operationId: dependency_get + summary: Find a dependency. + description: Find a dependency. Generated from the GitLab GraphQL schema field Query.dependency (Dependency). + externalDocs: + description: 'GitLab GraphQL API reference: Query.dependency' + url: https://docs.gitlab.com/api/graphql/reference/#querydependency + x-stackQL-graphQL: + id: gitlab.security.dependency.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { dependency(id: "{{ .id }}") { id name packager reachability vulnerability_count: vulnerabilityCount } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Global ID of the Dependency. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + dependency: + type: object + properties: + id: + type: string + description: ID of the dependency. + name: + type: string + description: Name of the dependency. + packager: + type: string + enum: + - BUNDLER + - YARN + - NPM + - PNPM + - BUN + - MAVEN + - COMPOSER + - PIP + - CONAN + - GO + - NUGET + - SBT + - GRADLE + - PIPENV + - POETRY + - SETUPTOOLS + - APK + - CONDA + - PUB + - CARGO + description: Description of the tool used to manage the dependency. + reachability: + type: string + enum: + - UNKNOWN + - IN_USE + - NOT_FOUND + description: Information about reachability of a dependency. + vulnerability_count: + type: integer + description: Number of vulnerabilities within the dependency. + /api/graphql?resource=group_approval_policies&method=list: + post: + operationId: group_approval_policies_list + summary: Approval Policies of the project + description: Approval Policies of the project Generated from the GitLab GraphQL schema field Group.approvalPolicies (connection of ApprovalPolicy nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.approvalPolicies' + url: https://docs.gitlab.com/api/graphql/reference/#groupapprovalpolicies + x-stackQL-graphQL: + id: gitlab.security.group_approval_policies.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.approvalPolicies.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.approvalPolicies.pageInfo.endCursor + terminateOnJsonPath: $.data.group.approvalPolicies.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { approvalPolicies(first: 100{{ .cursor }}{{ if .deduplicate_policies }}, deduplicatePolicies: {{ .deduplicate_policies }}{{ end }}{{ if .include_unscoped }}, includeUnscoped: {{ .include_unscoped }}{{ end }}{{ if .relationship }}, relationship: {{ .relationship }}{{ end }}) { nodes { description edit_path: editPath enabled enforcement_type: enforcementType name role_approvers: roleApprovers updated_at: updatedAt yaml } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: deduplicate_policies + in: query + required: false + description: Remove duplicate policies when the same policy is applied via multiple routes. + schema: + type: boolean + - name: include_unscoped + in: query + required: false + description: Filter policies that are scoped to the project. + schema: + type: boolean + - name: relationship + in: query + required: false + description: Filter policies by the given policy relationship. Default is DIRECT. + schema: + type: string + enum: + - DIRECT + - INHERITED + - INHERITED_ONLY + - DESCENDANT + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + approvalPolicies: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the policy. + edit_path: + type: string + description: URL of policy edit page. + enabled: + type: boolean + description: Indicates whether the policy is enabled. + enforcement_type: + type: string + enum: + - ENFORCE + - WARN + description: Enforcement type of the policy. Can be "enforce" or "warn". + name: + type: string + description: Name of the policy. + role_approvers: + type: array + items: + type: string + enum: + - GUEST + - PLANNER + - REPORTER + - SECURITY_MANAGER + - DEVELOPER + - MAINTAINER + - OWNER + description: Approvers of the role type. Users belonging to these role(s) alone will be approvers. + updated_at: + type: string + description: Timestamp of when the policy YAML was last updated. + yaml: + type: string + description: YAML definition of the policy. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_compliance_frameworks&method=list: + post: + operationId: group_compliance_frameworks_list + summary: Compliance frameworks available to projects in this namespace. + description: Compliance frameworks available to projects in this namespace. Generated from the GitLab GraphQL schema field Group.complianceFrameworks (connection of ComplianceFramework nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.complianceFrameworks' + url: https://docs.gitlab.com/api/graphql/reference/#groupcomplianceframeworks + x-stackQL-graphQL: + id: gitlab.security.group_compliance_frameworks.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.complianceFrameworks.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.complianceFrameworks.pageInfo.endCursor + terminateOnJsonPath: $.data.group.complianceFrameworks.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { complianceFrameworks(first: 100{{ .cursor }}{{ if .id }}, id: "{{ .id }}"{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { color default_: default description edit_path: editPath id name namespace_id: namespaceId updated_at: updatedAt } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: id + in: query + required: false + description: Global ID of a specific compliance framework to return. + schema: + type: string + - name: search + in: query + required: false + description: Search framework with most similar names. + schema: + type: string + - name: sort + in: query + required: false + description: Sort compliance frameworks by the criteria. + schema: + type: string + enum: + - NAME_ASC + - NAME_DESC + - UPDATED_AT_ASC + - UPDATED_AT_DESC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + complianceFrameworks: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + color: + type: string + description: Hexadecimal representation of compliance framework's label color. + default_: + type: boolean + description: Default compliance framework for the group. + description: + type: string + description: Description of the compliance framework. + edit_path: + type: string + description: Web UI path to edit the compliance framework. + id: + type: string + description: Compliance framework ID. + name: + type: string + description: Name of the compliance framework. + namespace_id: + type: string + description: Namespace ID. + updated_at: + type: string + description: Timestamp of when the compliance framework was last updated. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_dependencies&method=list: + post: + operationId: group_dependencies_list + summary: Software dependencies used by projects under this group. + description: Software dependencies used by projects under this group. Generated from the GitLab GraphQL schema field Group.dependencies (connection of Dependency nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.dependencies' + url: https://docs.gitlab.com/api/graphql/reference/#groupdependencies + x-stackQL-graphQL: + id: gitlab.security.group_dependencies.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.dependencies.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.dependencies.pageInfo.endCursor + terminateOnJsonPath: $.data.group.dependencies.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { dependencies(first: 100{{ .cursor }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { id name packager reachability vulnerability_count: vulnerabilityCount } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: sort + in: query + required: false + description: Sort dependencies by given criteria. + schema: + type: string + enum: + - NAME_DESC + - NAME_ASC + - PACKAGER_DESC + - PACKAGER_ASC + - SEVERITY_DESC + - SEVERITY_ASC + - LICENSE_ASC + - LICENSE_DESC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + dependencies: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: ID of the dependency. + name: + type: string + description: Name of the dependency. + packager: + type: string + enum: + - BUNDLER + - YARN + - NPM + - PNPM + - BUN + - MAVEN + - COMPOSER + - PIP + - CONAN + - GO + - NUGET + - SBT + - GRADLE + - PIPENV + - POETRY + - SETUPTOOLS + - APK + - CONDA + - PUB + - CARGO + description: Description of the tool used to manage the dependency. + reachability: + type: string + enum: + - UNKNOWN + - IN_USE + - NOT_FOUND + description: Information about reachability of a dependency. + vulnerability_count: + type: integer + description: Number of vulnerabilities within the dependency. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_project_compliance_standards_adherence&method=list: + post: + operationId: group_project_compliance_standards_adherence_list + summary: Compliance standards adherence for the projects in a group and its subgroups. + description: Compliance standards adherence for the projects in a group and its subgroups. Generated from the GitLab GraphQL schema field Group.projectComplianceStandardsAdherence (connection of ComplianceStandardsAdherence nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.projectComplianceStandardsAdherence' + url: https://docs.gitlab.com/api/graphql/reference/#groupprojectcompliancestandardsadherence + x-stackQL-graphQL: + id: gitlab.security.group_project_compliance_standards_adherence.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.projectComplianceStandardsAdherence.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.projectComplianceStandardsAdherence.pageInfo.endCursor + terminateOnJsonPath: $.data.group.projectComplianceStandardsAdherence.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { projectComplianceStandardsAdherence(first: 100{{ .cursor }}) { nodes { check_name: checkName id standard status updated_at: updatedAt project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + projectComplianceStandardsAdherence: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + check_name: + type: string + enum: + - PREVENT_APPROVAL_BY_MERGE_REQUEST_AUTHOR + - PREVENT_APPROVAL_BY_MERGE_REQUEST_COMMITTERS + - AT_LEAST_TWO_APPROVALS + - AT_LEAST_ONE_NON_AUTHOR_APPROVAL + - SAST + - DAST + description: Name of the check for the compliance standard. + id: + type: string + description: Compliance standards adherence ID. + standard: + type: string + enum: + - GITLAB + - SOC2 + description: Name of the compliance standard. + status: + type: string + enum: + - SUCCESS + - FAIL + description: Status of the compliance standards adherence. + updated_at: + type: string + description: Timestamp when the adherence was updated. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_scan_execution_policies&method=list: + post: + operationId: group_scan_execution_policies_list + summary: Scan Execution Policies of the namespace. + description: Scan Execution Policies of the namespace. Generated from the GitLab GraphQL schema field Group.scanExecutionPolicies (connection of ScanExecutionPolicy nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.scanExecutionPolicies' + url: https://docs.gitlab.com/api/graphql/reference/#groupscanexecutionpolicies + x-stackQL-graphQL: + id: gitlab.security.group_scan_execution_policies.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.scanExecutionPolicies.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.scanExecutionPolicies.pageInfo.endCursor + terminateOnJsonPath: $.data.group.scanExecutionPolicies.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { scanExecutionPolicies(first: 100{{ .cursor }}{{ if .deduplicate_policies }}, deduplicatePolicies: {{ .deduplicate_policies }}{{ end }}{{ if .include_unscoped }}, includeUnscoped: {{ .include_unscoped }}{{ end }}{{ if .relationship }}, relationship: {{ .relationship }}{{ end }}) { nodes { description edit_path: editPath enabled name updated_at: updatedAt yaml } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: deduplicate_policies + in: query + required: false + description: Remove duplicate policies when the same policy is applied via multiple routes. + schema: + type: boolean + - name: include_unscoped + in: query + required: false + description: Filter policies that are scoped to the project. + schema: + type: boolean + - name: relationship + in: query + required: false + description: Filter policies by the given policy relationship. Default is DIRECT. + schema: + type: string + enum: + - DIRECT + - INHERITED + - INHERITED_ONLY + - DESCENDANT + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + scanExecutionPolicies: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the policy. + edit_path: + type: string + description: URL of policy edit page. + enabled: + type: boolean + description: Indicates whether the policy is enabled. + name: + type: string + description: Name of the policy. + updated_at: + type: string + description: Timestamp of when the policy YAML was last updated. + yaml: + type: string + description: YAML definition of the policy. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_security_policy_project_suggestions&method=list: + post: + operationId: group_security_policy_project_suggestions_list + summary: Security policy project suggestions + description: Security policy project suggestions Generated from the GitLab GraphQL schema field Group.securityPolicyProjectSuggestions (connection of Project nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.securityPolicyProjectSuggestions' + url: https://docs.gitlab.com/api/graphql/reference/#groupsecuritypolicyprojectsuggestions + x-stackQL-graphQL: + id: gitlab.security.group_security_policy_project_suggestions.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.securityPolicyProjectSuggestions.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.securityPolicyProjectSuggestions.pageInfo.endCursor + terminateOnJsonPath: $.data.group.securityPolicyProjectSuggestions.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { securityPolicyProjectSuggestions(first: 100{{ .cursor }}, search: "{{ .search }}"{{ if .only_linked }}, onlyLinked: {{ .only_linked }}{{ end }}) { nodes { actual_repository_size_limit: actualRepositorySizeLimit admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_merge_on_skipped_pipeline: allowMergeOnSkippedPipeline allows_multiple_merge_request_assignees: allowsMultipleMergeRequestAssignees allows_multiple_merge_request_reviewers: allowsMultipleMergeRequestReviewers archived autoclose_referenced_issues: autocloseReferencedIssues avatar_url: avatarUrl ci_config_path_or_default: ciConfigPathOrDefault container_registry_enabled: containerRegistryEnabled container_scanning_for_registry_enabled: containerScanningForRegistryEnabled created_at: createdAt description edit_path: editPath forks_count: forksCount full_path: fullPath has_jira_vulnerability_issue_creation_enabled: hasJiraVulnerabilityIssueCreationEnabled http_url_to_repo: httpUrlToRepo id import_status: importStatus is_forked: isForked issues_enabled: issuesEnabled jira_import_status: jiraImportStatus jobs_enabled: jobsEnabled last_activity_at: lastActivityAt lfs_enabled: lfsEnabled merge_commit_template: mergeCommitTemplate merge_request_title_regex: mergeRequestTitleRegex merge_request_title_regex_description: mergeRequestTitleRegexDescription merge_requests_disable_committers_approval: mergeRequestsDisableCommittersApproval merge_requests_enabled: mergeRequestsEnabled merge_requests_ff_only_enabled: mergeRequestsFfOnlyEnabled name name_with_namespace: nameWithNamespace only_allow_merge_if_all_discussions_are_resolved: onlyAllowMergeIfAllDiscussionsAreResolved only_allow_merge_if_all_status_checks_passed: onlyAllowMergeIfAllStatusChecksPassed only_allow_merge_if_pipeline_succeeds: onlyAllowMergeIfPipelineSucceeds open_issues_count: openIssuesCount open_merge_requests_count: openMergeRequestsCount pages_force_https: pagesForceHttps pages_use_unique_domain: pagesUseUniqueDomain path pre_receive_secret_detection_enabled: preReceiveSecretDetectionEnabled prevent_merge_without_jira_issue_enabled: preventMergeWithoutJiraIssueEnabled printing_merge_request_link_enabled: printingMergeRequestLinkEnabled public_jobs: publicJobs remove_source_branch_after_merge: removeSourceBranchAfterMerge repository_size_excess: repositorySizeExcess request_access_enabled: requestAccessEnabled secret_push_protection_enabled: secretPushProtectionEnabled security_configuration_path: securityConfigurationPath security_dashboard_path: securityDashboardPath service_desk_address: serviceDeskAddress service_desk_enabled: serviceDeskEnabled shared_runners_enabled: sharedRunnersEnabled snippets_enabled: snippetsEnabled squash_commit_template: squashCommitTemplate squash_read_only: squashReadOnly ssh_url_to_repo: sshUrlToRepo star_count: starCount suggestion_commit_message: suggestionCommitMessage topics updated_at: updatedAt visibility web_path: webPath web_url: webUrl wiki_enabled: wikiEnabled namespace { id full_path: fullPath name } group_: group { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: search + in: query + required: true + description: Search query for projects' full paths. + schema: + type: string + - name: only_linked + in: query + required: false + description: Whether to suggest only projects already linked as security policy projects. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + securityPolicyProjectSuggestions: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for the repository in bytes. + admin_edit_path: + type: string + description: Admin path for editing project. Only available to admins. + admin_show_path: + type: string + description: Admin path of the project. Only available to admins. + allow_merge_on_skipped_pipeline: + type: boolean + description: If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. + allows_multiple_merge_request_assignees: + type: boolean + description: Project allows assigning multiple users to a merge request. + allows_multiple_merge_request_reviewers: + type: boolean + description: Project allows assigning multiple reviewers to a merge request. + archived: + type: boolean + description: Indicates if the project or any ancestor is archived. + autoclose_referenced_issues: + type: boolean + description: Indicates if issues referenced by merge requests and commits within the default branch are closed automatically. + avatar_url: + type: string + description: Avatar URL of the project. + ci_config_path_or_default: + type: string + description: Path of the CI configuration file. + container_registry_enabled: + type: boolean + description: Indicates if Container registry is enabled for the current user + container_scanning_for_registry_enabled: + type: boolean + description: Indicates whether container scanning for registry is enabled or not for the project. Returns `null` if unauthorized. + created_at: + type: string + description: Timestamp of the project creation. + description: + type: string + description: Short description of the project. + edit_path: + type: string + description: Path for editing project. + forks_count: + type: integer + description: Number of times the project has been forked. + full_path: + type: string + description: Full path of the project. + has_jira_vulnerability_issue_creation_enabled: + type: boolean + description: Indicates whether Jira issue creation from vulnerabilities is enabled. + http_url_to_repo: + type: string + description: URL to connect to the project via HTTPS. + id: + type: string + description: ID of the project. + import_status: + type: string + description: Status of import background job of the project. + is_forked: + type: boolean + description: Project is forked. + issues_enabled: + type: boolean + description: Indicates if Issues are enabled for the current user + jira_import_status: + type: string + description: Status of Jira import background job of the project. + jobs_enabled: + type: boolean + description: Indicates if CI/CD pipeline jobs are enabled for the current user. + last_activity_at: + type: string + description: Timestamp of the project last activity. + lfs_enabled: + type: boolean + description: Indicates if the project has Large File Storage (LFS) enabled. + merge_commit_template: + type: string + description: Template used to create merge commit message in merge requests. + merge_request_title_regex: + type: string + description: Regex used to validate the title of merge requests. + merge_request_title_regex_description: + type: string + description: Description of the regex used to validate the title of merge requests. + merge_requests_disable_committers_approval: + type: boolean + description: Indicates that committers of the given merge request cannot approve. + merge_requests_enabled: + type: boolean + description: Indicates if Merge requests are enabled for the current user + merge_requests_ff_only_enabled: + type: boolean + description: Indicates if no merge commits should be created and all merges should instead be fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded. + name: + type: string + description: Name of the project without the namespace. + name_with_namespace: + type: string + description: Name of the project including the namespace. + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Indicates if merge requests of the project can only be merged when all the discussions are resolved. + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Indicates that merges of merge requests should be blocked unless all status checks have passed. + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Indicates if merge requests of the project can only be merged with successful jobs. + open_issues_count: + type: integer + description: Number of open issues for the project. + open_merge_requests_count: + type: integer + description: Number of open merge requests for the project. + pages_force_https: + type: boolean + description: Project's Pages site redirects unsecured connections to HTTPS. + pages_use_unique_domain: + type: boolean + description: Project's Pages site uses a unique subdomain. + path: + type: string + description: Path of the project. + pre_receive_secret_detection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + prevent_merge_without_jira_issue_enabled: + type: boolean + description: Indicates if an associated issue from Jira is required. + printing_merge_request_link_enabled: + type: boolean + description: Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line. + public_jobs: + type: boolean + description: Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts. + remove_source_branch_after_merge: + type: boolean + description: Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project. + repository_size_excess: + type: number + description: Size of repository that exceeds the limit in bytes. + request_access_enabled: + type: boolean + description: Indicates if users can request member access to the project. + secret_push_protection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + security_configuration_path: + type: string + description: Path to project's security configuration. + security_dashboard_path: + type: string + description: Path to project's security dashboard. + service_desk_address: + type: string + description: E-mail address of the Service Desk. + service_desk_enabled: + type: boolean + description: Indicates if the project has Service Desk enabled. + shared_runners_enabled: + type: boolean + description: Indicates if shared runners are enabled for the project. + snippets_enabled: + type: boolean + description: Indicates if Snippets are enabled for the current user + squash_commit_template: + type: string + description: Template used to create squash commit message in merge requests. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + ssh_url_to_repo: + type: string + description: URL to connect to the project via SSH. + star_count: + type: integer + description: Number of times the project has been starred. + suggestion_commit_message: + type: string + description: Commit message used to apply merge request suggestions. + topics: + type: array + items: + type: string + description: List of project topics. + updated_at: + type: string + description: Timestamp of when the project was last updated. + visibility: + type: string + description: Visibility of the project. + web_path: + type: string + description: Web path of the project. + web_url: + type: string + description: Web URL of the project. + wiki_enabled: + type: boolean + description: Indicates if Wikis are enabled for the current user + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_security_policy_project&method=get: + post: + operationId: group_security_policy_project_get + summary: Security policy project assigned to the namespace. + description: Security policy project assigned to the namespace. Generated from the GitLab GraphQL schema field Group.securityPolicyProject (Project). + externalDocs: + description: 'GitLab GraphQL API reference: Group.securityPolicyProject' + url: https://docs.gitlab.com/api/graphql/reference/#groupsecuritypolicyproject + x-stackQL-graphQL: + id: gitlab.security.group_security_policy_project.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { securityPolicyProject { actual_repository_size_limit: actualRepositorySizeLimit admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_merge_on_skipped_pipeline: allowMergeOnSkippedPipeline allows_multiple_merge_request_assignees: allowsMultipleMergeRequestAssignees allows_multiple_merge_request_reviewers: allowsMultipleMergeRequestReviewers archived autoclose_referenced_issues: autocloseReferencedIssues avatar_url: avatarUrl ci_config_path_or_default: ciConfigPathOrDefault container_registry_enabled: containerRegistryEnabled container_scanning_for_registry_enabled: containerScanningForRegistryEnabled created_at: createdAt description edit_path: editPath forks_count: forksCount full_path: fullPath has_jira_vulnerability_issue_creation_enabled: hasJiraVulnerabilityIssueCreationEnabled http_url_to_repo: httpUrlToRepo id import_status: importStatus is_forked: isForked issues_enabled: issuesEnabled jira_import_status: jiraImportStatus jobs_enabled: jobsEnabled last_activity_at: lastActivityAt lfs_enabled: lfsEnabled merge_commit_template: mergeCommitTemplate merge_request_title_regex: mergeRequestTitleRegex merge_request_title_regex_description: mergeRequestTitleRegexDescription merge_requests_disable_committers_approval: mergeRequestsDisableCommittersApproval merge_requests_enabled: mergeRequestsEnabled merge_requests_ff_only_enabled: mergeRequestsFfOnlyEnabled name name_with_namespace: nameWithNamespace only_allow_merge_if_all_discussions_are_resolved: onlyAllowMergeIfAllDiscussionsAreResolved only_allow_merge_if_all_status_checks_passed: onlyAllowMergeIfAllStatusChecksPassed only_allow_merge_if_pipeline_succeeds: onlyAllowMergeIfPipelineSucceeds open_issues_count: openIssuesCount open_merge_requests_count: openMergeRequestsCount pages_force_https: pagesForceHttps pages_use_unique_domain: pagesUseUniqueDomain path pre_receive_secret_detection_enabled: preReceiveSecretDetectionEnabled prevent_merge_without_jira_issue_enabled: preventMergeWithoutJiraIssueEnabled printing_merge_request_link_enabled: printingMergeRequestLinkEnabled public_jobs: publicJobs remove_source_branch_after_merge: removeSourceBranchAfterMerge repository_size_excess: repositorySizeExcess request_access_enabled: requestAccessEnabled secret_push_protection_enabled: secretPushProtectionEnabled security_configuration_path: securityConfigurationPath security_dashboard_path: securityDashboardPath service_desk_address: serviceDeskAddress service_desk_enabled: serviceDeskEnabled shared_runners_enabled: sharedRunnersEnabled snippets_enabled: snippetsEnabled squash_commit_template: squashCommitTemplate squash_read_only: squashReadOnly ssh_url_to_repo: sshUrlToRepo star_count: starCount suggestion_commit_message: suggestionCommitMessage topics updated_at: updatedAt visibility web_path: webPath web_url: webUrl wiki_enabled: wikiEnabled namespace { id full_path: fullPath name } group_: group { id full_path: fullPath name } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + securityPolicyProject: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for the repository in bytes. + admin_edit_path: + type: string + description: Admin path for editing project. Only available to admins. + admin_show_path: + type: string + description: Admin path of the project. Only available to admins. + allow_merge_on_skipped_pipeline: + type: boolean + description: If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. + allows_multiple_merge_request_assignees: + type: boolean + description: Project allows assigning multiple users to a merge request. + allows_multiple_merge_request_reviewers: + type: boolean + description: Project allows assigning multiple reviewers to a merge request. + archived: + type: boolean + description: Indicates if the project or any ancestor is archived. + autoclose_referenced_issues: + type: boolean + description: Indicates if issues referenced by merge requests and commits within the default branch are closed automatically. + avatar_url: + type: string + description: Avatar URL of the project. + ci_config_path_or_default: + type: string + description: Path of the CI configuration file. + container_registry_enabled: + type: boolean + description: Indicates if Container registry is enabled for the current user + container_scanning_for_registry_enabled: + type: boolean + description: Indicates whether container scanning for registry is enabled or not for the project. Returns `null` if unauthorized. + created_at: + type: string + description: Timestamp of the project creation. + description: + type: string + description: Short description of the project. + edit_path: + type: string + description: Path for editing project. + forks_count: + type: integer + description: Number of times the project has been forked. + full_path: + type: string + description: Full path of the project. + has_jira_vulnerability_issue_creation_enabled: + type: boolean + description: Indicates whether Jira issue creation from vulnerabilities is enabled. + http_url_to_repo: + type: string + description: URL to connect to the project via HTTPS. + id: + type: string + description: ID of the project. + import_status: + type: string + description: Status of import background job of the project. + is_forked: + type: boolean + description: Project is forked. + issues_enabled: + type: boolean + description: Indicates if Issues are enabled for the current user + jira_import_status: + type: string + description: Status of Jira import background job of the project. + jobs_enabled: + type: boolean + description: Indicates if CI/CD pipeline jobs are enabled for the current user. + last_activity_at: + type: string + description: Timestamp of the project last activity. + lfs_enabled: + type: boolean + description: Indicates if the project has Large File Storage (LFS) enabled. + merge_commit_template: + type: string + description: Template used to create merge commit message in merge requests. + merge_request_title_regex: + type: string + description: Regex used to validate the title of merge requests. + merge_request_title_regex_description: + type: string + description: Description of the regex used to validate the title of merge requests. + merge_requests_disable_committers_approval: + type: boolean + description: Indicates that committers of the given merge request cannot approve. + merge_requests_enabled: + type: boolean + description: Indicates if Merge requests are enabled for the current user + merge_requests_ff_only_enabled: + type: boolean + description: Indicates if no merge commits should be created and all merges should instead be fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded. + name: + type: string + description: Name of the project without the namespace. + name_with_namespace: + type: string + description: Name of the project including the namespace. + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Indicates if merge requests of the project can only be merged when all the discussions are resolved. + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Indicates that merges of merge requests should be blocked unless all status checks have passed. + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Indicates if merge requests of the project can only be merged with successful jobs. + open_issues_count: + type: integer + description: Number of open issues for the project. + open_merge_requests_count: + type: integer + description: Number of open merge requests for the project. + pages_force_https: + type: boolean + description: Project's Pages site redirects unsecured connections to HTTPS. + pages_use_unique_domain: + type: boolean + description: Project's Pages site uses a unique subdomain. + path: + type: string + description: Path of the project. + pre_receive_secret_detection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + prevent_merge_without_jira_issue_enabled: + type: boolean + description: Indicates if an associated issue from Jira is required. + printing_merge_request_link_enabled: + type: boolean + description: Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line. + public_jobs: + type: boolean + description: Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts. + remove_source_branch_after_merge: + type: boolean + description: Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project. + repository_size_excess: + type: number + description: Size of repository that exceeds the limit in bytes. + request_access_enabled: + type: boolean + description: Indicates if users can request member access to the project. + secret_push_protection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + security_configuration_path: + type: string + description: Path to project's security configuration. + security_dashboard_path: + type: string + description: Path to project's security dashboard. + service_desk_address: + type: string + description: E-mail address of the Service Desk. + service_desk_enabled: + type: boolean + description: Indicates if the project has Service Desk enabled. + shared_runners_enabled: + type: boolean + description: Indicates if shared runners are enabled for the project. + snippets_enabled: + type: boolean + description: Indicates if Snippets are enabled for the current user + squash_commit_template: + type: string + description: Template used to create squash commit message in merge requests. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + ssh_url_to_repo: + type: string + description: URL to connect to the project via SSH. + star_count: + type: integer + description: Number of times the project has been starred. + suggestion_commit_message: + type: string + description: Commit message used to apply merge request suggestions. + topics: + type: array + items: + type: string + description: List of project topics. + updated_at: + type: string + description: Timestamp of when the project was last updated. + visibility: + type: string + description: Visibility of the project. + web_path: + type: string + description: Web path of the project. + web_url: + type: string + description: Web URL of the project. + wiki_enabled: + type: boolean + description: Indicates if Wikis are enabled for the current user + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=group_vulnerabilities_count_by_day&method=list: + post: + operationId: group_vulnerabilities_count_by_day_list + summary: The historical number of vulnerabilities per day for the projects in the group and its subgroups. + description: The historical number of vulnerabilities per day for the projects in the group and its subgroups. Generated from the GitLab GraphQL schema field Group.vulnerabilitiesCountByDay (connection of VulnerabilitiesCountByDay nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.vulnerabilitiesCountByDay' + url: https://docs.gitlab.com/api/graphql/reference/#groupvulnerabilitiescountbyday + x-stackQL-graphQL: + id: gitlab.security.group_vulnerabilities_count_by_day.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.vulnerabilitiesCountByDay.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.vulnerabilitiesCountByDay.pageInfo.endCursor + terminateOnJsonPath: $.data.group.vulnerabilitiesCountByDay.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { vulnerabilitiesCountByDay(first: 100{{ .cursor }}, endDate: "{{ .end_date }}", startDate: "{{ .start_date }}") { nodes { critical date high info low medium total unknown } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: end_date + in: query + required: true + description: Last day for which to fetch vulnerability history. + schema: + type: string + - name: start_date + in: query + required: true + description: First day for which to fetch vulnerability history. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + vulnerabilitiesCountByDay: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + critical: + type: integer + description: Total number of vulnerabilities on a particular day with critical severity + date: + type: string + description: Date for the count. + high: + type: integer + description: Total number of vulnerabilities on a particular day with high severity + info: + type: integer + description: Total number of vulnerabilities on a particular day with info severity + low: + type: integer + description: Total number of vulnerabilities on a particular day with low severity + medium: + type: integer + description: Total number of vulnerabilities on a particular day with medium severity + total: + type: integer + description: Total number of vulnerabilities on a particular day. + unknown: + type: integer + description: Total number of vulnerabilities on a particular day with unknown severity + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_vulnerabilities&method=list: + post: + operationId: group_vulnerabilities_list + summary: Vulnerabilities reported on the projects in the group and its subgroups. + description: Vulnerabilities reported on the projects in the group and its subgroups. Generated from the GitLab GraphQL schema field Group.vulnerabilities (connection of Vulnerability nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.vulnerabilities' + url: https://docs.gitlab.com/api/graphql/reference/#groupvulnerabilities + x-stackQL-graphQL: + id: gitlab.security.group_vulnerabilities.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.vulnerabilities.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.vulnerabilities.pageInfo.endCursor + terminateOnJsonPath: $.data.group.vulnerabilities.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { vulnerabilities(first: 100{{ .cursor }}{{ if .has_ai_resolution }}, hasAiResolution: {{ .has_ai_resolution }}{{ end }}{{ if .has_issues }}, hasIssues: {{ .has_issues }}{{ end }}{{ if .has_merge_request }}, hasMergeRequest: {{ .has_merge_request }}{{ end }}{{ if .has_remediations }}, hasRemediations: {{ .has_remediations }}{{ end }}{{ if .has_resolution }}, hasResolution: {{ .has_resolution }}{{ end }}{{ if .identifier_name }}, identifierName: "{{ .identifier_name }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { ai_resolution_available: aiResolutionAvailable ai_resolution_enabled: aiResolutionEnabled confirmed_at: confirmedAt description detected_at: detectedAt dismissal_reason: dismissalReason dismissed_at: dismissedAt false_positive: falsePositive has_remediations: hasRemediations id name present_on_default_branch: presentOnDefaultBranch removed_from_code: removedFromCode report_type: reportType resolved_at: resolvedAt resolved_on_default_branch: resolvedOnDefaultBranch severity solution state state_comment: stateComment title unverified updated_at: updatedAt user_notes_count: userNotesCount uuid vulnerability_path: vulnerabilityPath web_url: webUrl project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: has_ai_resolution + in: query + required: false + description: Returns only the vulnerabilities which can likely be resolved by GitLab Duo Vulnerability Resolution. + schema: + type: boolean + - name: has_issues + in: query + required: false + description: Returns only the vulnerabilities which have linked issues. + schema: + type: boolean + - name: has_merge_request + in: query + required: false + description: Returns only the vulnerabilities which have linked merge requests. + schema: + type: boolean + - name: has_remediations + in: query + required: false + description: Returns only the vulnerabilities which have remediations. + schema: + type: boolean + - name: has_resolution + in: query + required: false + description: Returns only the vulnerabilities which have been resolved on default branch. + schema: + type: boolean + - name: identifier_name + in: query + required: false + description: Filter vulnerabilities by identifier name. Ignored when applied on instance security dashboard queries. + schema: + type: string + - name: sort + in: query + required: false + description: List vulnerabilities by sort order. + schema: + type: string + enum: + - severity_desc + - severity_asc + - detected_desc + - detected_asc + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + vulnerabilities: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + ai_resolution_available: + type: boolean + description: Indicates whether the type of vulnerability can be resolved with AI. + ai_resolution_enabled: + type: boolean + description: Indicates whether the specific vulnerability can be resolved with AI. + confirmed_at: + type: string + description: Timestamp of when the vulnerability state was changed to confirmed. + description: + type: string + description: Description of the vulnerability. + detected_at: + type: string + description: Timestamp of when the vulnerability was first detected. + dismissal_reason: + type: string + enum: + - ACCEPTABLE_RISK + - FALSE_POSITIVE + - MITIGATING_CONTROL + - USED_IN_TESTS + - NOT_APPLICABLE + description: Reason for dismissal. Returns `null` for states other than `dismissed`. + dismissed_at: + type: string + description: Timestamp of when the vulnerability state was changed to dismissed. + false_positive: + type: boolean + description: Indicates whether the vulnerability is a false positive. + has_remediations: + type: boolean + description: Indicates whether there is a remediation available for the vulnerability. + id: + type: string + description: GraphQL ID of the vulnerability. + name: + type: string + description: Name or title of the object. + present_on_default_branch: + type: boolean + description: Indicates whether the vulnerability is present on the default branch or not. + removed_from_code: + type: boolean + description: Indicates whether the vulnerability is present in the code or not. + report_type: + type: string + enum: + - SAST + - DEPENDENCY_SCANNING + - CONTAINER_SCANNING + - DAST + - SECRET_DETECTION + - COVERAGE_FUZZING + - API_FUZZING + - CLUSTER_IMAGE_SCANNING + - CONTAINER_SCANNING_FOR_REGISTRY + - SARIF + - GENERIC + description: Type of the security report that found the vulnerability (SAST, DEPENDENCY_SCANNING, CONTAINER_SCANNING, DAST, SECRET_DETECTION, COVERAGE_FUZZING, API_FUZZING, CLUSTER_IMAGE_SCANNING, CONTAINER_SCANNING_FOR_REGISTRY, SARIF, GENERIC). `Scan Type` in the UI. + resolved_at: + type: string + description: Timestamp of when the vulnerability state was changed to resolved. + resolved_on_default_branch: + type: boolean + description: Indicates whether the vulnerability is fixed on the default branch or not. + severity: + type: string + enum: + - INFO + - UNKNOWN + - LOW + - MEDIUM + - HIGH + - CRITICAL + description: Severity of the vulnerability (INFO, UNKNOWN, LOW, MEDIUM, HIGH, CRITICAL) + solution: + type: string + description: Recommended solution for the vulnerability. + state: + type: string + enum: + - CONFIRMED + - DETECTED + - DISMISSED + - RESOLVED + description: State of the vulnerability (DETECTED, CONFIRMED, RESOLVED, DISMISSED) + state_comment: + type: string + description: Comment given for the vulnerability state change. + title: + type: string + description: Title of the vulnerability. + unverified: + type: boolean + description: Indicates whether the finding was detected without an identified source (untrusted input). + updated_at: + type: string + description: Timestamp of when the vulnerability was last updated. + user_notes_count: + type: integer + description: Number of user notes attached to the vulnerability. + uuid: + type: string + description: UUID of the vulnerability finding. Can be used to look up the associated security report finding. + vulnerability_path: + type: string + description: Path to the vulnerability's details page. + web_url: + type: string + description: URL to the vulnerability's details page. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_vulnerability_namespace_statistic&method=get: + post: + operationId: group_vulnerability_namespace_statistic_get + summary: Counts for each vulnerability severity in the group and its subgroups. + description: Counts for each vulnerability severity in the group and its subgroups. Generated from the GitLab GraphQL schema field Group.vulnerabilityNamespaceStatistic (VulnerabilityNamespaceStatisticType). + externalDocs: + description: 'GitLab GraphQL API reference: Group.vulnerabilityNamespaceStatistic' + url: https://docs.gitlab.com/api/graphql/reference/#groupvulnerabilitynamespacestatistic + x-stackQL-graphQL: + id: gitlab.security.group_vulnerability_namespace_statistic.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { vulnerabilityNamespaceStatistic { critical high info low medium namespace_id: namespaceId total unknown updated_at: updatedAt } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + vulnerabilityNamespaceStatistic: + type: object + properties: + critical: + type: integer + description: Number of vulnerabilities of CRITICAL severity. + high: + type: integer + description: Number of vulnerabilities of HIGH severity. + info: + type: integer + description: Number of vulnerabilities of INFO severity. + low: + type: integer + description: Number of vulnerabilities of LOW severity. + medium: + type: integer + description: Number of vulnerabilities of MEDIUM severity. + namespace_id: + type: integer + description: Namespace ID. + total: + type: integer + description: Total of all vulnerabilities. + unknown: + type: integer + description: Number of vulnerabilities of UNKNOWN severity. + updated_at: + type: string + description: Date that data was last updated. + /api/graphql?resource=group_vulnerability_scanners&method=list: + post: + operationId: group_vulnerability_scanners_list + summary: Vulnerability scanners reported on the project vulnerabilities of the group and its subgroups. + description: Vulnerability scanners reported on the project vulnerabilities of the group and its subgroups. Generated from the GitLab GraphQL schema field Group.vulnerabilityScanners (connection of VulnerabilityScanner nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.vulnerabilityScanners' + url: https://docs.gitlab.com/api/graphql/reference/#groupvulnerabilityscanners + x-stackQL-graphQL: + id: gitlab.security.group_vulnerability_scanners.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.vulnerabilityScanners.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.vulnerabilityScanners.pageInfo.endCursor + terminateOnJsonPath: $.data.group.vulnerabilityScanners.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { vulnerabilityScanners(first: 100{{ .cursor }}) { nodes { external_id: externalId id name report_type: reportType report_type_humanized: reportTypeHumanized vendor } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + vulnerabilityScanners: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + external_id: + type: string + description: External ID of the vulnerability scanner. + id: + type: string + description: ID of the scanner. + name: + type: string + description: Name of the vulnerability scanner. + report_type: + type: string + enum: + - SAST + - DEPENDENCY_SCANNING + - CONTAINER_SCANNING + - DAST + - SECRET_DETECTION + - COVERAGE_FUZZING + - API_FUZZING + - CLUSTER_IMAGE_SCANNING + - CONTAINER_SCANNING_FOR_REGISTRY + - SARIF + - GENERIC + description: Type of the vulnerability report. + report_type_humanized: + type: string + description: Humanized type of the vulnerability report. + vendor: + type: string + description: Vendor of the vulnerability scanner. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_vulnerability_severities_count&method=get: + post: + operationId: group_vulnerability_severities_count_get + summary: Counts for each vulnerability severity in the group and its subgroups. + description: Counts for each vulnerability severity in the group and its subgroups. Generated from the GitLab GraphQL schema field Group.vulnerabilitySeveritiesCount (VulnerabilitySeveritiesCount). + externalDocs: + description: 'GitLab GraphQL API reference: Group.vulnerabilitySeveritiesCount' + url: https://docs.gitlab.com/api/graphql/reference/#groupvulnerabilityseveritiescount + x-stackQL-graphQL: + id: gitlab.security.group_vulnerability_severities_count.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { vulnerabilitySeveritiesCount{{ if or .capped .has_ai_resolution .has_issues .has_merge_request .has_remediations .has_resolution }}({{ if .capped }}, capped: {{ .capped }}{{ end }}{{ if .has_ai_resolution }}, hasAiResolution: {{ .has_ai_resolution }}{{ end }}{{ if .has_issues }}, hasIssues: {{ .has_issues }}{{ end }}{{ if .has_merge_request }}, hasMergeRequest: {{ .has_merge_request }}{{ end }}{{ if .has_remediations }}, hasRemediations: {{ .has_remediations }}{{ end }}{{ if .has_resolution }}, hasResolution: {{ .has_resolution }}{{ end }}){{ end }} { critical high info low medium unknown } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: capped + in: query + required: false + description: Default value is false. When set to true, the count returned for each severity is capped at a maximum of 1001. Ignored when used along with any argument that requires advanced vulnerability management. + schema: + type: boolean + - name: has_ai_resolution + in: query + required: false + description: Filters vulnerabilities which can or can not be resolved by GitLab Duo Vulnerability Resolution. + schema: + type: boolean + - name: has_issues + in: query + required: false + description: Filter vulnerabilities that do or do not have issues. + schema: + type: boolean + - name: has_merge_request + in: query + required: false + description: Filter vulnerabilities that do or do not have a merge request. + schema: + type: boolean + - name: has_remediations + in: query + required: false + description: Filter vulnerabilities that do or do not have remediations. + schema: + type: boolean + - name: has_resolution + in: query + required: false + description: Filter vulnerabilities that do or do not have a resolution. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + vulnerabilitySeveritiesCount: + type: object + properties: + critical: + type: integer + description: Number of vulnerabilities of CRITICAL severity of the project + high: + type: integer + description: Number of vulnerabilities of HIGH severity of the project + info: + type: integer + description: Number of vulnerabilities of INFO severity of the project + low: + type: integer + description: Number of vulnerabilities of LOW severity of the project + medium: + type: integer + description: Number of vulnerabilities of MEDIUM severity of the project + unknown: + type: integer + description: Number of vulnerabilities of UNKNOWN severity of the project + /api/graphql?resource=namespace_security_projects&method=list: + post: + operationId: namespace_security_projects_list + summary: Security-filtered projects for a namespace + description: Security-filtered projects for a namespace Generated from the GitLab GraphQL schema field Query.namespaceSecurityProjects (connection of Project nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.namespaceSecurityProjects' + url: https://docs.gitlab.com/api/graphql/reference/#querynamespacesecurityprojects + x-stackQL-graphQL: + id: gitlab.security.namespace_security_projects.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.namespaceSecurityProjects.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.namespaceSecurityProjects.pageInfo.endCursor + terminateOnJsonPath: $.data.namespaceSecurityProjects.pageInfo.hasNextPage + query: 'query { namespaceSecurityProjects(first: 100{{ .cursor }}, namespaceId: "{{ .namespace_id }}"{{ if .include_subgroups }}, includeSubgroups: {{ .include_subgroups }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}) { nodes { actual_repository_size_limit: actualRepositorySizeLimit admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_merge_on_skipped_pipeline: allowMergeOnSkippedPipeline allows_multiple_merge_request_assignees: allowsMultipleMergeRequestAssignees allows_multiple_merge_request_reviewers: allowsMultipleMergeRequestReviewers archived autoclose_referenced_issues: autocloseReferencedIssues avatar_url: avatarUrl ci_config_path_or_default: ciConfigPathOrDefault container_registry_enabled: containerRegistryEnabled container_scanning_for_registry_enabled: containerScanningForRegistryEnabled created_at: createdAt description edit_path: editPath forks_count: forksCount full_path: fullPath has_jira_vulnerability_issue_creation_enabled: hasJiraVulnerabilityIssueCreationEnabled http_url_to_repo: httpUrlToRepo id import_status: importStatus is_forked: isForked issues_enabled: issuesEnabled jira_import_status: jiraImportStatus jobs_enabled: jobsEnabled last_activity_at: lastActivityAt lfs_enabled: lfsEnabled merge_commit_template: mergeCommitTemplate merge_request_title_regex: mergeRequestTitleRegex merge_request_title_regex_description: mergeRequestTitleRegexDescription merge_requests_disable_committers_approval: mergeRequestsDisableCommittersApproval merge_requests_enabled: mergeRequestsEnabled merge_requests_ff_only_enabled: mergeRequestsFfOnlyEnabled name name_with_namespace: nameWithNamespace only_allow_merge_if_all_discussions_are_resolved: onlyAllowMergeIfAllDiscussionsAreResolved only_allow_merge_if_all_status_checks_passed: onlyAllowMergeIfAllStatusChecksPassed only_allow_merge_if_pipeline_succeeds: onlyAllowMergeIfPipelineSucceeds open_issues_count: openIssuesCount open_merge_requests_count: openMergeRequestsCount pages_force_https: pagesForceHttps pages_use_unique_domain: pagesUseUniqueDomain path pre_receive_secret_detection_enabled: preReceiveSecretDetectionEnabled prevent_merge_without_jira_issue_enabled: preventMergeWithoutJiraIssueEnabled printing_merge_request_link_enabled: printingMergeRequestLinkEnabled public_jobs: publicJobs remove_source_branch_after_merge: removeSourceBranchAfterMerge repository_size_excess: repositorySizeExcess request_access_enabled: requestAccessEnabled secret_push_protection_enabled: secretPushProtectionEnabled security_configuration_path: securityConfigurationPath security_dashboard_path: securityDashboardPath service_desk_address: serviceDeskAddress service_desk_enabled: serviceDeskEnabled shared_runners_enabled: sharedRunnersEnabled snippets_enabled: snippetsEnabled squash_commit_template: squashCommitTemplate squash_read_only: squashReadOnly ssh_url_to_repo: sshUrlToRepo star_count: starCount suggestion_commit_message: suggestionCommitMessage topics updated_at: updatedAt visibility web_path: webPath web_url: webUrl wiki_enabled: wikiEnabled namespace { id full_path: fullPath name } group_: group { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: namespace_id + in: query + required: true + description: Global ID of the namespace. + schema: + type: string + - name: include_subgroups + in: query + required: false + description: Include also subgroup projects. + schema: + type: boolean + - name: search + in: query + required: false + description: Search projects by name. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + namespaceSecurityProjects: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for the repository in bytes. + admin_edit_path: + type: string + description: Admin path for editing project. Only available to admins. + admin_show_path: + type: string + description: Admin path of the project. Only available to admins. + allow_merge_on_skipped_pipeline: + type: boolean + description: If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. + allows_multiple_merge_request_assignees: + type: boolean + description: Project allows assigning multiple users to a merge request. + allows_multiple_merge_request_reviewers: + type: boolean + description: Project allows assigning multiple reviewers to a merge request. + archived: + type: boolean + description: Indicates if the project or any ancestor is archived. + autoclose_referenced_issues: + type: boolean + description: Indicates if issues referenced by merge requests and commits within the default branch are closed automatically. + avatar_url: + type: string + description: Avatar URL of the project. + ci_config_path_or_default: + type: string + description: Path of the CI configuration file. + container_registry_enabled: + type: boolean + description: Indicates if Container registry is enabled for the current user + container_scanning_for_registry_enabled: + type: boolean + description: Indicates whether container scanning for registry is enabled or not for the project. Returns `null` if unauthorized. + created_at: + type: string + description: Timestamp of the project creation. + description: + type: string + description: Short description of the project. + edit_path: + type: string + description: Path for editing project. + forks_count: + type: integer + description: Number of times the project has been forked. + full_path: + type: string + description: Full path of the project. + has_jira_vulnerability_issue_creation_enabled: + type: boolean + description: Indicates whether Jira issue creation from vulnerabilities is enabled. + http_url_to_repo: + type: string + description: URL to connect to the project via HTTPS. + id: + type: string + description: ID of the project. + import_status: + type: string + description: Status of import background job of the project. + is_forked: + type: boolean + description: Project is forked. + issues_enabled: + type: boolean + description: Indicates if Issues are enabled for the current user + jira_import_status: + type: string + description: Status of Jira import background job of the project. + jobs_enabled: + type: boolean + description: Indicates if CI/CD pipeline jobs are enabled for the current user. + last_activity_at: + type: string + description: Timestamp of the project last activity. + lfs_enabled: + type: boolean + description: Indicates if the project has Large File Storage (LFS) enabled. + merge_commit_template: + type: string + description: Template used to create merge commit message in merge requests. + merge_request_title_regex: + type: string + description: Regex used to validate the title of merge requests. + merge_request_title_regex_description: + type: string + description: Description of the regex used to validate the title of merge requests. + merge_requests_disable_committers_approval: + type: boolean + description: Indicates that committers of the given merge request cannot approve. + merge_requests_enabled: + type: boolean + description: Indicates if Merge requests are enabled for the current user + merge_requests_ff_only_enabled: + type: boolean + description: Indicates if no merge commits should be created and all merges should instead be fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded. + name: + type: string + description: Name of the project without the namespace. + name_with_namespace: + type: string + description: Name of the project including the namespace. + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Indicates if merge requests of the project can only be merged when all the discussions are resolved. + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Indicates that merges of merge requests should be blocked unless all status checks have passed. + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Indicates if merge requests of the project can only be merged with successful jobs. + open_issues_count: + type: integer + description: Number of open issues for the project. + open_merge_requests_count: + type: integer + description: Number of open merge requests for the project. + pages_force_https: + type: boolean + description: Project's Pages site redirects unsecured connections to HTTPS. + pages_use_unique_domain: + type: boolean + description: Project's Pages site uses a unique subdomain. + path: + type: string + description: Path of the project. + pre_receive_secret_detection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + prevent_merge_without_jira_issue_enabled: + type: boolean + description: Indicates if an associated issue from Jira is required. + printing_merge_request_link_enabled: + type: boolean + description: Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line. + public_jobs: + type: boolean + description: Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts. + remove_source_branch_after_merge: + type: boolean + description: Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project. + repository_size_excess: + type: number + description: Size of repository that exceeds the limit in bytes. + request_access_enabled: + type: boolean + description: Indicates if users can request member access to the project. + secret_push_protection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + security_configuration_path: + type: string + description: Path to project's security configuration. + security_dashboard_path: + type: string + description: Path to project's security dashboard. + service_desk_address: + type: string + description: E-mail address of the Service Desk. + service_desk_enabled: + type: boolean + description: Indicates if the project has Service Desk enabled. + shared_runners_enabled: + type: boolean + description: Indicates if shared runners are enabled for the project. + snippets_enabled: + type: boolean + description: Indicates if Snippets are enabled for the current user + squash_commit_template: + type: string + description: Template used to create squash commit message in merge requests. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + ssh_url_to_repo: + type: string + description: URL to connect to the project via SSH. + star_count: + type: integer + description: Number of times the project has been starred. + suggestion_commit_message: + type: string + description: Commit message used to apply merge request suggestions. + topics: + type: array + items: + type: string + description: List of project topics. + updated_at: + type: string + description: Timestamp of when the project was last updated. + visibility: + type: string + description: Visibility of the project. + web_path: + type: string + description: Web path of the project. + web_url: + type: string + description: Web URL of the project. + wiki_enabled: + type: boolean + description: Indicates if Wikis are enabled for the current user + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_approval_policies&method=list: + post: + operationId: project_approval_policies_list + summary: Approval Policies of the project + description: Approval Policies of the project Generated from the GitLab GraphQL schema field Project.approvalPolicies (connection of ApprovalPolicy nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.approvalPolicies' + url: https://docs.gitlab.com/api/graphql/reference/#projectapprovalpolicies + x-stackQL-graphQL: + id: gitlab.security.project_approval_policies.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.approvalPolicies.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.approvalPolicies.pageInfo.endCursor + terminateOnJsonPath: $.data.project.approvalPolicies.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { approvalPolicies(first: 100{{ .cursor }}{{ if .deduplicate_policies }}, deduplicatePolicies: {{ .deduplicate_policies }}{{ end }}{{ if .include_unscoped }}, includeUnscoped: {{ .include_unscoped }}{{ end }}{{ if .relationship }}, relationship: {{ .relationship }}{{ end }}) { nodes { description edit_path: editPath enabled enforcement_type: enforcementType name role_approvers: roleApprovers updated_at: updatedAt yaml } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: deduplicate_policies + in: query + required: false + description: Remove duplicate policies when the same policy is applied via multiple routes. + schema: + type: boolean + - name: include_unscoped + in: query + required: false + description: Filter policies that are scoped to the project. + schema: + type: boolean + - name: relationship + in: query + required: false + description: Filter policies by the given policy relationship. Default is DIRECT. + schema: + type: string + enum: + - DIRECT + - INHERITED + - INHERITED_ONLY + - DESCENDANT + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + approvalPolicies: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the policy. + edit_path: + type: string + description: URL of policy edit page. + enabled: + type: boolean + description: Indicates whether the policy is enabled. + enforcement_type: + type: string + enum: + - ENFORCE + - WARN + description: Enforcement type of the policy. Can be "enforce" or "warn". + name: + type: string + description: Name of the policy. + role_approvers: + type: array + items: + type: string + enum: + - GUEST + - PLANNER + - REPORTER + - SECURITY_MANAGER + - DEVELOPER + - MAINTAINER + - OWNER + description: Approvers of the role type. Users belonging to these role(s) alone will be approvers. + updated_at: + type: string + description: Timestamp of when the policy YAML was last updated. + yaml: + type: string + description: YAML definition of the policy. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_compliance_frameworks&method=list: + post: + operationId: project_compliance_frameworks_list + summary: Compliance frameworks associated with the project. + description: Compliance frameworks associated with the project. Generated from the GitLab GraphQL schema field Project.complianceFrameworks (connection of ComplianceFramework nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.complianceFrameworks' + url: https://docs.gitlab.com/api/graphql/reference/#projectcomplianceframeworks + x-stackQL-graphQL: + id: gitlab.security.project_compliance_frameworks.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.complianceFrameworks.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.complianceFrameworks.pageInfo.endCursor + terminateOnJsonPath: $.data.project.complianceFrameworks.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { complianceFrameworks(first: 100{{ .cursor }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { color default_: default description edit_path: editPath id name namespace_id: namespaceId updated_at: updatedAt } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: sort + in: query + required: false + description: Sort compliance frameworks by the criteria. + schema: + type: string + enum: + - NAME_ASC + - NAME_DESC + - UPDATED_AT_ASC + - UPDATED_AT_DESC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + complianceFrameworks: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + color: + type: string + description: Hexadecimal representation of compliance framework's label color. + default_: + type: boolean + description: Default compliance framework for the group. + description: + type: string + description: Description of the compliance framework. + edit_path: + type: string + description: Web UI path to edit the compliance framework. + id: + type: string + description: Compliance framework ID. + name: + type: string + description: Name of the compliance framework. + namespace_id: + type: string + description: Namespace ID. + updated_at: + type: string + description: Timestamp of when the compliance framework was last updated. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_compliance_standards_adherence&method=list: + post: + operationId: project_compliance_standards_adherence_list + summary: Compliance standards adherence for the project. + description: Compliance standards adherence for the project. Generated from the GitLab GraphQL schema field Project.complianceStandardsAdherence (connection of ComplianceStandardsAdherence nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.complianceStandardsAdherence' + url: https://docs.gitlab.com/api/graphql/reference/#projectcompliancestandardsadherence + x-stackQL-graphQL: + id: gitlab.security.project_compliance_standards_adherence.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.complianceStandardsAdherence.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.complianceStandardsAdherence.pageInfo.endCursor + terminateOnJsonPath: $.data.project.complianceStandardsAdherence.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { complianceStandardsAdherence(first: 100{{ .cursor }}) { nodes { check_name: checkName id standard status updated_at: updatedAt project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + complianceStandardsAdherence: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + check_name: + type: string + enum: + - PREVENT_APPROVAL_BY_MERGE_REQUEST_AUTHOR + - PREVENT_APPROVAL_BY_MERGE_REQUEST_COMMITTERS + - AT_LEAST_TWO_APPROVALS + - AT_LEAST_ONE_NON_AUTHOR_APPROVAL + - SAST + - DAST + description: Name of the check for the compliance standard. + id: + type: string + description: Compliance standards adherence ID. + standard: + type: string + enum: + - GITLAB + - SOC2 + description: Name of the compliance standard. + status: + type: string + enum: + - SUCCESS + - FAIL + description: Status of the compliance standards adherence. + updated_at: + type: string + description: Timestamp when the adherence was updated. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_compliance_violation&method=get: + post: + operationId: project_compliance_violation_get + summary: Find a project compliance violation. + description: Find a project compliance violation. Generated from the GitLab GraphQL schema field Query.projectComplianceViolation (ProjectComplianceViolation). + externalDocs: + description: 'GitLab GraphQL API reference: Query.projectComplianceViolation' + url: https://docs.gitlab.com/api/graphql/reference/#queryprojectcomplianceviolation + x-stackQL-graphQL: + id: gitlab.security.project_compliance_violation.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { projectComplianceViolation(id: "{{ .id }}") { created_at: createdAt id name status web_url: webUrl project { id full_path: fullPath name } } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Global ID of the project compliance violation. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + projectComplianceViolation: + type: object + properties: + created_at: + type: string + description: Timestamp when the violation was detected. + id: + type: string + description: Compliance violation ID. + name: + type: string + description: Name or title of the object. + status: + type: string + enum: + - DETECTED + - IN_REVIEW + - RESOLVED + - DISMISSED + description: Compliance violation status of the project. + web_url: + type: string + description: URL of the object. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=project_corpuses&method=list: + post: + operationId: project_corpuses_list + summary: Find corpuses of the project. + description: Find corpuses of the project. Generated from the GitLab GraphQL schema field Project.corpuses (connection of CoverageFuzzingCorpus nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.corpuses' + url: https://docs.gitlab.com/api/graphql/reference/#projectcorpuses + x-stackQL-graphQL: + id: gitlab.security.project_corpuses.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.corpuses.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.corpuses.pageInfo.endCursor + terminateOnJsonPath: $.data.project.corpuses.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { corpuses(first: 100{{ .cursor }}) { nodes { id } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + corpuses: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: ID of the corpus. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_dast_profile&method=get: + post: + operationId: project_dast_profile_get + summary: DAST Profile associated with the project. + description: DAST Profile associated with the project. Generated from the GitLab GraphQL schema field Project.dastProfile (DastProfile). + externalDocs: + description: 'GitLab GraphQL API reference: Project.dastProfile' + url: https://docs.gitlab.com/api/graphql/reference/#projectdastprofile + x-stackQL-graphQL: + id: gitlab.security.project_dast_profile.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { dastProfile(id: "{{ .id }}"{{ if .has_dast_profile_schedule }}, hasDastProfileSchedule: {{ .has_dast_profile_schedule }}{{ end }}) { description edit_path: editPath id name tag_list: tagList } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: id + in: query + required: true + description: ID of the DAST Profile. + schema: + type: string + - name: has_dast_profile_schedule + in: query + required: false + description: Filter DAST Profiles by whether or not they have a schedule. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + dastProfile: + type: object + properties: + description: + type: string + description: Description of the scan. + edit_path: + type: string + description: Relative web path to the edit page of a profile. + id: + type: string + description: ID of the profile. + name: + type: string + description: Name of the profile. + tag_list: + type: array + items: + type: string + description: Runner tags associated with the profile. + /api/graphql?resource=project_dast_profiles&method=list: + post: + operationId: project_dast_profiles_list + summary: DAST Profiles associated with the project. + description: DAST Profiles associated with the project. Generated from the GitLab GraphQL schema field Project.dastProfiles (connection of DastProfile nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.dastProfiles' + url: https://docs.gitlab.com/api/graphql/reference/#projectdastprofiles + x-stackQL-graphQL: + id: gitlab.security.project_dast_profiles.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.dastProfiles.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.dastProfiles.pageInfo.endCursor + terminateOnJsonPath: $.data.project.dastProfiles.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { dastProfiles(first: 100{{ .cursor }}{{ if .has_dast_profile_schedule }}, hasDastProfileSchedule: {{ .has_dast_profile_schedule }}{{ end }}) { nodes { description edit_path: editPath id name tag_list: tagList } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: has_dast_profile_schedule + in: query + required: false + description: Filter DAST Profiles by whether or not they have a schedule. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + dastProfiles: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the scan. + edit_path: + type: string + description: Relative web path to the edit page of a profile. + id: + type: string + description: ID of the profile. + name: + type: string + description: Name of the profile. + tag_list: + type: array + items: + type: string + description: Runner tags associated with the profile. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_dast_scanner_profiles&method=list: + post: + operationId: project_dast_scanner_profiles_list + summary: DAST scanner profiles associated with the project. + description: DAST scanner profiles associated with the project. Generated from the GitLab GraphQL schema field Project.dastScannerProfiles (connection of DastScannerProfile nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.dastScannerProfiles' + url: https://docs.gitlab.com/api/graphql/reference/#projectdastscannerprofiles + x-stackQL-graphQL: + id: gitlab.security.project_dast_scanner_profiles.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.dastScannerProfiles.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.dastScannerProfiles.pageInfo.endCursor + terminateOnJsonPath: $.data.project.dastScannerProfiles.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { dastScannerProfiles(first: 100{{ .cursor }}) { nodes { edit_path: editPath id profile_name: profileName referenced_in_security_policies: referencedInSecurityPolicies scan_type: scanType show_debug_messages: showDebugMessages spider_timeout: spiderTimeout target_timeout: targetTimeout use_ajax_spider: useAjaxSpider } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + dastScannerProfiles: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + edit_path: + type: string + description: Relative web path to the edit page of a scanner profile. + id: + type: string + description: ID of the DAST scanner profile. + profile_name: + type: string + description: Name of the DAST scanner profile. + referenced_in_security_policies: + type: array + items: + type: string + description: List of security policy names that are referencing given project. + scan_type: + type: string + enum: + - PASSIVE + - ACTIVE + description: Indicates the type of DAST scan that will run. Either a Passive Scan or an Active Scan. + show_debug_messages: + type: boolean + description: Indicates if debug messages should be included in DAST console output. True to include the debug messages. + spider_timeout: + type: integer + description: Maximum number of minutes allowed for the spider to traverse the site. + target_timeout: + type: integer + description: Maximum number of seconds allowed for the site under test to respond to a request. + use_ajax_spider: + type: boolean + description: Indicates if the AJAX spider should be used to crawl the target site. True to run the AJAX spider in addition to the traditional spider, and false to run only the traditional spider. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_dast_site_profile&method=get: + post: + operationId: project_dast_site_profile_get + summary: DAST Site Profile associated with the project. + description: DAST Site Profile associated with the project. Generated from the GitLab GraphQL schema field Project.dastSiteProfile (DastSiteProfile). + externalDocs: + description: 'GitLab GraphQL API reference: Project.dastSiteProfile' + url: https://docs.gitlab.com/api/graphql/reference/#projectdastsiteprofile + x-stackQL-graphQL: + id: gitlab.security.project_dast_site_profile.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { dastSiteProfile(id: "{{ .id }}") { edit_path: editPath excluded_urls: excludedUrls id normalized_target_url: normalizedTargetUrl optional_variables: optionalVariables profile_name: profileName referenced_in_security_policies: referencedInSecurityPolicies request_headers: requestHeaders scan_file_path: scanFilePath scan_method: scanMethod target_type: targetType target_url: targetUrl validation_started_at: validationStartedAt validation_status: validationStatus } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: id + in: query + required: true + description: ID of the site profile. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + dastSiteProfile: + type: object + properties: + edit_path: + type: string + description: Relative web path to the edit page of a site profile. + excluded_urls: + type: array + items: + type: string + description: URLs to skip during an authenticated scan. + id: + type: string + description: ID of the site profile. + normalized_target_url: + type: string + description: Normalized URL of the target to be scanned. + optional_variables: + type: array + items: + type: string + description: Optional variables that can be configured for DAST scans. + profile_name: + type: string + description: Name of the site profile. + referenced_in_security_policies: + type: array + items: + type: string + description: List of security policy names that are referencing given project. + request_headers: + type: string + description: Comma-separated list of request header names and values to be added to every request made by DAST. + scan_file_path: + type: string + description: Scan File Path used as input for the scanner. + scan_method: + type: string + enum: + - WEBSITE + - OPENAPI + - HAR + - POSTMAN_COLLECTION + - GRAPHQL + description: Scan method used by the scanner. + target_type: + type: string + enum: + - WEBSITE + - API + description: Type of target to be scanned. + target_url: + type: string + description: URL of the target to be scanned. + validation_started_at: + type: string + description: Site profile validation start time. + validation_status: + type: string + enum: + - NONE + - PENDING_VALIDATION + - INPROGRESS_VALIDATION + - PASSED_VALIDATION + - FAILED_VALIDATION + description: Current validation status of the site profile. + /api/graphql?resource=project_dast_site_profiles&method=list: + post: + operationId: project_dast_site_profiles_list + summary: DAST Site Profiles associated with the project. + description: DAST Site Profiles associated with the project. Generated from the GitLab GraphQL schema field Project.dastSiteProfiles (connection of DastSiteProfile nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.dastSiteProfiles' + url: https://docs.gitlab.com/api/graphql/reference/#projectdastsiteprofiles + x-stackQL-graphQL: + id: gitlab.security.project_dast_site_profiles.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.dastSiteProfiles.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.dastSiteProfiles.pageInfo.endCursor + terminateOnJsonPath: $.data.project.dastSiteProfiles.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { dastSiteProfiles(first: 100{{ .cursor }}) { nodes { edit_path: editPath excluded_urls: excludedUrls id normalized_target_url: normalizedTargetUrl optional_variables: optionalVariables profile_name: profileName referenced_in_security_policies: referencedInSecurityPolicies request_headers: requestHeaders scan_file_path: scanFilePath scan_method: scanMethod target_type: targetType target_url: targetUrl validation_started_at: validationStartedAt validation_status: validationStatus } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + dastSiteProfiles: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + edit_path: + type: string + description: Relative web path to the edit page of a site profile. + excluded_urls: + type: array + items: + type: string + description: URLs to skip during an authenticated scan. + id: + type: string + description: ID of the site profile. + normalized_target_url: + type: string + description: Normalized URL of the target to be scanned. + optional_variables: + type: array + items: + type: string + description: Optional variables that can be configured for DAST scans. + profile_name: + type: string + description: Name of the site profile. + referenced_in_security_policies: + type: array + items: + type: string + description: List of security policy names that are referencing given project. + request_headers: + type: string + description: Comma-separated list of request header names and values to be added to every request made by DAST. + scan_file_path: + type: string + description: Scan File Path used as input for the scanner. + scan_method: + type: string + enum: + - WEBSITE + - OPENAPI + - HAR + - POSTMAN_COLLECTION + - GRAPHQL + description: Scan method used by the scanner. + target_type: + type: string + enum: + - WEBSITE + - API + description: Type of target to be scanned. + target_url: + type: string + description: URL of the target to be scanned. + validation_started_at: + type: string + description: Site profile validation start time. + validation_status: + type: string + enum: + - NONE + - PENDING_VALIDATION + - INPROGRESS_VALIDATION + - PASSED_VALIDATION + - FAILED_VALIDATION + description: Current validation status of the site profile. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_dast_site_validations&method=list: + post: + operationId: project_dast_site_validations_list + summary: DAST Site Validations associated with the project. + description: DAST Site Validations associated with the project. Generated from the GitLab GraphQL schema field Project.dastSiteValidations (connection of DastSiteValidation nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.dastSiteValidations' + url: https://docs.gitlab.com/api/graphql/reference/#projectdastsitevalidations + x-stackQL-graphQL: + id: gitlab.security.project_dast_site_validations.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.dastSiteValidations.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.dastSiteValidations.pageInfo.endCursor + terminateOnJsonPath: $.data.project.dastSiteValidations.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { dastSiteValidations(first: 100{{ .cursor }}{{ if .status }}, status: {{ .status }}{{ end }}) { nodes { id normalized_target_url: normalizedTargetUrl status validation_started_at: validationStartedAt } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: status + in: query + required: false + description: Status of the site validation. + schema: + type: string + enum: + - PENDING_VALIDATION + - INPROGRESS_VALIDATION + - PASSED_VALIDATION + - FAILED_VALIDATION + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + dastSiteValidations: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: Global ID of the site validation. + normalized_target_url: + type: string + description: Normalized URL of the target to be validated. + status: + type: string + enum: + - NONE + - PENDING_VALIDATION + - INPROGRESS_VALIDATION + - PASSED_VALIDATION + - FAILED_VALIDATION + description: Status of the site validation. + validation_started_at: + type: string + description: Timestamp of when the validation started. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_dependencies&method=list: + post: + operationId: project_dependencies_list + summary: Software dependencies used by the project. + description: Software dependencies used by the project. Generated from the GitLab GraphQL schema field Project.dependencies (connection of Dependency nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.dependencies' + url: https://docs.gitlab.com/api/graphql/reference/#projectdependencies + x-stackQL-graphQL: + id: gitlab.security.project_dependencies.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.dependencies.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.dependencies.pageInfo.endCursor + terminateOnJsonPath: $.data.project.dependencies.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { dependencies(first: 100{{ .cursor }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { id name packager reachability vulnerability_count: vulnerabilityCount } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: sort + in: query + required: false + description: Sort dependencies by given criteria. + schema: + type: string + enum: + - NAME_DESC + - NAME_ASC + - PACKAGER_DESC + - PACKAGER_ASC + - SEVERITY_DESC + - SEVERITY_ASC + - LICENSE_ASC + - LICENSE_DESC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + dependencies: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + id: + type: string + description: ID of the dependency. + name: + type: string + description: Name of the dependency. + packager: + type: string + enum: + - BUNDLER + - YARN + - NPM + - PNPM + - BUN + - MAVEN + - COMPOSER + - PIP + - CONAN + - GO + - NUGET + - SBT + - GRADLE + - PIPENV + - POETRY + - SETUPTOOLS + - APK + - CONDA + - PUB + - CARGO + description: Description of the tool used to manage the dependency. + reachability: + type: string + enum: + - UNKNOWN + - IN_USE + - NOT_FOUND + description: Information about reachability of a dependency. + vulnerability_count: + type: integer + description: Number of vulnerabilities within the dependency. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_scan_execution_policies&method=list: + post: + operationId: project_scan_execution_policies_list + summary: Scan Execution Policies of the project + description: Scan Execution Policies of the project Generated from the GitLab GraphQL schema field Project.scanExecutionPolicies (connection of ScanExecutionPolicy nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.scanExecutionPolicies' + url: https://docs.gitlab.com/api/graphql/reference/#projectscanexecutionpolicies + x-stackQL-graphQL: + id: gitlab.security.project_scan_execution_policies.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.scanExecutionPolicies.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.scanExecutionPolicies.pageInfo.endCursor + terminateOnJsonPath: $.data.project.scanExecutionPolicies.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { scanExecutionPolicies(first: 100{{ .cursor }}{{ if .deduplicate_policies }}, deduplicatePolicies: {{ .deduplicate_policies }}{{ end }}{{ if .include_unscoped }}, includeUnscoped: {{ .include_unscoped }}{{ end }}{{ if .relationship }}, relationship: {{ .relationship }}{{ end }}) { nodes { description edit_path: editPath enabled name updated_at: updatedAt yaml } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: deduplicate_policies + in: query + required: false + description: Remove duplicate policies when the same policy is applied via multiple routes. + schema: + type: boolean + - name: include_unscoped + in: query + required: false + description: Filter policies that are scoped to the project. + schema: + type: boolean + - name: relationship + in: query + required: false + description: Filter policies by the given policy relationship. Default is DIRECT. + schema: + type: string + enum: + - DIRECT + - INHERITED + - INHERITED_ONLY + - DESCENDANT + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + scanExecutionPolicies: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + description: + type: string + description: Description of the policy. + edit_path: + type: string + description: URL of policy edit page. + enabled: + type: boolean + description: Indicates whether the policy is enabled. + name: + type: string + description: Name of the policy. + updated_at: + type: string + description: Timestamp of when the policy YAML was last updated. + yaml: + type: string + description: YAML definition of the policy. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_security_policy_project_linked_groups&method=list: + post: + operationId: project_security_policy_project_linked_groups_list + summary: Groups linked to the project, when used as Security Policy Project. + description: Groups linked to the project, when used as Security Policy Project. Generated from the GitLab GraphQL schema field Project.securityPolicyProjectLinkedGroups (connection of Group nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.securityPolicyProjectLinkedGroups' + url: https://docs.gitlab.com/api/graphql/reference/#projectsecuritypolicyprojectlinkedgroups + x-stackQL-graphQL: + id: gitlab.security.project_security_policy_project_linked_groups.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.securityPolicyProjectLinkedGroups.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.securityPolicyProjectLinkedGroups.pageInfo.endCursor + terminateOnJsonPath: $.data.project.securityPolicyProjectLinkedGroups.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { securityPolicyProjectLinkedGroups(first: 100{{ .cursor }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .top_level_only }}, topLevelOnly: {{ .top_level_only }}{{ end }}) { nodes { actual_repository_size_limit: actualRepositorySizeLimit actual_size_limit: actualSizeLimit additional_purchased_storage_size: additionalPurchasedStorageSize admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_stale_runner_pruning: allowStaleRunnerPruning archived auto_devops_enabled: autoDevopsEnabled avatar_url: avatarUrl billable_members_count: billableMembersCount contains_locked_projects: containsLockedProjects created_at: createdAt cross_project_pipeline_available: crossProjectPipelineAvailable dependency_proxy_blob_count: dependencyProxyBlobCount dependency_proxy_image_count: dependencyProxyImageCount dependency_proxy_image_prefix: dependencyProxyImagePrefix dependency_proxy_total_size: dependencyProxyTotalSize dependency_proxy_total_size_bytes: dependencyProxyTotalSizeBytes descendant_groups_count: descendantGroupsCount description edit_path: editPath emails_disabled: emailsDisabled emails_enabled: emailsEnabled enforce_free_user_cap: enforceFreeUserCap full_name: fullName full_path: fullPath group_members_count: groupMembersCount id is_linked_to_subscription: isLinkedToSubscription is_self_archived: isSelfArchived lfs_enabled: lfsEnabled lock_math_rendering_limits_enabled: lockMathRenderingLimitsEnabled math_rendering_limits_enabled: mathRenderingLimitsEnabled mentions_disabled: mentionsDisabled name path project_creation_level: projectCreationLevel projects_count: projectsCount repository_size_excess_project_count: repositorySizeExcessProjectCount request_access_enabled: requestAccessEnabled require_two_factor_authentication: requireTwoFactorAuthentication share_with_group_lock: shareWithGroupLock shared_runners_setting: sharedRunnersSetting storage_size_limit: storageSizeLimit subgroup_creation_level: subgroupCreationLevel total_repository_size: totalRepositorySize total_repository_size_excess: totalRepositorySizeExcess two_factor_grace_period: twoFactorGracePeriod updated_at: updatedAt visibility web_path: webPath web_url: webUrl } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: search + in: query + required: false + description: Search query for groups. + schema: + type: string + - name: top_level_only + in: query + required: false + description: Only include top-level groups. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + securityPolicyProjectLinkedGroups: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for repositories in the namespace in bytes. This limit only applies to namespaces under Project limit enforcement. + actual_size_limit: + type: number + description: The actual storage size limit (in bytes) based on the enforcement type of either repository or namespace. This limit is agnostic of enforcement type. + additional_purchased_storage_size: + type: number + description: Additional storage purchased for the root namespace in bytes. + admin_edit_path: + type: string + description: Admin path for editing group. Only available to admins. + admin_show_path: + type: string + description: Admin path of the group. Only available to admins. + allow_stale_runner_pruning: + type: boolean + description: Indicates whether to regularly prune stale group runners. Defaults to false. + archived: + type: boolean + description: Indicates if the group or any ancestor is archived. + auto_devops_enabled: + type: boolean + description: Indicates whether Auto DevOps is enabled for all projects within the group. + avatar_url: + type: string + description: Avatar URL of the group. + billable_members_count: + type: integer + description: Number of billable users in the group. + contains_locked_projects: + type: boolean + description: Includes at least one project where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + created_at: + type: string + description: Timestamp of the group creation. + cross_project_pipeline_available: + type: boolean + description: Indicates if the cross_project_pipeline feature is available for the namespace. + dependency_proxy_blob_count: + type: integer + description: Number of dependency proxy blobs cached in the group. + dependency_proxy_image_count: + type: integer + description: Number of dependency proxy images cached in the group. + dependency_proxy_image_prefix: + type: string + description: Prefix for pulling images when using the dependency proxy. + dependency_proxy_total_size: + type: string + description: Total size of the dependency proxy cached images. + dependency_proxy_total_size_bytes: + type: string + description: Total size of the dependency proxy cached images in bytes, encoded as a string. + descendant_groups_count: + type: integer + description: Count of direct descendant groups of the group. + description: + type: string + description: Description of the namespace. + edit_path: + type: string + description: Path for editing group. + emails_disabled: + type: boolean + description: Indicates if a group has email notifications disabled. + emails_enabled: + type: boolean + description: Indicates if a group has email notifications enabled. + enforce_free_user_cap: + type: boolean + description: Indicates whether the group has limited users for a free plan. + full_name: + type: string + description: Full name of the group. + full_path: + type: string + description: Full path of the group. + group_members_count: + type: integer + description: Count of direct members of the group. + id: + type: string + description: ID of the group. + is_linked_to_subscription: + type: boolean + description: Indicates if group is linked to a subscription. + is_self_archived: + type: boolean + description: Indicates if the group is archived. + lfs_enabled: + type: boolean + description: Indicates if Large File Storage (LFS) is enabled for namespace. + lock_math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are locked for all descendant groups. + math_rendering_limits_enabled: + type: boolean + description: Indicates if math rendering limits are used for the group. + mentions_disabled: + type: boolean + description: Indicates if a group is disabled from getting mentioned. + name: + type: string + description: Name of the group. + path: + type: string + description: Path of the namespace. + project_creation_level: + type: string + description: Permission level required to create projects in the group. + projects_count: + type: integer + description: Count of direct projects in the group. + repository_size_excess_project_count: + type: integer + description: Number of projects in the root namespace where the repository size exceeds the limit. This only applies to namespaces under Project limit enforcement. + request_access_enabled: + type: boolean + description: Indicates if users can request access to namespace. + require_two_factor_authentication: + type: boolean + description: Indicates if all users in the group are required to set up two-factor authentication. + share_with_group_lock: + type: boolean + description: Indicates if sharing a project with another group within the group is prevented. + shared_runners_setting: + type: string + enum: + - DISABLED_AND_UNOVERRIDABLE + - DISABLED_AND_OVERRIDABLE + - ENABLED + description: Shared runners availability for the namespace and its descendants. + storage_size_limit: + type: number + description: The storage limit (in bytes) included with the root namespace plan. This limit only applies to namespaces under namespace limit enforcement. + subgroup_creation_level: + type: string + description: Permission level required to create subgroups within the group. + total_repository_size: + type: number + description: Total repository size of all projects in the root namespace in bytes. + total_repository_size_excess: + type: number + description: Total excess repository size of all projects in the root namespace in bytes. This only applies to namespaces under Project limit enforcement. + two_factor_grace_period: + type: integer + description: Time before two-factor authentication is enforced. + updated_at: + type: string + description: Timestamp of when the group was last updated. + visibility: + type: string + description: Visibility of the namespace. + web_path: + type: string + description: Web path of the group. + web_url: + type: string + description: Web URL of the group. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_security_policy_project_linked_projects&method=list: + post: + operationId: project_security_policy_project_linked_projects_list + summary: Projects linked to the project, when used as Security Policy Project. + description: Projects linked to the project, when used as Security Policy Project. Generated from the GitLab GraphQL schema field Project.securityPolicyProjectLinkedProjects (connection of Project nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.securityPolicyProjectLinkedProjects' + url: https://docs.gitlab.com/api/graphql/reference/#projectsecuritypolicyprojectlinkedprojects + x-stackQL-graphQL: + id: gitlab.security.project_security_policy_project_linked_projects.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.securityPolicyProjectLinkedProjects.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.securityPolicyProjectLinkedProjects.pageInfo.endCursor + terminateOnJsonPath: $.data.project.securityPolicyProjectLinkedProjects.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { securityPolicyProjectLinkedProjects(first: 100{{ .cursor }}) { nodes { actual_repository_size_limit: actualRepositorySizeLimit admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_merge_on_skipped_pipeline: allowMergeOnSkippedPipeline allows_multiple_merge_request_assignees: allowsMultipleMergeRequestAssignees allows_multiple_merge_request_reviewers: allowsMultipleMergeRequestReviewers archived autoclose_referenced_issues: autocloseReferencedIssues avatar_url: avatarUrl ci_config_path_or_default: ciConfigPathOrDefault container_registry_enabled: containerRegistryEnabled container_scanning_for_registry_enabled: containerScanningForRegistryEnabled created_at: createdAt description edit_path: editPath forks_count: forksCount full_path: fullPath has_jira_vulnerability_issue_creation_enabled: hasJiraVulnerabilityIssueCreationEnabled http_url_to_repo: httpUrlToRepo id import_status: importStatus is_forked: isForked issues_enabled: issuesEnabled jira_import_status: jiraImportStatus jobs_enabled: jobsEnabled last_activity_at: lastActivityAt lfs_enabled: lfsEnabled merge_commit_template: mergeCommitTemplate merge_request_title_regex: mergeRequestTitleRegex merge_request_title_regex_description: mergeRequestTitleRegexDescription merge_requests_disable_committers_approval: mergeRequestsDisableCommittersApproval merge_requests_enabled: mergeRequestsEnabled merge_requests_ff_only_enabled: mergeRequestsFfOnlyEnabled name name_with_namespace: nameWithNamespace only_allow_merge_if_all_discussions_are_resolved: onlyAllowMergeIfAllDiscussionsAreResolved only_allow_merge_if_all_status_checks_passed: onlyAllowMergeIfAllStatusChecksPassed only_allow_merge_if_pipeline_succeeds: onlyAllowMergeIfPipelineSucceeds open_issues_count: openIssuesCount open_merge_requests_count: openMergeRequestsCount pages_force_https: pagesForceHttps pages_use_unique_domain: pagesUseUniqueDomain path pre_receive_secret_detection_enabled: preReceiveSecretDetectionEnabled prevent_merge_without_jira_issue_enabled: preventMergeWithoutJiraIssueEnabled printing_merge_request_link_enabled: printingMergeRequestLinkEnabled public_jobs: publicJobs remove_source_branch_after_merge: removeSourceBranchAfterMerge repository_size_excess: repositorySizeExcess request_access_enabled: requestAccessEnabled secret_push_protection_enabled: secretPushProtectionEnabled security_configuration_path: securityConfigurationPath security_dashboard_path: securityDashboardPath service_desk_address: serviceDeskAddress service_desk_enabled: serviceDeskEnabled shared_runners_enabled: sharedRunnersEnabled snippets_enabled: snippetsEnabled squash_commit_template: squashCommitTemplate squash_read_only: squashReadOnly ssh_url_to_repo: sshUrlToRepo star_count: starCount suggestion_commit_message: suggestionCommitMessage topics updated_at: updatedAt visibility web_path: webPath web_url: webUrl wiki_enabled: wikiEnabled namespace { id full_path: fullPath name } group_: group { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + securityPolicyProjectLinkedProjects: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for the repository in bytes. + admin_edit_path: + type: string + description: Admin path for editing project. Only available to admins. + admin_show_path: + type: string + description: Admin path of the project. Only available to admins. + allow_merge_on_skipped_pipeline: + type: boolean + description: If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. + allows_multiple_merge_request_assignees: + type: boolean + description: Project allows assigning multiple users to a merge request. + allows_multiple_merge_request_reviewers: + type: boolean + description: Project allows assigning multiple reviewers to a merge request. + archived: + type: boolean + description: Indicates if the project or any ancestor is archived. + autoclose_referenced_issues: + type: boolean + description: Indicates if issues referenced by merge requests and commits within the default branch are closed automatically. + avatar_url: + type: string + description: Avatar URL of the project. + ci_config_path_or_default: + type: string + description: Path of the CI configuration file. + container_registry_enabled: + type: boolean + description: Indicates if Container registry is enabled for the current user + container_scanning_for_registry_enabled: + type: boolean + description: Indicates whether container scanning for registry is enabled or not for the project. Returns `null` if unauthorized. + created_at: + type: string + description: Timestamp of the project creation. + description: + type: string + description: Short description of the project. + edit_path: + type: string + description: Path for editing project. + forks_count: + type: integer + description: Number of times the project has been forked. + full_path: + type: string + description: Full path of the project. + has_jira_vulnerability_issue_creation_enabled: + type: boolean + description: Indicates whether Jira issue creation from vulnerabilities is enabled. + http_url_to_repo: + type: string + description: URL to connect to the project via HTTPS. + id: + type: string + description: ID of the project. + import_status: + type: string + description: Status of import background job of the project. + is_forked: + type: boolean + description: Project is forked. + issues_enabled: + type: boolean + description: Indicates if Issues are enabled for the current user + jira_import_status: + type: string + description: Status of Jira import background job of the project. + jobs_enabled: + type: boolean + description: Indicates if CI/CD pipeline jobs are enabled for the current user. + last_activity_at: + type: string + description: Timestamp of the project last activity. + lfs_enabled: + type: boolean + description: Indicates if the project has Large File Storage (LFS) enabled. + merge_commit_template: + type: string + description: Template used to create merge commit message in merge requests. + merge_request_title_regex: + type: string + description: Regex used to validate the title of merge requests. + merge_request_title_regex_description: + type: string + description: Description of the regex used to validate the title of merge requests. + merge_requests_disable_committers_approval: + type: boolean + description: Indicates that committers of the given merge request cannot approve. + merge_requests_enabled: + type: boolean + description: Indicates if Merge requests are enabled for the current user + merge_requests_ff_only_enabled: + type: boolean + description: Indicates if no merge commits should be created and all merges should instead be fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded. + name: + type: string + description: Name of the project without the namespace. + name_with_namespace: + type: string + description: Name of the project including the namespace. + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Indicates if merge requests of the project can only be merged when all the discussions are resolved. + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Indicates that merges of merge requests should be blocked unless all status checks have passed. + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Indicates if merge requests of the project can only be merged with successful jobs. + open_issues_count: + type: integer + description: Number of open issues for the project. + open_merge_requests_count: + type: integer + description: Number of open merge requests for the project. + pages_force_https: + type: boolean + description: Project's Pages site redirects unsecured connections to HTTPS. + pages_use_unique_domain: + type: boolean + description: Project's Pages site uses a unique subdomain. + path: + type: string + description: Path of the project. + pre_receive_secret_detection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + prevent_merge_without_jira_issue_enabled: + type: boolean + description: Indicates if an associated issue from Jira is required. + printing_merge_request_link_enabled: + type: boolean + description: Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line. + public_jobs: + type: boolean + description: Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts. + remove_source_branch_after_merge: + type: boolean + description: Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project. + repository_size_excess: + type: number + description: Size of repository that exceeds the limit in bytes. + request_access_enabled: + type: boolean + description: Indicates if users can request member access to the project. + secret_push_protection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + security_configuration_path: + type: string + description: Path to project's security configuration. + security_dashboard_path: + type: string + description: Path to project's security dashboard. + service_desk_address: + type: string + description: E-mail address of the Service Desk. + service_desk_enabled: + type: boolean + description: Indicates if the project has Service Desk enabled. + shared_runners_enabled: + type: boolean + description: Indicates if shared runners are enabled for the project. + snippets_enabled: + type: boolean + description: Indicates if Snippets are enabled for the current user + squash_commit_template: + type: string + description: Template used to create squash commit message in merge requests. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + ssh_url_to_repo: + type: string + description: URL to connect to the project via SSH. + star_count: + type: integer + description: Number of times the project has been starred. + suggestion_commit_message: + type: string + description: Commit message used to apply merge request suggestions. + topics: + type: array + items: + type: string + description: List of project topics. + updated_at: + type: string + description: Timestamp of when the project was last updated. + visibility: + type: string + description: Visibility of the project. + web_path: + type: string + description: Web path of the project. + web_url: + type: string + description: Web URL of the project. + wiki_enabled: + type: boolean + description: Indicates if Wikis are enabled for the current user + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_security_policy_project_suggestions&method=list: + post: + operationId: project_security_policy_project_suggestions_list + summary: Security policy project suggestions + description: Security policy project suggestions Generated from the GitLab GraphQL schema field Project.securityPolicyProjectSuggestions (connection of Project nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.securityPolicyProjectSuggestions' + url: https://docs.gitlab.com/api/graphql/reference/#projectsecuritypolicyprojectsuggestions + x-stackQL-graphQL: + id: gitlab.security.project_security_policy_project_suggestions.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.securityPolicyProjectSuggestions.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.securityPolicyProjectSuggestions.pageInfo.endCursor + terminateOnJsonPath: $.data.project.securityPolicyProjectSuggestions.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { securityPolicyProjectSuggestions(first: 100{{ .cursor }}, search: "{{ .search }}"{{ if .only_linked }}, onlyLinked: {{ .only_linked }}{{ end }}) { nodes { actual_repository_size_limit: actualRepositorySizeLimit admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_merge_on_skipped_pipeline: allowMergeOnSkippedPipeline allows_multiple_merge_request_assignees: allowsMultipleMergeRequestAssignees allows_multiple_merge_request_reviewers: allowsMultipleMergeRequestReviewers archived autoclose_referenced_issues: autocloseReferencedIssues avatar_url: avatarUrl ci_config_path_or_default: ciConfigPathOrDefault container_registry_enabled: containerRegistryEnabled container_scanning_for_registry_enabled: containerScanningForRegistryEnabled created_at: createdAt description edit_path: editPath forks_count: forksCount full_path: fullPath has_jira_vulnerability_issue_creation_enabled: hasJiraVulnerabilityIssueCreationEnabled http_url_to_repo: httpUrlToRepo id import_status: importStatus is_forked: isForked issues_enabled: issuesEnabled jira_import_status: jiraImportStatus jobs_enabled: jobsEnabled last_activity_at: lastActivityAt lfs_enabled: lfsEnabled merge_commit_template: mergeCommitTemplate merge_request_title_regex: mergeRequestTitleRegex merge_request_title_regex_description: mergeRequestTitleRegexDescription merge_requests_disable_committers_approval: mergeRequestsDisableCommittersApproval merge_requests_enabled: mergeRequestsEnabled merge_requests_ff_only_enabled: mergeRequestsFfOnlyEnabled name name_with_namespace: nameWithNamespace only_allow_merge_if_all_discussions_are_resolved: onlyAllowMergeIfAllDiscussionsAreResolved only_allow_merge_if_all_status_checks_passed: onlyAllowMergeIfAllStatusChecksPassed only_allow_merge_if_pipeline_succeeds: onlyAllowMergeIfPipelineSucceeds open_issues_count: openIssuesCount open_merge_requests_count: openMergeRequestsCount pages_force_https: pagesForceHttps pages_use_unique_domain: pagesUseUniqueDomain path pre_receive_secret_detection_enabled: preReceiveSecretDetectionEnabled prevent_merge_without_jira_issue_enabled: preventMergeWithoutJiraIssueEnabled printing_merge_request_link_enabled: printingMergeRequestLinkEnabled public_jobs: publicJobs remove_source_branch_after_merge: removeSourceBranchAfterMerge repository_size_excess: repositorySizeExcess request_access_enabled: requestAccessEnabled secret_push_protection_enabled: secretPushProtectionEnabled security_configuration_path: securityConfigurationPath security_dashboard_path: securityDashboardPath service_desk_address: serviceDeskAddress service_desk_enabled: serviceDeskEnabled shared_runners_enabled: sharedRunnersEnabled snippets_enabled: snippetsEnabled squash_commit_template: squashCommitTemplate squash_read_only: squashReadOnly ssh_url_to_repo: sshUrlToRepo star_count: starCount suggestion_commit_message: suggestionCommitMessage topics updated_at: updatedAt visibility web_path: webPath web_url: webUrl wiki_enabled: wikiEnabled namespace { id full_path: fullPath name } group_: group { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: search + in: query + required: true + description: Search query for projects' full paths. + schema: + type: string + - name: only_linked + in: query + required: false + description: Whether to suggest only projects already linked as security policy projects. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + securityPolicyProjectSuggestions: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for the repository in bytes. + admin_edit_path: + type: string + description: Admin path for editing project. Only available to admins. + admin_show_path: + type: string + description: Admin path of the project. Only available to admins. + allow_merge_on_skipped_pipeline: + type: boolean + description: If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. + allows_multiple_merge_request_assignees: + type: boolean + description: Project allows assigning multiple users to a merge request. + allows_multiple_merge_request_reviewers: + type: boolean + description: Project allows assigning multiple reviewers to a merge request. + archived: + type: boolean + description: Indicates if the project or any ancestor is archived. + autoclose_referenced_issues: + type: boolean + description: Indicates if issues referenced by merge requests and commits within the default branch are closed automatically. + avatar_url: + type: string + description: Avatar URL of the project. + ci_config_path_or_default: + type: string + description: Path of the CI configuration file. + container_registry_enabled: + type: boolean + description: Indicates if Container registry is enabled for the current user + container_scanning_for_registry_enabled: + type: boolean + description: Indicates whether container scanning for registry is enabled or not for the project. Returns `null` if unauthorized. + created_at: + type: string + description: Timestamp of the project creation. + description: + type: string + description: Short description of the project. + edit_path: + type: string + description: Path for editing project. + forks_count: + type: integer + description: Number of times the project has been forked. + full_path: + type: string + description: Full path of the project. + has_jira_vulnerability_issue_creation_enabled: + type: boolean + description: Indicates whether Jira issue creation from vulnerabilities is enabled. + http_url_to_repo: + type: string + description: URL to connect to the project via HTTPS. + id: + type: string + description: ID of the project. + import_status: + type: string + description: Status of import background job of the project. + is_forked: + type: boolean + description: Project is forked. + issues_enabled: + type: boolean + description: Indicates if Issues are enabled for the current user + jira_import_status: + type: string + description: Status of Jira import background job of the project. + jobs_enabled: + type: boolean + description: Indicates if CI/CD pipeline jobs are enabled for the current user. + last_activity_at: + type: string + description: Timestamp of the project last activity. + lfs_enabled: + type: boolean + description: Indicates if the project has Large File Storage (LFS) enabled. + merge_commit_template: + type: string + description: Template used to create merge commit message in merge requests. + merge_request_title_regex: + type: string + description: Regex used to validate the title of merge requests. + merge_request_title_regex_description: + type: string + description: Description of the regex used to validate the title of merge requests. + merge_requests_disable_committers_approval: + type: boolean + description: Indicates that committers of the given merge request cannot approve. + merge_requests_enabled: + type: boolean + description: Indicates if Merge requests are enabled for the current user + merge_requests_ff_only_enabled: + type: boolean + description: Indicates if no merge commits should be created and all merges should instead be fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded. + name: + type: string + description: Name of the project without the namespace. + name_with_namespace: + type: string + description: Name of the project including the namespace. + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Indicates if merge requests of the project can only be merged when all the discussions are resolved. + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Indicates that merges of merge requests should be blocked unless all status checks have passed. + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Indicates if merge requests of the project can only be merged with successful jobs. + open_issues_count: + type: integer + description: Number of open issues for the project. + open_merge_requests_count: + type: integer + description: Number of open merge requests for the project. + pages_force_https: + type: boolean + description: Project's Pages site redirects unsecured connections to HTTPS. + pages_use_unique_domain: + type: boolean + description: Project's Pages site uses a unique subdomain. + path: + type: string + description: Path of the project. + pre_receive_secret_detection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + prevent_merge_without_jira_issue_enabled: + type: boolean + description: Indicates if an associated issue from Jira is required. + printing_merge_request_link_enabled: + type: boolean + description: Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line. + public_jobs: + type: boolean + description: Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts. + remove_source_branch_after_merge: + type: boolean + description: Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project. + repository_size_excess: + type: number + description: Size of repository that exceeds the limit in bytes. + request_access_enabled: + type: boolean + description: Indicates if users can request member access to the project. + secret_push_protection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + security_configuration_path: + type: string + description: Path to project's security configuration. + security_dashboard_path: + type: string + description: Path to project's security dashboard. + service_desk_address: + type: string + description: E-mail address of the Service Desk. + service_desk_enabled: + type: boolean + description: Indicates if the project has Service Desk enabled. + shared_runners_enabled: + type: boolean + description: Indicates if shared runners are enabled for the project. + snippets_enabled: + type: boolean + description: Indicates if Snippets are enabled for the current user + squash_commit_template: + type: string + description: Template used to create squash commit message in merge requests. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + ssh_url_to_repo: + type: string + description: URL to connect to the project via SSH. + star_count: + type: integer + description: Number of times the project has been starred. + suggestion_commit_message: + type: string + description: Commit message used to apply merge request suggestions. + topics: + type: array + items: + type: string + description: List of project topics. + updated_at: + type: string + description: Timestamp of when the project was last updated. + visibility: + type: string + description: Visibility of the project. + web_path: + type: string + description: Web path of the project. + web_url: + type: string + description: Web URL of the project. + wiki_enabled: + type: boolean + description: Indicates if Wikis are enabled for the current user + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_security_policy_project&method=get: + post: + operationId: project_security_policy_project_get + summary: Security policy project assigned to the project, absent if assigned to a parent group. + description: Security policy project assigned to the project, absent if assigned to a parent group. Generated from the GitLab GraphQL schema field Project.securityPolicyProject (Project). + externalDocs: + description: 'GitLab GraphQL API reference: Project.securityPolicyProject' + url: https://docs.gitlab.com/api/graphql/reference/#projectsecuritypolicyproject + x-stackQL-graphQL: + id: gitlab.security.project_security_policy_project.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { securityPolicyProject { actual_repository_size_limit: actualRepositorySizeLimit admin_edit_path: adminEditPath admin_show_path: adminShowPath allow_merge_on_skipped_pipeline: allowMergeOnSkippedPipeline allows_multiple_merge_request_assignees: allowsMultipleMergeRequestAssignees allows_multiple_merge_request_reviewers: allowsMultipleMergeRequestReviewers archived autoclose_referenced_issues: autocloseReferencedIssues avatar_url: avatarUrl ci_config_path_or_default: ciConfigPathOrDefault container_registry_enabled: containerRegistryEnabled container_scanning_for_registry_enabled: containerScanningForRegistryEnabled created_at: createdAt description edit_path: editPath forks_count: forksCount full_path: fullPath has_jira_vulnerability_issue_creation_enabled: hasJiraVulnerabilityIssueCreationEnabled http_url_to_repo: httpUrlToRepo id import_status: importStatus is_forked: isForked issues_enabled: issuesEnabled jira_import_status: jiraImportStatus jobs_enabled: jobsEnabled last_activity_at: lastActivityAt lfs_enabled: lfsEnabled merge_commit_template: mergeCommitTemplate merge_request_title_regex: mergeRequestTitleRegex merge_request_title_regex_description: mergeRequestTitleRegexDescription merge_requests_disable_committers_approval: mergeRequestsDisableCommittersApproval merge_requests_enabled: mergeRequestsEnabled merge_requests_ff_only_enabled: mergeRequestsFfOnlyEnabled name name_with_namespace: nameWithNamespace only_allow_merge_if_all_discussions_are_resolved: onlyAllowMergeIfAllDiscussionsAreResolved only_allow_merge_if_all_status_checks_passed: onlyAllowMergeIfAllStatusChecksPassed only_allow_merge_if_pipeline_succeeds: onlyAllowMergeIfPipelineSucceeds open_issues_count: openIssuesCount open_merge_requests_count: openMergeRequestsCount pages_force_https: pagesForceHttps pages_use_unique_domain: pagesUseUniqueDomain path pre_receive_secret_detection_enabled: preReceiveSecretDetectionEnabled prevent_merge_without_jira_issue_enabled: preventMergeWithoutJiraIssueEnabled printing_merge_request_link_enabled: printingMergeRequestLinkEnabled public_jobs: publicJobs remove_source_branch_after_merge: removeSourceBranchAfterMerge repository_size_excess: repositorySizeExcess request_access_enabled: requestAccessEnabled secret_push_protection_enabled: secretPushProtectionEnabled security_configuration_path: securityConfigurationPath security_dashboard_path: securityDashboardPath service_desk_address: serviceDeskAddress service_desk_enabled: serviceDeskEnabled shared_runners_enabled: sharedRunnersEnabled snippets_enabled: snippetsEnabled squash_commit_template: squashCommitTemplate squash_read_only: squashReadOnly ssh_url_to_repo: sshUrlToRepo star_count: starCount suggestion_commit_message: suggestionCommitMessage topics updated_at: updatedAt visibility web_path: webPath web_url: webUrl wiki_enabled: wikiEnabled namespace { id full_path: fullPath name } group_: group { id full_path: fullPath name } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + securityPolicyProject: + type: object + properties: + actual_repository_size_limit: + type: number + description: Size limit for the repository in bytes. + admin_edit_path: + type: string + description: Admin path for editing project. Only available to admins. + admin_show_path: + type: string + description: Admin path of the project. Only available to admins. + allow_merge_on_skipped_pipeline: + type: boolean + description: If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. + allows_multiple_merge_request_assignees: + type: boolean + description: Project allows assigning multiple users to a merge request. + allows_multiple_merge_request_reviewers: + type: boolean + description: Project allows assigning multiple reviewers to a merge request. + archived: + type: boolean + description: Indicates if the project or any ancestor is archived. + autoclose_referenced_issues: + type: boolean + description: Indicates if issues referenced by merge requests and commits within the default branch are closed automatically. + avatar_url: + type: string + description: Avatar URL of the project. + ci_config_path_or_default: + type: string + description: Path of the CI configuration file. + container_registry_enabled: + type: boolean + description: Indicates if Container registry is enabled for the current user + container_scanning_for_registry_enabled: + type: boolean + description: Indicates whether container scanning for registry is enabled or not for the project. Returns `null` if unauthorized. + created_at: + type: string + description: Timestamp of the project creation. + description: + type: string + description: Short description of the project. + edit_path: + type: string + description: Path for editing project. + forks_count: + type: integer + description: Number of times the project has been forked. + full_path: + type: string + description: Full path of the project. + has_jira_vulnerability_issue_creation_enabled: + type: boolean + description: Indicates whether Jira issue creation from vulnerabilities is enabled. + http_url_to_repo: + type: string + description: URL to connect to the project via HTTPS. + id: + type: string + description: ID of the project. + import_status: + type: string + description: Status of import background job of the project. + is_forked: + type: boolean + description: Project is forked. + issues_enabled: + type: boolean + description: Indicates if Issues are enabled for the current user + jira_import_status: + type: string + description: Status of Jira import background job of the project. + jobs_enabled: + type: boolean + description: Indicates if CI/CD pipeline jobs are enabled for the current user. + last_activity_at: + type: string + description: Timestamp of the project last activity. + lfs_enabled: + type: boolean + description: Indicates if the project has Large File Storage (LFS) enabled. + merge_commit_template: + type: string + description: Template used to create merge commit message in merge requests. + merge_request_title_regex: + type: string + description: Regex used to validate the title of merge requests. + merge_request_title_regex_description: + type: string + description: Description of the regex used to validate the title of merge requests. + merge_requests_disable_committers_approval: + type: boolean + description: Indicates that committers of the given merge request cannot approve. + merge_requests_enabled: + type: boolean + description: Indicates if Merge requests are enabled for the current user + merge_requests_ff_only_enabled: + type: boolean + description: Indicates if no merge commits should be created and all merges should instead be fast-forwarded, which means that merging is only allowed if the branch could be fast-forwarded. + name: + type: string + description: Name of the project without the namespace. + name_with_namespace: + type: string + description: Name of the project including the namespace. + only_allow_merge_if_all_discussions_are_resolved: + type: boolean + description: Indicates if merge requests of the project can only be merged when all the discussions are resolved. + only_allow_merge_if_all_status_checks_passed: + type: boolean + description: Indicates that merges of merge requests should be blocked unless all status checks have passed. + only_allow_merge_if_pipeline_succeeds: + type: boolean + description: Indicates if merge requests of the project can only be merged with successful jobs. + open_issues_count: + type: integer + description: Number of open issues for the project. + open_merge_requests_count: + type: integer + description: Number of open merge requests for the project. + pages_force_https: + type: boolean + description: Project's Pages site redirects unsecured connections to HTTPS. + pages_use_unique_domain: + type: boolean + description: Project's Pages site uses a unique subdomain. + path: + type: string + description: Path of the project. + pre_receive_secret_detection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + prevent_merge_without_jira_issue_enabled: + type: boolean + description: Indicates if an associated issue from Jira is required. + printing_merge_request_link_enabled: + type: boolean + description: Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line. + public_jobs: + type: boolean + description: Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts. + remove_source_branch_after_merge: + type: boolean + description: Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project. + repository_size_excess: + type: number + description: Size of repository that exceeds the limit in bytes. + request_access_enabled: + type: boolean + description: Indicates if users can request member access to the project. + secret_push_protection_enabled: + type: boolean + description: Indicates whether secret push protection is on or not for the project. + security_configuration_path: + type: string + description: Path to project's security configuration. + security_dashboard_path: + type: string + description: Path to project's security dashboard. + service_desk_address: + type: string + description: E-mail address of the Service Desk. + service_desk_enabled: + type: boolean + description: Indicates if the project has Service Desk enabled. + shared_runners_enabled: + type: boolean + description: Indicates if shared runners are enabled for the project. + snippets_enabled: + type: boolean + description: Indicates if Snippets are enabled for the current user + squash_commit_template: + type: string + description: Template used to create squash commit message in merge requests. + squash_read_only: + type: boolean + description: Indicates if `squashReadOnly` is enabled. + ssh_url_to_repo: + type: string + description: URL to connect to the project via SSH. + star_count: + type: integer + description: Number of times the project has been starred. + suggestion_commit_message: + type: string + description: Commit message used to apply merge request suggestions. + topics: + type: array + items: + type: string + description: List of project topics. + updated_at: + type: string + description: Timestamp of when the project was last updated. + visibility: + type: string + description: Visibility of the project. + web_path: + type: string + description: Web path of the project. + web_url: + type: string + description: Web URL of the project. + wiki_enabled: + type: boolean + description: Indicates if Wikis are enabled for the current user + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=project_security_scanners&method=get: + post: + operationId: project_security_scanners_get + summary: Information about security analyzers used in the project. + description: Information about security analyzers used in the project. Generated from the GitLab GraphQL schema field Project.securityScanners (SecurityScanners). + externalDocs: + description: 'GitLab GraphQL API reference: Project.securityScanners' + url: https://docs.gitlab.com/api/graphql/reference/#projectsecurityscanners + x-stackQL-graphQL: + id: gitlab.security.project_security_scanners.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { securityScanners { available enabled pipeline_run: pipelineRun } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + securityScanners: + type: object + properties: + available: + type: array + items: + type: string + enum: + - SAST + - SAST_ADVANCED + - SAST_IAC + - DAST + - DEPENDENCY_SCANNING + - CONTAINER_SCANNING + - SECRET_DETECTION + - COVERAGE_FUZZING + - API_FUZZING + - CLUSTER_IMAGE_SCANNING + description: List of analyzers which are available for the project. + enabled: + type: array + items: + type: string + enum: + - SAST + - SAST_ADVANCED + - SAST_IAC + - DAST + - DEPENDENCY_SCANNING + - CONTAINER_SCANNING + - SECRET_DETECTION + - COVERAGE_FUZZING + - API_FUZZING + - CLUSTER_IMAGE_SCANNING + description: List of analyzers which are enabled for the project. + pipeline_run: + type: array + items: + type: string + enum: + - SAST + - SAST_ADVANCED + - SAST_IAC + - DAST + - DEPENDENCY_SCANNING + - CONTAINER_SCANNING + - SECRET_DETECTION + - COVERAGE_FUZZING + - API_FUZZING + - CLUSTER_IMAGE_SCANNING + description: List of analyzers which ran successfully in the latest pipeline. + /api/graphql?resource=project_vulnerabilities_count_by_day&method=list: + post: + operationId: project_vulnerabilities_count_by_day_list + summary: The historical number of vulnerabilities per day for the project. + description: The historical number of vulnerabilities per day for the project. Generated from the GitLab GraphQL schema field Project.vulnerabilitiesCountByDay (connection of VulnerabilitiesCountByDay nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.vulnerabilitiesCountByDay' + url: https://docs.gitlab.com/api/graphql/reference/#projectvulnerabilitiescountbyday + x-stackQL-graphQL: + id: gitlab.security.project_vulnerabilities_count_by_day.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.vulnerabilitiesCountByDay.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.vulnerabilitiesCountByDay.pageInfo.endCursor + terminateOnJsonPath: $.data.project.vulnerabilitiesCountByDay.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { vulnerabilitiesCountByDay(first: 100{{ .cursor }}, endDate: "{{ .end_date }}", startDate: "{{ .start_date }}") { nodes { critical date high info low medium total unknown } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: end_date + in: query + required: true + description: Last day for which to fetch vulnerability history. + schema: + type: string + - name: start_date + in: query + required: true + description: First day for which to fetch vulnerability history. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + vulnerabilitiesCountByDay: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + critical: + type: integer + description: Total number of vulnerabilities on a particular day with critical severity + date: + type: string + description: Date for the count. + high: + type: integer + description: Total number of vulnerabilities on a particular day with high severity + info: + type: integer + description: Total number of vulnerabilities on a particular day with info severity + low: + type: integer + description: Total number of vulnerabilities on a particular day with low severity + medium: + type: integer + description: Total number of vulnerabilities on a particular day with medium severity + total: + type: integer + description: Total number of vulnerabilities on a particular day. + unknown: + type: integer + description: Total number of vulnerabilities on a particular day with unknown severity + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_vulnerabilities&method=list: + post: + operationId: project_vulnerabilities_list + summary: Vulnerabilities reported on the project. + description: Vulnerabilities reported on the project. Generated from the GitLab GraphQL schema field Project.vulnerabilities (connection of Vulnerability nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.vulnerabilities' + url: https://docs.gitlab.com/api/graphql/reference/#projectvulnerabilities + x-stackQL-graphQL: + id: gitlab.security.project_vulnerabilities.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.vulnerabilities.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.vulnerabilities.pageInfo.endCursor + terminateOnJsonPath: $.data.project.vulnerabilities.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { vulnerabilities(first: 100{{ .cursor }}{{ if .has_ai_resolution }}, hasAiResolution: {{ .has_ai_resolution }}{{ end }}{{ if .has_issues }}, hasIssues: {{ .has_issues }}{{ end }}{{ if .has_merge_request }}, hasMergeRequest: {{ .has_merge_request }}{{ end }}{{ if .has_remediations }}, hasRemediations: {{ .has_remediations }}{{ end }}{{ if .has_resolution }}, hasResolution: {{ .has_resolution }}{{ end }}{{ if .identifier_name }}, identifierName: "{{ .identifier_name }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { ai_resolution_available: aiResolutionAvailable ai_resolution_enabled: aiResolutionEnabled confirmed_at: confirmedAt description detected_at: detectedAt dismissal_reason: dismissalReason dismissed_at: dismissedAt false_positive: falsePositive has_remediations: hasRemediations id name present_on_default_branch: presentOnDefaultBranch removed_from_code: removedFromCode report_type: reportType resolved_at: resolvedAt resolved_on_default_branch: resolvedOnDefaultBranch severity solution state state_comment: stateComment title unverified updated_at: updatedAt user_notes_count: userNotesCount uuid vulnerability_path: vulnerabilityPath web_url: webUrl project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: has_ai_resolution + in: query + required: false + description: Returns only the vulnerabilities which can likely be resolved by GitLab Duo Vulnerability Resolution. + schema: + type: boolean + - name: has_issues + in: query + required: false + description: Returns only the vulnerabilities which have linked issues. + schema: + type: boolean + - name: has_merge_request + in: query + required: false + description: Returns only the vulnerabilities which have linked merge requests. + schema: + type: boolean + - name: has_remediations + in: query + required: false + description: Returns only the vulnerabilities which have remediations. + schema: + type: boolean + - name: has_resolution + in: query + required: false + description: Returns only the vulnerabilities which have been resolved on default branch. + schema: + type: boolean + - name: identifier_name + in: query + required: false + description: Filter vulnerabilities by identifier name. Ignored when applied on instance security dashboard queries. + schema: + type: string + - name: sort + in: query + required: false + description: List vulnerabilities by sort order. + schema: + type: string + enum: + - severity_desc + - severity_asc + - detected_desc + - detected_asc + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + vulnerabilities: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + ai_resolution_available: + type: boolean + description: Indicates whether the type of vulnerability can be resolved with AI. + ai_resolution_enabled: + type: boolean + description: Indicates whether the specific vulnerability can be resolved with AI. + confirmed_at: + type: string + description: Timestamp of when the vulnerability state was changed to confirmed. + description: + type: string + description: Description of the vulnerability. + detected_at: + type: string + description: Timestamp of when the vulnerability was first detected. + dismissal_reason: + type: string + enum: + - ACCEPTABLE_RISK + - FALSE_POSITIVE + - MITIGATING_CONTROL + - USED_IN_TESTS + - NOT_APPLICABLE + description: Reason for dismissal. Returns `null` for states other than `dismissed`. + dismissed_at: + type: string + description: Timestamp of when the vulnerability state was changed to dismissed. + false_positive: + type: boolean + description: Indicates whether the vulnerability is a false positive. + has_remediations: + type: boolean + description: Indicates whether there is a remediation available for the vulnerability. + id: + type: string + description: GraphQL ID of the vulnerability. + name: + type: string + description: Name or title of the object. + present_on_default_branch: + type: boolean + description: Indicates whether the vulnerability is present on the default branch or not. + removed_from_code: + type: boolean + description: Indicates whether the vulnerability is present in the code or not. + report_type: + type: string + enum: + - SAST + - DEPENDENCY_SCANNING + - CONTAINER_SCANNING + - DAST + - SECRET_DETECTION + - COVERAGE_FUZZING + - API_FUZZING + - CLUSTER_IMAGE_SCANNING + - CONTAINER_SCANNING_FOR_REGISTRY + - SARIF + - GENERIC + description: Type of the security report that found the vulnerability (SAST, DEPENDENCY_SCANNING, CONTAINER_SCANNING, DAST, SECRET_DETECTION, COVERAGE_FUZZING, API_FUZZING, CLUSTER_IMAGE_SCANNING, CONTAINER_SCANNING_FOR_REGISTRY, SARIF, GENERIC). `Scan Type` in the UI. + resolved_at: + type: string + description: Timestamp of when the vulnerability state was changed to resolved. + resolved_on_default_branch: + type: boolean + description: Indicates whether the vulnerability is fixed on the default branch or not. + severity: + type: string + enum: + - INFO + - UNKNOWN + - LOW + - MEDIUM + - HIGH + - CRITICAL + description: Severity of the vulnerability (INFO, UNKNOWN, LOW, MEDIUM, HIGH, CRITICAL) + solution: + type: string + description: Recommended solution for the vulnerability. + state: + type: string + enum: + - CONFIRMED + - DETECTED + - DISMISSED + - RESOLVED + description: State of the vulnerability (DETECTED, CONFIRMED, RESOLVED, DISMISSED) + state_comment: + type: string + description: Comment given for the vulnerability state change. + title: + type: string + description: Title of the vulnerability. + unverified: + type: boolean + description: Indicates whether the finding was detected without an identified source (untrusted input). + updated_at: + type: string + description: Timestamp of when the vulnerability was last updated. + user_notes_count: + type: integer + description: Number of user notes attached to the vulnerability. + uuid: + type: string + description: UUID of the vulnerability finding. Can be used to look up the associated security report finding. + vulnerability_path: + type: string + description: Path to the vulnerability's details page. + web_url: + type: string + description: URL to the vulnerability's details page. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_vulnerability_images&method=list: + post: + operationId: project_vulnerability_images_list + summary: Container images reported on the project vulnerabilities. + description: Container images reported on the project vulnerabilities. Generated from the GitLab GraphQL schema field Project.vulnerabilityImages (connection of VulnerabilityContainerImage nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.vulnerabilityImages' + url: https://docs.gitlab.com/api/graphql/reference/#projectvulnerabilityimages + x-stackQL-graphQL: + id: gitlab.security.project_vulnerability_images.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.vulnerabilityImages.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.vulnerabilityImages.pageInfo.endCursor + terminateOnJsonPath: $.data.project.vulnerabilityImages.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { vulnerabilityImages(first: 100{{ .cursor }}) { nodes { name } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + vulnerabilityImages: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + name: + type: string + description: Name of the container image. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_vulnerability_scanners&method=list: + post: + operationId: project_vulnerability_scanners_list + summary: Vulnerability scanners reported on the project vulnerabilities. + description: Vulnerability scanners reported on the project vulnerabilities. Generated from the GitLab GraphQL schema field Project.vulnerabilityScanners (connection of VulnerabilityScanner nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.vulnerabilityScanners' + url: https://docs.gitlab.com/api/graphql/reference/#projectvulnerabilityscanners + x-stackQL-graphQL: + id: gitlab.security.project_vulnerability_scanners.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.vulnerabilityScanners.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.vulnerabilityScanners.pageInfo.endCursor + terminateOnJsonPath: $.data.project.vulnerabilityScanners.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { vulnerabilityScanners(first: 100{{ .cursor }}) { nodes { external_id: externalId id name report_type: reportType report_type_humanized: reportTypeHumanized vendor } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + vulnerabilityScanners: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + external_id: + type: string + description: External ID of the vulnerability scanner. + id: + type: string + description: ID of the scanner. + name: + type: string + description: Name of the vulnerability scanner. + report_type: + type: string + enum: + - SAST + - DEPENDENCY_SCANNING + - CONTAINER_SCANNING + - DAST + - SECRET_DETECTION + - COVERAGE_FUZZING + - API_FUZZING + - CLUSTER_IMAGE_SCANNING + - CONTAINER_SCANNING_FOR_REGISTRY + - SARIF + - GENERIC + description: Type of the vulnerability report. + report_type_humanized: + type: string + description: Humanized type of the vulnerability report. + vendor: + type: string + description: Vendor of the vulnerability scanner. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_vulnerability_severities_count&method=get: + post: + operationId: project_vulnerability_severities_count_get + summary: Counts for each vulnerability severity in the project. + description: Counts for each vulnerability severity in the project. Generated from the GitLab GraphQL schema field Project.vulnerabilitySeveritiesCount (VulnerabilitySeveritiesCount). + externalDocs: + description: 'GitLab GraphQL API reference: Project.vulnerabilitySeveritiesCount' + url: https://docs.gitlab.com/api/graphql/reference/#projectvulnerabilityseveritiescount + x-stackQL-graphQL: + id: gitlab.security.project_vulnerability_severities_count.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { vulnerabilitySeveritiesCount{{ if or .capped .has_ai_resolution .has_issues .has_merge_request .has_remediations .has_resolution }}({{ if .capped }}, capped: {{ .capped }}{{ end }}{{ if .has_ai_resolution }}, hasAiResolution: {{ .has_ai_resolution }}{{ end }}{{ if .has_issues }}, hasIssues: {{ .has_issues }}{{ end }}{{ if .has_merge_request }}, hasMergeRequest: {{ .has_merge_request }}{{ end }}{{ if .has_remediations }}, hasRemediations: {{ .has_remediations }}{{ end }}{{ if .has_resolution }}, hasResolution: {{ .has_resolution }}{{ end }}){{ end }} { critical high info low medium unknown } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: capped + in: query + required: false + description: Default value is false. When set to true, the count returned for each severity is capped at a maximum of 1001. Ignored when used along with any argument that requires advanced vulnerability management. + schema: + type: boolean + - name: has_ai_resolution + in: query + required: false + description: Filters vulnerabilities which can or can not be resolved by GitLab Duo Vulnerability Resolution. + schema: + type: boolean + - name: has_issues + in: query + required: false + description: Filter vulnerabilities that do or do not have issues. + schema: + type: boolean + - name: has_merge_request + in: query + required: false + description: Filter vulnerabilities that do or do not have a merge request. + schema: + type: boolean + - name: has_remediations + in: query + required: false + description: Filter vulnerabilities that do or do not have remediations. + schema: + type: boolean + - name: has_resolution + in: query + required: false + description: Filter vulnerabilities that do or do not have a resolution. + schema: + type: boolean + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + vulnerabilitySeveritiesCount: + type: object + properties: + critical: + type: integer + description: Number of vulnerabilities of CRITICAL severity of the project + high: + type: integer + description: Number of vulnerabilities of HIGH severity of the project + info: + type: integer + description: Number of vulnerabilities of INFO severity of the project + low: + type: integer + description: Number of vulnerabilities of LOW severity of the project + medium: + type: integer + description: Number of vulnerabilities of MEDIUM severity of the project + unknown: + type: integer + description: Number of vulnerabilities of UNKNOWN severity of the project + /api/graphql?resource=project_vulnerability_statistic&method=get: + post: + operationId: project_vulnerability_statistic_get + summary: Counts for each vulnerability severity in the project. + description: Counts for each vulnerability severity in the project. Generated from the GitLab GraphQL schema field Project.vulnerabilityStatistic (VulnerabilityStatisticType). + externalDocs: + description: 'GitLab GraphQL API reference: Project.vulnerabilityStatistic' + url: https://docs.gitlab.com/api/graphql/reference/#projectvulnerabilitystatistic + x-stackQL-graphQL: + id: gitlab.security.project_vulnerability_statistic.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { vulnerabilityStatistic { critical high info low medium project_id: projectId total unknown updated_at: updatedAt } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + vulnerabilityStatistic: + type: object + properties: + critical: + type: integer + description: Number of vulnerabilities of CRITICAL severity. + high: + type: integer + description: Number of vulnerabilities of HIGH severity. + info: + type: integer + description: Number of vulnerabilities of INFO severity. + low: + type: integer + description: Number of vulnerabilities of LOW severity. + medium: + type: integer + description: Number of vulnerabilities of MEDIUM severity. + project_id: + type: integer + description: Project ID. + total: + type: integer + description: Total of all vulnerabilities. + unknown: + type: integer + description: Number of vulnerabilities of UNKNOWN severity. + updated_at: + type: string + description: Date that data was last updated. + /api/graphql?resource=security_configuration&method=get: + post: + operationId: security_configuration_get + summary: Security configuration for the project + description: Security configuration for the project Generated from the GitLab GraphQL schema field Query.securityConfiguration (SecurityConfiguration). + externalDocs: + description: 'GitLab GraphQL API reference: Query.securityConfiguration' + url: https://docs.gitlab.com/api/graphql/reference/#querysecurityconfiguration + x-stackQL-graphQL: + id: gitlab.security.security_configuration.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { securityConfiguration(projectId: "{{ .project_id }}") { auto_devops_enabled: autoDevopsEnabled auto_devops_help_page_path: autoDevopsHelpPagePath auto_devops_path: autoDevopsPath can_apply_profiles: canApplyProfiles can_enable_auto_devops: canEnableAutoDevops can_manage_attributes: canManageAttributes can_read_attributes: canReadAttributes container_scanning_for_registry_enabled: containerScanningForRegistryEnabled gitlab_ci_history_path: gitlabCiHistoryPath gitlab_ci_present: gitlabCiPresent group_full_path: groupFullPath group_manage_attributes_path: groupManageAttributesPath help_page_path: helpPagePath latest_pipeline_path: latestPipelinePath license_configuration_source: licenseConfigurationSource license_scanning_for_cyclonedx_enabled: licenseScanningForCyclonedxEnabled max_tracked_refs: maxTrackedRefs secret_detection_configuration_path: secretDetectionConfigurationPath secret_push_protection_available: secretPushProtectionAvailable secret_push_protection_enabled: secretPushProtectionEnabled secret_push_protection_enforced: secretPushProtectionEnforced security_scan_profiles_licensed: securityScanProfilesLicensed security_training_enabled: securityTrainingEnabled upgrade_path: upgradePath user_is_project_admin: userIsProjectAdmin validity_checks_available: validityChecksAvailable validity_checks_enabled: validityChecksEnabled vulnerability_archive_export_path: vulnerabilityArchiveExportPath vulnerability_training_docs_path: vulnerabilityTrainingDocsPath } }' + x-stackql-protocol: graphql + parameters: + - name: project_id + in: query + required: true + description: Project to get the security configuration for. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + securityConfiguration: + type: object + properties: + auto_devops_enabled: + type: boolean + description: Whether Auto DevOps is enabled for the project. + auto_devops_help_page_path: + type: string + description: Path to Auto DevOps help documentation. + auto_devops_path: + type: string + description: Path to Auto DevOps settings. + can_apply_profiles: + type: boolean + description: Whether the current user can apply security profiles. + can_enable_auto_devops: + type: boolean + description: Whether the current user can enable Auto DevOps. + can_manage_attributes: + type: boolean + description: Whether the current user can manage security attributes. + can_read_attributes: + type: boolean + description: Whether the current user can read security attributes. + container_scanning_for_registry_enabled: + type: boolean + description: Whether container scanning for registry is enabled. + gitlab_ci_history_path: + type: string + description: Path to the GitLab CI configuration file history. + gitlab_ci_present: + type: boolean + description: Whether a GitLab CI configuration file exists in the project. + group_full_path: + type: string + description: Full path of the root ancestor group. + group_manage_attributes_path: + type: string + description: Path to manage group security attributes. + help_page_path: + type: string + description: Path to application security help documentation. + latest_pipeline_path: + type: string + description: Path to the latest pipeline on the default branch. + license_configuration_source: + type: string + description: Source of license configuration. + license_scanning_for_cyclonedx_enabled: + type: boolean + description: Whether license scanning for CycloneDX SBOM files is enabled. + max_tracked_refs: + type: integer + description: Maximum number of refs that can be tracked for security scanning. + secret_detection_configuration_path: + type: string + description: Path to secret detection configuration. + secret_push_protection_available: + type: boolean + description: Whether secret push protection is available for projects in the instance. + secret_push_protection_enabled: + type: boolean + description: Whether secret push protection is enabled for the project. + secret_push_protection_enforced: + type: boolean + description: Whether secret push protection is automatically enforced for all projects in the instance. + security_scan_profiles_licensed: + type: boolean + description: Whether the project has a license for security scan profiles. + security_training_enabled: + type: boolean + description: Whether security training is available for the project. + upgrade_path: + type: string + description: Path to upgrade security features. + user_is_project_admin: + type: boolean + description: Whether the current user has admin permissions for security testing. + validity_checks_available: + type: boolean + description: Whether secret detection validity checks are available. + validity_checks_enabled: + type: boolean + description: Whether secret detection validity checks are enabled. + vulnerability_archive_export_path: + type: string + description: Path to export vulnerability archives via API. + vulnerability_training_docs_path: + type: string + description: Path to vulnerability training documentation. + /api/graphql?resource=vulnerabilities_count_by_day&method=list: + post: + operationId: vulnerabilities_count_by_day_list + summary: The historical number of vulnerabilities per day for the projects on the current user's instance security dashboard. + description: The historical number of vulnerabilities per day for the projects on the current user's instance security dashboard. Generated from the GitLab GraphQL schema field Query.vulnerabilitiesCountByDay (connection of VulnerabilitiesCountByDay nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.vulnerabilitiesCountByDay' + url: https://docs.gitlab.com/api/graphql/reference/#queryvulnerabilitiescountbyday + x-stackQL-graphQL: + id: gitlab.security.vulnerabilities_count_by_day.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.vulnerabilitiesCountByDay.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.vulnerabilitiesCountByDay.pageInfo.endCursor + terminateOnJsonPath: $.data.vulnerabilitiesCountByDay.pageInfo.hasNextPage + query: 'query { vulnerabilitiesCountByDay(first: 100{{ .cursor }}, endDate: "{{ .end_date }}", startDate: "{{ .start_date }}") { nodes { critical date high info low medium total unknown } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: end_date + in: query + required: true + description: Last day for which to fetch vulnerability history. + schema: + type: string + - name: start_date + in: query + required: true + description: First day for which to fetch vulnerability history. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + vulnerabilitiesCountByDay: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + critical: + type: integer + description: Total number of vulnerabilities on a particular day with critical severity + date: + type: string + description: Date for the count. + high: + type: integer + description: Total number of vulnerabilities on a particular day with high severity + info: + type: integer + description: Total number of vulnerabilities on a particular day with info severity + low: + type: integer + description: Total number of vulnerabilities on a particular day with low severity + medium: + type: integer + description: Total number of vulnerabilities on a particular day with medium severity + total: + type: integer + description: Total number of vulnerabilities on a particular day. + unknown: + type: integer + description: Total number of vulnerabilities on a particular day with unknown severity + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=vulnerabilities&method=list: + post: + operationId: vulnerabilities_list + summary: Vulnerabilities reported on projects on the current user's instance security dashboard. + description: Vulnerabilities reported on projects on the current user's instance security dashboard. Generated from the GitLab GraphQL schema field Query.vulnerabilities (connection of Vulnerability nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.vulnerabilities' + url: https://docs.gitlab.com/api/graphql/reference/#queryvulnerabilities + x-stackQL-graphQL: + id: gitlab.security.vulnerabilities.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.vulnerabilities.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.vulnerabilities.pageInfo.endCursor + terminateOnJsonPath: $.data.vulnerabilities.pageInfo.hasNextPage + query: 'query { vulnerabilities(first: 100{{ .cursor }}{{ if .has_ai_resolution }}, hasAiResolution: {{ .has_ai_resolution }}{{ end }}{{ if .has_issues }}, hasIssues: {{ .has_issues }}{{ end }}{{ if .has_merge_request }}, hasMergeRequest: {{ .has_merge_request }}{{ end }}{{ if .has_remediations }}, hasRemediations: {{ .has_remediations }}{{ end }}{{ if .has_resolution }}, hasResolution: {{ .has_resolution }}{{ end }}{{ if .identifier_name }}, identifierName: "{{ .identifier_name }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { ai_resolution_available: aiResolutionAvailable ai_resolution_enabled: aiResolutionEnabled confirmed_at: confirmedAt description detected_at: detectedAt dismissal_reason: dismissalReason dismissed_at: dismissedAt false_positive: falsePositive has_remediations: hasRemediations id name present_on_default_branch: presentOnDefaultBranch removed_from_code: removedFromCode report_type: reportType resolved_at: resolvedAt resolved_on_default_branch: resolvedOnDefaultBranch severity solution state state_comment: stateComment title unverified updated_at: updatedAt user_notes_count: userNotesCount uuid vulnerability_path: vulnerabilityPath web_url: webUrl project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: has_ai_resolution + in: query + required: false + description: Returns only the vulnerabilities which can likely be resolved by GitLab Duo Vulnerability Resolution. + schema: + type: boolean + - name: has_issues + in: query + required: false + description: Returns only the vulnerabilities which have linked issues. + schema: + type: boolean + - name: has_merge_request + in: query + required: false + description: Returns only the vulnerabilities which have linked merge requests. + schema: + type: boolean + - name: has_remediations + in: query + required: false + description: Returns only the vulnerabilities which have remediations. + schema: + type: boolean + - name: has_resolution + in: query + required: false + description: Returns only the vulnerabilities which have been resolved on default branch. + schema: + type: boolean + - name: identifier_name + in: query + required: false + description: Filter vulnerabilities by identifier name. Ignored when applied on instance security dashboard queries. + schema: + type: string + - name: sort + in: query + required: false + description: List vulnerabilities by sort order. + schema: + type: string + enum: + - severity_desc + - severity_asc + - detected_desc + - detected_asc + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + vulnerabilities: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + ai_resolution_available: + type: boolean + description: Indicates whether the type of vulnerability can be resolved with AI. + ai_resolution_enabled: + type: boolean + description: Indicates whether the specific vulnerability can be resolved with AI. + confirmed_at: + type: string + description: Timestamp of when the vulnerability state was changed to confirmed. + description: + type: string + description: Description of the vulnerability. + detected_at: + type: string + description: Timestamp of when the vulnerability was first detected. + dismissal_reason: + type: string + enum: + - ACCEPTABLE_RISK + - FALSE_POSITIVE + - MITIGATING_CONTROL + - USED_IN_TESTS + - NOT_APPLICABLE + description: Reason for dismissal. Returns `null` for states other than `dismissed`. + dismissed_at: + type: string + description: Timestamp of when the vulnerability state was changed to dismissed. + false_positive: + type: boolean + description: Indicates whether the vulnerability is a false positive. + has_remediations: + type: boolean + description: Indicates whether there is a remediation available for the vulnerability. + id: + type: string + description: GraphQL ID of the vulnerability. + name: + type: string + description: Name or title of the object. + present_on_default_branch: + type: boolean + description: Indicates whether the vulnerability is present on the default branch or not. + removed_from_code: + type: boolean + description: Indicates whether the vulnerability is present in the code or not. + report_type: + type: string + enum: + - SAST + - DEPENDENCY_SCANNING + - CONTAINER_SCANNING + - DAST + - SECRET_DETECTION + - COVERAGE_FUZZING + - API_FUZZING + - CLUSTER_IMAGE_SCANNING + - CONTAINER_SCANNING_FOR_REGISTRY + - SARIF + - GENERIC + description: Type of the security report that found the vulnerability (SAST, DEPENDENCY_SCANNING, CONTAINER_SCANNING, DAST, SECRET_DETECTION, COVERAGE_FUZZING, API_FUZZING, CLUSTER_IMAGE_SCANNING, CONTAINER_SCANNING_FOR_REGISTRY, SARIF, GENERIC). `Scan Type` in the UI. + resolved_at: + type: string + description: Timestamp of when the vulnerability state was changed to resolved. + resolved_on_default_branch: + type: boolean + description: Indicates whether the vulnerability is fixed on the default branch or not. + severity: + type: string + enum: + - INFO + - UNKNOWN + - LOW + - MEDIUM + - HIGH + - CRITICAL + description: Severity of the vulnerability (INFO, UNKNOWN, LOW, MEDIUM, HIGH, CRITICAL) + solution: + type: string + description: Recommended solution for the vulnerability. + state: + type: string + enum: + - CONFIRMED + - DETECTED + - DISMISSED + - RESOLVED + description: State of the vulnerability (DETECTED, CONFIRMED, RESOLVED, DISMISSED) + state_comment: + type: string + description: Comment given for the vulnerability state change. + title: + type: string + description: Title of the vulnerability. + unverified: + type: boolean + description: Indicates whether the finding was detected without an identified source (untrusted input). + updated_at: + type: string + description: Timestamp of when the vulnerability was last updated. + user_notes_count: + type: integer + description: Number of user notes attached to the vulnerability. + uuid: + type: string + description: UUID of the vulnerability finding. Can be used to look up the associated security report finding. + vulnerability_path: + type: string + description: Path to the vulnerability's details page. + web_url: + type: string + description: URL to the vulnerability's details page. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=vulnerability&method=get: + post: + operationId: vulnerability_get + summary: Find a vulnerability. + description: Find a vulnerability. Generated from the GitLab GraphQL schema field Query.vulnerability (Vulnerability). + externalDocs: + description: 'GitLab GraphQL API reference: Query.vulnerability' + url: https://docs.gitlab.com/api/graphql/reference/#queryvulnerability + x-stackQL-graphQL: + id: gitlab.security.vulnerability.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { vulnerability(id: "{{ .id }}") { ai_resolution_available: aiResolutionAvailable ai_resolution_enabled: aiResolutionEnabled confirmed_at: confirmedAt description detected_at: detectedAt dismissal_reason: dismissalReason dismissed_at: dismissedAt false_positive: falsePositive has_remediations: hasRemediations id name present_on_default_branch: presentOnDefaultBranch removed_from_code: removedFromCode report_type: reportType resolved_at: resolvedAt resolved_on_default_branch: resolvedOnDefaultBranch severity solution state state_comment: stateComment title unverified updated_at: updatedAt user_notes_count: userNotesCount uuid vulnerability_path: vulnerabilityPath web_url: webUrl project { id full_path: fullPath name } } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Global ID of the Vulnerability. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + vulnerability: + type: object + properties: + ai_resolution_available: + type: boolean + description: Indicates whether the type of vulnerability can be resolved with AI. + ai_resolution_enabled: + type: boolean + description: Indicates whether the specific vulnerability can be resolved with AI. + confirmed_at: + type: string + description: Timestamp of when the vulnerability state was changed to confirmed. + description: + type: string + description: Description of the vulnerability. + detected_at: + type: string + description: Timestamp of when the vulnerability was first detected. + dismissal_reason: + type: string + enum: + - ACCEPTABLE_RISK + - FALSE_POSITIVE + - MITIGATING_CONTROL + - USED_IN_TESTS + - NOT_APPLICABLE + description: Reason for dismissal. Returns `null` for states other than `dismissed`. + dismissed_at: + type: string + description: Timestamp of when the vulnerability state was changed to dismissed. + false_positive: + type: boolean + description: Indicates whether the vulnerability is a false positive. + has_remediations: + type: boolean + description: Indicates whether there is a remediation available for the vulnerability. + id: + type: string + description: GraphQL ID of the vulnerability. + name: + type: string + description: Name or title of the object. + present_on_default_branch: + type: boolean + description: Indicates whether the vulnerability is present on the default branch or not. + removed_from_code: + type: boolean + description: Indicates whether the vulnerability is present in the code or not. + report_type: + type: string + enum: + - SAST + - DEPENDENCY_SCANNING + - CONTAINER_SCANNING + - DAST + - SECRET_DETECTION + - COVERAGE_FUZZING + - API_FUZZING + - CLUSTER_IMAGE_SCANNING + - CONTAINER_SCANNING_FOR_REGISTRY + - SARIF + - GENERIC + description: Type of the security report that found the vulnerability (SAST, DEPENDENCY_SCANNING, CONTAINER_SCANNING, DAST, SECRET_DETECTION, COVERAGE_FUZZING, API_FUZZING, CLUSTER_IMAGE_SCANNING, CONTAINER_SCANNING_FOR_REGISTRY, SARIF, GENERIC). `Scan Type` in the UI. + resolved_at: + type: string + description: Timestamp of when the vulnerability state was changed to resolved. + resolved_on_default_branch: + type: boolean + description: Indicates whether the vulnerability is fixed on the default branch or not. + severity: + type: string + enum: + - INFO + - UNKNOWN + - LOW + - MEDIUM + - HIGH + - CRITICAL + description: Severity of the vulnerability (INFO, UNKNOWN, LOW, MEDIUM, HIGH, CRITICAL) + solution: + type: string + description: Recommended solution for the vulnerability. + state: + type: string + enum: + - CONFIRMED + - DETECTED + - DISMISSED + - RESOLVED + description: State of the vulnerability (DETECTED, CONFIRMED, RESOLVED, DISMISSED) + state_comment: + type: string + description: Comment given for the vulnerability state change. + title: + type: string + description: Title of the vulnerability. + unverified: + type: boolean + description: Indicates whether the finding was detected without an identified source (untrusted input). + updated_at: + type: string + description: Timestamp of when the vulnerability was last updated. + user_notes_count: + type: integer + description: Number of user notes attached to the vulnerability. + uuid: + type: string + description: UUID of the vulnerability finding. Can be used to look up the associated security report finding. + vulnerability_path: + type: string + description: Path to the vulnerability's details page. + web_url: + type: string + description: URL to the vulnerability's details page. + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string +components: + x-stackQL-resources: + dependency: + id: gitlab.security.dependency + name: dependency + title: Dependency + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=dependency&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.dependency + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/dependency/methods/get' + insert: [] + update: [] + delete: [] + group_approval_policies: + id: gitlab.security.group_approval_policies + name: group_approval_policies + title: Group Approval Policies + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_approval_policies&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.approvalPolicies.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_approval_policies/methods/list' + insert: [] + update: [] + delete: [] + group_compliance_frameworks: + id: gitlab.security.group_compliance_frameworks + name: group_compliance_frameworks + title: Group Compliance Frameworks + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_compliance_frameworks&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.complianceFrameworks.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_compliance_frameworks/methods/list' + insert: [] + update: [] + delete: [] + group_dependencies: + id: gitlab.security.group_dependencies + name: group_dependencies + title: Group Dependencies + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_dependencies&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.dependencies.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_dependencies/methods/list' + insert: [] + update: [] + delete: [] + group_project_compliance_standards_adherence: + id: gitlab.security.group_project_compliance_standards_adherence + name: group_project_compliance_standards_adherence + title: Group Project Compliance Standards Adherence + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_project_compliance_standards_adherence&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.projectComplianceStandardsAdherence.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_project_compliance_standards_adherence/methods/list' + insert: [] + update: [] + delete: [] + group_scan_execution_policies: + id: gitlab.security.group_scan_execution_policies + name: group_scan_execution_policies + title: Group Scan Execution Policies + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_scan_execution_policies&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.scanExecutionPolicies.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_scan_execution_policies/methods/list' + insert: [] + update: [] + delete: [] + group_security_policy_project_suggestions: + id: gitlab.security.group_security_policy_project_suggestions + name: group_security_policy_project_suggestions + title: Group Security Policy Project Suggestions + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_security_policy_project_suggestions&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.securityPolicyProjectSuggestions.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_security_policy_project_suggestions/methods/list' + insert: [] + update: [] + delete: [] + group_security_policy_project: + id: gitlab.security.group_security_policy_project + name: group_security_policy_project + title: Group Security Policy Project + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_security_policy_project&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.securityPolicyProject + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_security_policy_project/methods/get' + insert: [] + update: [] + delete: [] + group_vulnerabilities_count_by_day: + id: gitlab.security.group_vulnerabilities_count_by_day + name: group_vulnerabilities_count_by_day + title: Group Vulnerabilities Count By Day + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_vulnerabilities_count_by_day&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.vulnerabilitiesCountByDay.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_vulnerabilities_count_by_day/methods/list' + insert: [] + update: [] + delete: [] + group_vulnerabilities: + id: gitlab.security.group_vulnerabilities + name: group_vulnerabilities + title: Group Vulnerabilities + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_vulnerabilities&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.vulnerabilities.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_vulnerabilities/methods/list' + insert: [] + update: [] + delete: [] + group_vulnerability_namespace_statistic: + id: gitlab.security.group_vulnerability_namespace_statistic + name: group_vulnerability_namespace_statistic + title: Group Vulnerability Namespace Statistic + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_vulnerability_namespace_statistic&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.vulnerabilityNamespaceStatistic + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_vulnerability_namespace_statistic/methods/get' + insert: [] + update: [] + delete: [] + group_vulnerability_scanners: + id: gitlab.security.group_vulnerability_scanners + name: group_vulnerability_scanners + title: Group Vulnerability Scanners + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_vulnerability_scanners&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.vulnerabilityScanners.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_vulnerability_scanners/methods/list' + insert: [] + update: [] + delete: [] + group_vulnerability_severities_count: + id: gitlab.security.group_vulnerability_severities_count + name: group_vulnerability_severities_count + title: Group Vulnerability Severities Count + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_vulnerability_severities_count&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.vulnerabilitySeveritiesCount + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_vulnerability_severities_count/methods/get' + insert: [] + update: [] + delete: [] + namespace_security_projects: + id: gitlab.security.namespace_security_projects + name: namespace_security_projects + title: Namespace Security Projects + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=namespace_security_projects&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.namespaceSecurityProjects.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/namespace_security_projects/methods/list' + insert: [] + update: [] + delete: [] + project_approval_policies: + id: gitlab.security.project_approval_policies + name: project_approval_policies + title: Project Approval Policies + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_approval_policies&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.approvalPolicies.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_approval_policies/methods/list' + insert: [] + update: [] + delete: [] + project_compliance_frameworks: + id: gitlab.security.project_compliance_frameworks + name: project_compliance_frameworks + title: Project Compliance Frameworks + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_compliance_frameworks&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.complianceFrameworks.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_compliance_frameworks/methods/list' + insert: [] + update: [] + delete: [] + project_compliance_standards_adherence: + id: gitlab.security.project_compliance_standards_adherence + name: project_compliance_standards_adherence + title: Project Compliance Standards Adherence + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_compliance_standards_adherence&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.complianceStandardsAdherence.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_compliance_standards_adherence/methods/list' + insert: [] + update: [] + delete: [] + project_compliance_violation: + id: gitlab.security.project_compliance_violation + name: project_compliance_violation + title: Project Compliance Violation + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_compliance_violation&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.projectComplianceViolation + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_compliance_violation/methods/get' + insert: [] + update: [] + delete: [] + project_corpuses: + id: gitlab.security.project_corpuses + name: project_corpuses + title: Project Corpuses + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_corpuses&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.corpuses.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_corpuses/methods/list' + insert: [] + update: [] + delete: [] + project_dast_profile: + id: gitlab.security.project_dast_profile + name: project_dast_profile + title: Project Dast Profile + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_dast_profile&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.dastProfile + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_dast_profile/methods/get' + insert: [] + update: [] + delete: [] + project_dast_profiles: + id: gitlab.security.project_dast_profiles + name: project_dast_profiles + title: Project Dast Profiles + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_dast_profiles&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.dastProfiles.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_dast_profiles/methods/list' + insert: [] + update: [] + delete: [] + project_dast_scanner_profiles: + id: gitlab.security.project_dast_scanner_profiles + name: project_dast_scanner_profiles + title: Project Dast Scanner Profiles + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_dast_scanner_profiles&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.dastScannerProfiles.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_dast_scanner_profiles/methods/list' + insert: [] + update: [] + delete: [] + project_dast_site_profile: + id: gitlab.security.project_dast_site_profile + name: project_dast_site_profile + title: Project Dast Site Profile + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_dast_site_profile&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.dastSiteProfile + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_dast_site_profile/methods/get' + insert: [] + update: [] + delete: [] + project_dast_site_profiles: + id: gitlab.security.project_dast_site_profiles + name: project_dast_site_profiles + title: Project Dast Site Profiles + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_dast_site_profiles&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.dastSiteProfiles.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_dast_site_profiles/methods/list' + insert: [] + update: [] + delete: [] + project_dast_site_validations: + id: gitlab.security.project_dast_site_validations + name: project_dast_site_validations + title: Project Dast Site Validations + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_dast_site_validations&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.dastSiteValidations.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_dast_site_validations/methods/list' + insert: [] + update: [] + delete: [] + project_dependencies: + id: gitlab.security.project_dependencies + name: project_dependencies + title: Project Dependencies + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_dependencies&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.dependencies.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_dependencies/methods/list' + insert: [] + update: [] + delete: [] + project_scan_execution_policies: + id: gitlab.security.project_scan_execution_policies + name: project_scan_execution_policies + title: Project Scan Execution Policies + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_scan_execution_policies&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.scanExecutionPolicies.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_scan_execution_policies/methods/list' + insert: [] + update: [] + delete: [] + project_security_policy_project_linked_groups: + id: gitlab.security.project_security_policy_project_linked_groups + name: project_security_policy_project_linked_groups + title: Project Security Policy Project Linked Groups + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_security_policy_project_linked_groups&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.securityPolicyProjectLinkedGroups.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_security_policy_project_linked_groups/methods/list' + insert: [] + update: [] + delete: [] + project_security_policy_project_linked_projects: + id: gitlab.security.project_security_policy_project_linked_projects + name: project_security_policy_project_linked_projects + title: Project Security Policy Project Linked Projects + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_security_policy_project_linked_projects&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.securityPolicyProjectLinkedProjects.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_security_policy_project_linked_projects/methods/list' + insert: [] + update: [] + delete: [] + project_security_policy_project_suggestions: + id: gitlab.security.project_security_policy_project_suggestions + name: project_security_policy_project_suggestions + title: Project Security Policy Project Suggestions + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_security_policy_project_suggestions&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.securityPolicyProjectSuggestions.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_security_policy_project_suggestions/methods/list' + insert: [] + update: [] + delete: [] + project_security_policy_project: + id: gitlab.security.project_security_policy_project + name: project_security_policy_project + title: Project Security Policy Project + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_security_policy_project&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.securityPolicyProject + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_security_policy_project/methods/get' + insert: [] + update: [] + delete: [] + project_security_scanners: + id: gitlab.security.project_security_scanners + name: project_security_scanners + title: Project Security Scanners + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_security_scanners&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.securityScanners + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_security_scanners/methods/get' + insert: [] + update: [] + delete: [] + project_vulnerabilities_count_by_day: + id: gitlab.security.project_vulnerabilities_count_by_day + name: project_vulnerabilities_count_by_day + title: Project Vulnerabilities Count By Day + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_vulnerabilities_count_by_day&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.vulnerabilitiesCountByDay.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_vulnerabilities_count_by_day/methods/list' + insert: [] + update: [] + delete: [] + project_vulnerabilities: + id: gitlab.security.project_vulnerabilities + name: project_vulnerabilities + title: Project Vulnerabilities + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_vulnerabilities&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.vulnerabilities.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_vulnerabilities/methods/list' + insert: [] + update: [] + delete: [] + project_vulnerability_images: + id: gitlab.security.project_vulnerability_images + name: project_vulnerability_images + title: Project Vulnerability Images + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_vulnerability_images&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.vulnerabilityImages.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_vulnerability_images/methods/list' + insert: [] + update: [] + delete: [] + project_vulnerability_scanners: + id: gitlab.security.project_vulnerability_scanners + name: project_vulnerability_scanners + title: Project Vulnerability Scanners + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_vulnerability_scanners&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.vulnerabilityScanners.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_vulnerability_scanners/methods/list' + insert: [] + update: [] + delete: [] + project_vulnerability_severities_count: + id: gitlab.security.project_vulnerability_severities_count + name: project_vulnerability_severities_count + title: Project Vulnerability Severities Count + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_vulnerability_severities_count&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.vulnerabilitySeveritiesCount + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_vulnerability_severities_count/methods/get' + insert: [] + update: [] + delete: [] + project_vulnerability_statistic: + id: gitlab.security.project_vulnerability_statistic + name: project_vulnerability_statistic + title: Project Vulnerability Statistic + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_vulnerability_statistic&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.vulnerabilityStatistic + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_vulnerability_statistic/methods/get' + insert: [] + update: [] + delete: [] + security_configuration: + id: gitlab.security.security_configuration + name: security_configuration + title: Security Configuration + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=security_configuration&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.securityConfiguration + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/security_configuration/methods/get' + insert: [] + update: [] + delete: [] + vulnerabilities_count_by_day: + id: gitlab.security.vulnerabilities_count_by_day + name: vulnerabilities_count_by_day + title: Vulnerabilities Count By Day + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=vulnerabilities_count_by_day&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.vulnerabilitiesCountByDay.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/vulnerabilities_count_by_day/methods/list' + insert: [] + update: [] + delete: [] + vulnerabilities: + id: gitlab.security.vulnerabilities + name: vulnerabilities + title: Vulnerabilities + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=vulnerabilities&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.vulnerabilities.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/vulnerabilities/methods/list' + insert: [] + update: [] + delete: [] + vulnerability: + id: gitlab.security.vulnerability + name: vulnerability + title: Vulnerability + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=vulnerability&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.vulnerability + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/vulnerability/methods/get' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/snippets.yaml b/providers/src/gitlab/v00.00.00000/services/snippets.yaml new file mode 100644 index 00000000..af5d6f95 --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/snippets.yaml @@ -0,0 +1,365 @@ +openapi: 3.0.3 +info: + title: snippets API + description: 'Snippets - instance and project snippets. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=project_snippets&method=list: + post: + operationId: project_snippets_list + summary: Snippets of the project. + description: Snippets of the project. Generated from the GitLab GraphQL schema field Project.snippets (connection of Snippet nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.snippets' + url: https://docs.gitlab.com/api/graphql/reference/#projectsnippets + x-stackQL-graphQL: + id: gitlab.snippets.project_snippets.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.snippets.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.snippets.pageInfo.endCursor + terminateOnJsonPath: $.data.project.snippets.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { snippets(first: 100{{ .cursor }}{{ if .visibility }}, visibility: {{ .visibility }}{{ end }}) { nodes { created_at: createdAt description file_name: fileName hidden http_url_to_repo: httpUrlToRepo id imported imported_from: importedFrom raw_url: rawUrl ssh_url_to_repo: sshUrlToRepo title updated_at: updatedAt visibility_level: visibilityLevel web_url: webUrl author { id username name } project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + - name: visibility + in: query + required: false + description: Visibility of the snippet. + schema: + type: string + enum: + - private + - internal + - public + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + snippets: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp the snippet was created. + description: + type: string + description: Description of the snippet. + file_name: + type: string + description: File Name of the snippet. + hidden: + type: boolean + description: Indicates the snippet is hidden because the author has been banned. + http_url_to_repo: + type: string + description: HTTP URL to the snippet repository. + id: + type: string + description: ID of the snippet. + imported: + type: boolean + description: Indicates whether the snippet was imported. + imported_from: + type: string + enum: + - NONE + - GITLAB_MIGRATION + - GITLAB_PROJECT + - GITLAB_GROUP + - GITHUB + - BITBUCKET + - BITBUCKET_SERVER + - FOGBUGZ + - GITEA + - GIT + - MANIFEST + - CUSTOM_TEMPLATE + - JIRA + - OFFLINE_TRANSFER + description: Import source of the snippet. + raw_url: + type: string + description: Raw URL of the snippet. + ssh_url_to_repo: + type: string + description: SSH URL to the snippet repository. + title: + type: string + description: Title of the snippet. + updated_at: + type: string + description: Timestamp the snippet was updated. + visibility_level: + type: string + enum: + - private + - internal + - public + description: Visibility Level of the snippet. + web_url: + type: string + description: Web URL of the snippet. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=snippets&method=list: + post: + operationId: snippets_list + summary: Find Snippets visible to the current user. + description: Find Snippets visible to the current user. Generated from the GitLab GraphQL schema field Query.snippets (connection of Snippet nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.snippets' + url: https://docs.gitlab.com/api/graphql/reference/#querysnippets + x-stackQL-graphQL: + id: gitlab.snippets.snippets.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.snippets.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.snippets.pageInfo.endCursor + terminateOnJsonPath: $.data.snippets.pageInfo.hasNextPage + query: 'query { snippets(first: 100{{ .cursor }}{{ if .author_id }}, authorId: "{{ .author_id }}"{{ end }}{{ if .explore }}, explore: {{ .explore }}{{ end }}{{ if .project_id }}, projectId: "{{ .project_id }}"{{ end }}{{ if .type }}, type: {{ .type }}{{ end }}{{ if .visibility }}, visibility: {{ .visibility }}{{ end }}) { nodes { created_at: createdAt description file_name: fileName hidden http_url_to_repo: httpUrlToRepo id imported imported_from: importedFrom raw_url: rawUrl ssh_url_to_repo: sshUrlToRepo title updated_at: updatedAt visibility_level: visibilityLevel web_url: webUrl author { id username name } project { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: author_id + in: query + required: false + description: ID of an author. + schema: + type: string + - name: explore + in: query + required: false + description: Explore personal snippets. + schema: + type: boolean + - name: project_id + in: query + required: false + description: ID of a project. + schema: + type: string + - name: type + in: query + required: false + description: Type of snippet. + schema: + type: string + enum: + - personal + - project + - name: visibility + in: query + required: false + description: Visibility of the snippet. + schema: + type: string + enum: + - private + - internal + - public + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + snippets: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + created_at: + type: string + description: Timestamp the snippet was created. + description: + type: string + description: Description of the snippet. + file_name: + type: string + description: File Name of the snippet. + hidden: + type: boolean + description: Indicates the snippet is hidden because the author has been banned. + http_url_to_repo: + type: string + description: HTTP URL to the snippet repository. + id: + type: string + description: ID of the snippet. + imported: + type: boolean + description: Indicates whether the snippet was imported. + imported_from: + type: string + enum: + - NONE + - GITLAB_MIGRATION + - GITLAB_PROJECT + - GITLAB_GROUP + - GITHUB + - BITBUCKET + - BITBUCKET_SERVER + - FOGBUGZ + - GITEA + - GIT + - MANIFEST + - CUSTOM_TEMPLATE + - JIRA + - OFFLINE_TRANSFER + description: Import source of the snippet. + raw_url: + type: string + description: Raw URL of the snippet. + ssh_url_to_repo: + type: string + description: SSH URL to the snippet repository. + title: + type: string + description: Title of the snippet. + updated_at: + type: string + description: Timestamp the snippet was updated. + visibility_level: + type: string + enum: + - private + - internal + - public + description: Visibility Level of the snippet. + web_url: + type: string + description: Web URL of the snippet. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + project_snippets: + id: gitlab.snippets.project_snippets + name: project_snippets + title: Project Snippets + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_snippets&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.snippets.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_snippets/methods/list' + insert: [] + update: [] + delete: [] + snippets: + id: gitlab.snippets.snippets + name: snippets + title: Snippets + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=snippets&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.snippets.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/snippets/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/users.yaml b/providers/src/gitlab/v00.00.00000/services/users.yaml new file mode 100644 index 00000000..f0f677cf --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/users.yaml @@ -0,0 +1,1080 @@ +openapi: 3.0.3 +info: + title: users API + description: 'Users and access - user details, the current user, user permissions on projects and groups, and to-do items. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=current_user&method=get: + post: + operationId: current_user_get + summary: Get information about current user. + description: Get information about current user. Generated from the GitLab GraphQL schema field Query.currentUser (CurrentUser). + externalDocs: + description: 'GitLab GraphQL API reference: Query.currentUser' + url: https://docs.gitlab.com/api/graphql/reference/#querycurrentuser + x-stackQL-graphQL: + id: gitlab.users.current_user.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { currentUser { active admin avatar_url: avatarUrl bio bot commit_email: commitEmail composite_identity_enforced: compositeIdentityEnforced created_at: createdAt discord duo_classic_chat_available: duoClassicChatAvailable github gitpod_enabled: gitpodEnabled group_count: groupCount human id job_title: jobTitle last_activity_on: lastActivityOn linkedin location name organization preferences_gitpod_path: preferencesGitpodPath profile_enable_gitpod_path: profileEnableGitpodPath project_count: projectCount pronouns public_email: publicEmail state twitter type username web_path: webPath web_url: webUrl namespace { id full_path: fullPath name } } }' + x-stackql-protocol: graphql + parameters: [] + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + currentUser: + type: object + properties: + active: + type: boolean + description: Indicates if the user is active. + admin: + type: boolean + description: Indicates if the user is an instance administrator. + avatar_url: + type: string + description: URL of the user's avatar. + bio: + type: string + description: Bio of the user. + bot: + type: boolean + description: Indicates if the user is a bot. + commit_email: + type: string + description: User's default commit email. + composite_identity_enforced: + type: boolean + description: Indicates if composite identity is enforced for the user. + created_at: + type: string + description: Timestamp of when the user was created. + discord: + type: string + description: Discord ID of the user. + duo_classic_chat_available: + type: boolean + description: User access to GitLab Duo Chat (non-agentic) feature. + github: + type: string + description: GitHub profile name of the user. + gitpod_enabled: + type: boolean + description: Whether Ona is enabled at the user level. + group_count: + type: integer + description: Group count for the user. + human: + type: boolean + description: Indicates if the user is a regular user. + id: + type: string + description: Global ID of the user. + job_title: + type: string + description: Job title of the user. + last_activity_on: + type: string + description: Date the user last performed any actions. + linkedin: + type: string + description: LinkedIn profile name of the user. + location: + type: string + description: Location of the user. + name: + type: string + description: Human-readable name of the user. Returns `****` if the user is a project bot and the requester does not have permission to view the project. + organization: + type: string + description: Who the user represents or works for. + preferences_gitpod_path: + type: string + description: Web path to the Ona section within user preferences. + profile_enable_gitpod_path: + type: string + description: Web path to enable Ona for the user. + project_count: + type: integer + description: Project count for the user. + pronouns: + type: string + description: Pronouns of the user. + public_email: + type: string + description: User's public email. + state: + type: string + enum: + - active + - blocked + - deactivated + - banned + - ldap_blocked + - blocked_pending_approval + description: State of the user. + twitter: + type: string + description: X (formerly Twitter) username of the user. + type: + type: string + enum: + - HUMAN + - SUPPORT_BOT + - ALERT_BOT + - VISUAL_REVIEW_BOT + - SERVICE_USER + - GHOST + - PROJECT_BOT + - SECURITY_BOT + - AUTOMATION_BOT + - SECURITY_POLICY_BOT + - ADMIN_BOT + - SERVICE_ACCOUNT + - PLACEHOLDER + - DUO_CODE_REVIEW_BOT + - IMPORT_USER + description: Type of the user. + username: + type: string + description: Username of the user. Unique within the instance of GitLab. + web_path: + type: string + description: Web path of the user. + web_url: + type: string + description: Web URL of the user. + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=project_user_access_authorized_agents&method=list: + post: + operationId: project_user_access_authorized_agents_list + summary: Authorized cluster agents for the project through user_access keyword. + description: Authorized cluster agents for the project through user_access keyword. Generated from the GitLab GraphQL schema field Project.userAccessAuthorizedAgents (connection of ClusterAgentAuthorizationUserAccess nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.userAccessAuthorizedAgents' + url: https://docs.gitlab.com/api/graphql/reference/#projectuseraccessauthorizedagents + x-stackQL-graphQL: + id: gitlab.users.project_user_access_authorized_agents.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.userAccessAuthorizedAgents.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.userAccessAuthorizedAgents.pageInfo.endCursor + terminateOnJsonPath: $.data.project.userAccessAuthorizedAgents.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { userAccessAuthorizedAgents(first: 100{{ .cursor }}) { nodes { config } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + userAccessAuthorizedAgents: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + config: + type: string + description: Configuration for the authorized project. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_user_permissions&method=get: + post: + operationId: project_user_permissions_get + summary: Permissions for the current user on the resource + description: Permissions for the current user on the resource Generated from the GitLab GraphQL schema field Project.userPermissions (ProjectPermissions). + externalDocs: + description: 'GitLab GraphQL API reference: Project.userPermissions' + url: https://docs.gitlab.com/api/graphql/reference/#projectuserpermissions + x-stackQL-graphQL: + id: gitlab.users.project_user_permissions.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { project(fullPath: "{{ .full_path }}") { userPermissions { admin_all_resources: adminAllResources admin_issue: adminIssue admin_operations: adminOperations admin_path_locks: adminPathLocks admin_project: adminProject admin_remote_mirror: adminRemoteMirror admin_wiki: adminWiki admin_work_item_lifecycle: adminWorkItemLifecycle archive_project: archiveProject can_leave: canLeave change_namespace: changeNamespace change_visibility_level: changeVisibilityLevel create_deployment: createDeployment create_design: createDesign create_issue: createIssue create_label: createLabel create_merge_request_from: createMergeRequestFrom create_merge_request_in: createMergeRequestIn create_pages: createPages create_path_lock: createPathLock create_pipeline: createPipeline create_pipeline_schedule: createPipelineSchedule create_snippet: createSnippet create_wiki: createWiki create_work_item: createWorkItem destroy_design: destroyDesign destroy_pages: destroyPages destroy_wiki: destroyWiki download_code: downloadCode download_wiki_code: downloadWikiCode fork_project: forkProject generate_description: generateDescription import_issues: importIssues move_design: moveDesign push_code: pushCode push_to_delete_protected_branch: pushToDeleteProtectedBranch read_commit_status: readCommitStatus read_crm_contact: readCrmContact read_crm_organization: readCrmOrganization read_cycle_analytics: readCycleAnalytics read_design: readDesign read_environment: readEnvironment read_merge_request: readMergeRequest read_pages_content: readPagesContent read_path_locks: readPathLocks read_project: readProject read_project_member: readProjectMember read_wiki: readWiki remove_fork_project: removeForkProject remove_pages: removePages remove_project: removeProject rename_project: renameProject request_access: requestAccess update_design: updateDesign update_pages: updatePages update_wiki: updateWiki upload_file: uploadFile view_edit_page: viewEditPage } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + userPermissions: + type: object + properties: + admin_all_resources: + type: boolean + description: If `true`, the user is an instance administrator. + admin_issue: + type: boolean + description: If `true`, the user can perform `admin_issue` on this resource + admin_operations: + type: boolean + description: If `true`, the user can perform `admin_operations` on this resource + admin_path_locks: + type: boolean + description: If `true`, the user can perform `admin_path_locks` on this resource + admin_project: + type: boolean + description: If `true`, the user can perform `admin_project` on this resource + admin_remote_mirror: + type: boolean + description: If `true`, the user can perform `admin_remote_mirror` on this resource + admin_wiki: + type: boolean + description: If `true`, the user can perform `admin_wiki` on this resource + admin_work_item_lifecycle: + type: boolean + description: If `true`, the user can perform `admin_work_item_lifecycle` on this resource + archive_project: + type: boolean + description: If `true`, the user can perform `archive_project` on this resource + can_leave: + type: boolean + description: If `true`, the user can leave this project. + change_namespace: + type: boolean + description: If `true`, the user can perform `change_namespace` on this resource + change_visibility_level: + type: boolean + description: If `true`, the user can perform `change_visibility_level` on this resource + create_deployment: + type: boolean + description: If `true`, the user can perform `create_deployment` on this resource + create_design: + type: boolean + description: If `true`, the user can perform `create_design` on this resource + create_issue: + type: boolean + description: If `true`, the user can perform `create_issue` on this resource + create_label: + type: boolean + description: If `true`, the user can perform `create_label` on this resource + create_merge_request_from: + type: boolean + description: If `true`, the user can perform `create_merge_request_from` on this resource + create_merge_request_in: + type: boolean + description: If `true`, the user can perform `create_merge_request_in` on this resource + create_pages: + type: boolean + description: If `true`, the user can perform `create_pages` on this resource + create_path_lock: + type: boolean + description: If `true`, the user can perform `create_path_lock` on this resource + create_pipeline: + type: boolean + description: If `true`, the user can perform `create_pipeline` on this resource + create_pipeline_schedule: + type: boolean + description: If `true`, the user can perform `create_pipeline_schedule` on this resource + create_snippet: + type: boolean + description: If `true`, the user can perform `create_snippet` on this resource + create_wiki: + type: boolean + description: If `true`, the user can perform `create_wiki` on this resource + create_work_item: + type: boolean + description: If `true`, the user can perform `create_work_item` on this resource + destroy_design: + type: boolean + description: If `true`, the user can perform `destroy_design` on this resource + destroy_pages: + type: boolean + description: If `true`, the user can perform `destroy_pages` on this resource + destroy_wiki: + type: boolean + description: If `true`, the user can perform `destroy_wiki` on this resource + download_code: + type: boolean + description: If `true`, the user can perform `download_code` on this resource + download_wiki_code: + type: boolean + description: If `true`, the user can perform `download_wiki_code` on this resource + fork_project: + type: boolean + description: If `true`, the user can perform `fork_project` on this resource + generate_description: + type: boolean + description: If `true`, the user can perform `generate_description` on this resource + import_issues: + type: boolean + description: If `true`, the user can perform `import_issues` on this resource + move_design: + type: boolean + description: If `true`, the user can perform `move_design` on this resource + push_code: + type: boolean + description: If `true`, the user can perform `push_code` on this resource + push_to_delete_protected_branch: + type: boolean + description: If `true`, the user can perform `push_to_delete_protected_branch` on this resource + read_commit_status: + type: boolean + description: If `true`, the user can perform `read_commit_status` on this resource + read_crm_contact: + type: boolean + description: If `true`, the user can perform `read_crm_contact` on this resource + read_crm_organization: + type: boolean + description: If `true`, the user can perform `read_crm_organization` on this resource + read_cycle_analytics: + type: boolean + description: If `true`, the user can perform `read_cycle_analytics` on this resource + read_design: + type: boolean + description: If `true`, the user can perform `read_design` on this resource + read_environment: + type: boolean + description: If `true`, the user can perform `read_environment` on this resource + read_merge_request: + type: boolean + description: If `true`, the user can perform `read_merge_request` on this resource + read_pages_content: + type: boolean + description: If `true`, the user can perform `read_pages_content` on this resource + read_path_locks: + type: boolean + description: If `true`, the user can perform `read_path_locks` on this resource + read_project: + type: boolean + description: If `true`, the user can perform `read_project` on this resource + read_project_member: + type: boolean + description: If `true`, the user can perform `read_project_member` on this resource + read_wiki: + type: boolean + description: If `true`, the user can perform `read_wiki` on this resource + remove_fork_project: + type: boolean + description: If `true`, the user can perform `remove_fork_project` on this resource + remove_pages: + type: boolean + description: If `true`, the user can perform `remove_pages` on this resource + remove_project: + type: boolean + description: If `true`, the user can perform `remove_project` on this resource + rename_project: + type: boolean + description: If `true`, the user can perform `rename_project` on this resource + request_access: + type: boolean + description: If `true`, the user can perform `request_access` on this resource + update_design: + type: boolean + description: If `true`, the user can perform `update_design` on this resource + update_pages: + type: boolean + description: If `true`, the user can perform `update_pages` on this resource + update_wiki: + type: boolean + description: If `true`, the user can perform `update_wiki` on this resource + upload_file: + type: boolean + description: If `true`, the user can perform `upload_file` on this resource + view_edit_page: + type: boolean + description: If `true`, the user can perform `view_edit_page` on this resource + /api/graphql?resource=todo&method=get: + post: + operationId: todo_get + summary: Retrieve a single to-do item + description: Retrieve a single to-do item Generated from the GitLab GraphQL schema field Query.todo (Todo). + externalDocs: + description: 'GitLab GraphQL API reference: Query.todo' + url: https://docs.gitlab.com/api/graphql/reference/#querytodo + x-stackQL-graphQL: + id: gitlab.users.todo.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { todo(id: "{{ .id }}") { action body created_at: createdAt id member_access_type: memberAccessType snoozed_until: snoozedUntil state target_type: targetType target_url: targetUrl author { id username name } group_: group { id full_path: fullPath name } project { id full_path: fullPath name } } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: ID of the to-do item. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + todo: + type: object + properties: + action: + type: string + enum: + - assigned + - review_requested + - mentioned + - build_failed + - marked + - approval_required + - unmergeable + - directly_addressed + - member_access_requested + - review_submitted + - ssh_key_expired + - ssh_key_expiring_soon + - merge_train_removed + - okr_checkin_requested + - added_approver + - duo_pro_access_granted + - duo_enterprise_access_granted + - duo_core_access_granted + - duo_workflow_input_required + description: Action of the to-do item. + body: + type: string + description: Body of the to-do item. + created_at: + type: string + description: Timestamp the to-do item was created. + id: + type: string + description: ID of the to-do item. + member_access_type: + type: string + description: Access type of access request to-do items. + snoozed_until: + type: string + description: Time until when the todo is snoozed. + state: + type: string + enum: + - pending + - done + description: State of the to-do item. + target_type: + type: string + enum: + - COMMIT + - ISSUE + - WORKITEM + - MERGEREQUEST + - DESIGN + - ALERT + - PROJECT + - NAMESPACE + - KEY + - WIKIPAGEMETA + - EPIC + - USER + - VULNERABILITY + - COMPLIANCE_VIOLATION + - DUO_WORKFLOW + description: Target type of the to-do item. + target_url: + type: string + description: URL of the to-do item target. + author: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + group_: + type: object + description: Group identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + project: + type: object + description: Project identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=user&method=get: + post: + operationId: user_get + summary: Find a user. + description: Find a user. Generated from the GitLab GraphQL schema field Query.user (UserCore). + externalDocs: + description: 'GitLab GraphQL API reference: Query.user' + url: https://docs.gitlab.com/api/graphql/reference/#queryuser + x-stackQL-graphQL: + id: gitlab.users.user.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { user{{ if or .id .username }}({{ if .id }}, id: "{{ .id }}"{{ end }}{{ if .username }}, username: "{{ .username }}"{{ end }}){{ end }} { active avatar_url: avatarUrl bio bot commit_email: commitEmail composite_identity_enforced: compositeIdentityEnforced created_at: createdAt discord github gitpod_enabled: gitpodEnabled group_count: groupCount human id job_title: jobTitle last_activity_on: lastActivityOn linkedin location name organization preferences_gitpod_path: preferencesGitpodPath profile_enable_gitpod_path: profileEnableGitpodPath project_count: projectCount pronouns public_email: publicEmail state twitter type username web_path: webPath web_url: webUrl namespace { id full_path: fullPath name } } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: false + description: ID of the User. + schema: + type: string + - name: username + in: query + required: false + description: Username of the User. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + user: + type: object + properties: + active: + type: boolean + description: Indicates if the user is active. + avatar_url: + type: string + description: URL of the user's avatar. + bio: + type: string + description: Bio of the user. + bot: + type: boolean + description: Indicates if the user is a bot. + commit_email: + type: string + description: User's default commit email. + composite_identity_enforced: + type: boolean + description: Indicates if composite identity is enforced for the user. + created_at: + type: string + description: Timestamp of when the user was created. + discord: + type: string + description: Discord ID of the user. + github: + type: string + description: GitHub profile name of the user. + gitpod_enabled: + type: boolean + description: Whether Ona is enabled at the user level. + group_count: + type: integer + description: Group count for the user. + human: + type: boolean + description: Indicates if the user is a regular user. + id: + type: string + description: Global ID of the user. + job_title: + type: string + description: Job title of the user. + last_activity_on: + type: string + description: Date the user last performed any actions. + linkedin: + type: string + description: LinkedIn profile name of the user. + location: + type: string + description: Location of the user. + name: + type: string + description: Human-readable name of the user. Returns `****` if the user is a project bot and the requester does not have permission to view the project. + organization: + type: string + description: Who the user represents or works for. + preferences_gitpod_path: + type: string + description: Web path to the Ona section within user preferences. + profile_enable_gitpod_path: + type: string + description: Web path to enable Ona for the user. + project_count: + type: integer + description: Project count for the user. + pronouns: + type: string + description: Pronouns of the user. + public_email: + type: string + description: User's public email. + state: + type: string + enum: + - active + - blocked + - deactivated + - banned + - ldap_blocked + - blocked_pending_approval + description: State of the user. + twitter: + type: string + description: X (formerly Twitter) username of the user. + type: + type: string + enum: + - HUMAN + - SUPPORT_BOT + - ALERT_BOT + - VISUAL_REVIEW_BOT + - SERVICE_USER + - GHOST + - PROJECT_BOT + - SECURITY_BOT + - AUTOMATION_BOT + - SECURITY_POLICY_BOT + - ADMIN_BOT + - SERVICE_ACCOUNT + - PLACEHOLDER + - DUO_CODE_REVIEW_BOT + - IMPORT_USER + description: Type of the user. + username: + type: string + description: Username of the user. Unique within the instance of GitLab. + web_path: + type: string + description: Web path of the user. + web_url: + type: string + description: Web URL of the user. + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + /api/graphql?resource=users&method=list: + post: + operationId: users_list + summary: Find users. + description: Find users. Generated from the GitLab GraphQL schema field Query.users (connection of UserCore nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.users' + url: https://docs.gitlab.com/api/graphql/reference/#queryusers + x-stackQL-graphQL: + id: gitlab.users.users.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.users.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.users.pageInfo.endCursor + terminateOnJsonPath: $.data.users.pageInfo.hasNextPage + query: 'query { users(first: 100{{ .cursor }}{{ if .active }}, active: {{ .active }}{{ end }}{{ if .admins }}, admins: {{ .admins }}{{ end }}{{ if .group_id }}, groupId: "{{ .group_id }}"{{ end }}{{ if .humans }}, humans: {{ .humans }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}) { nodes { active avatar_url: avatarUrl bio bot commit_email: commitEmail composite_identity_enforced: compositeIdentityEnforced created_at: createdAt discord github gitpod_enabled: gitpodEnabled group_count: groupCount human id job_title: jobTitle last_activity_on: lastActivityOn linkedin location name organization preferences_gitpod_path: preferencesGitpodPath profile_enable_gitpod_path: profileEnableGitpodPath project_count: projectCount pronouns public_email: publicEmail state twitter type username web_path: webPath web_url: webUrl namespace { id full_path: fullPath name } } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: + - name: active + in: query + required: false + description: Filter by active users. When true, returns active users. When false, returns non-active users. + schema: + type: boolean + - name: admins + in: query + required: false + description: Return only admin users. + schema: + type: boolean + - name: group_id + in: query + required: false + description: Return users member of a given group. + schema: + type: string + - name: humans + in: query + required: false + description: Filter by regular users. When true, returns only users that are not bot or internal users. When false, returns only users that are bot or internal users. + schema: + type: boolean + - name: search + in: query + required: false + description: Query to search users by name, username, or primary email. + schema: + type: string + - name: sort + in: query + required: false + description: Sort users by the criteria. + schema: + type: string + enum: + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + users: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + active: + type: boolean + description: Indicates if the user is active. + avatar_url: + type: string + description: URL of the user's avatar. + bio: + type: string + description: Bio of the user. + bot: + type: boolean + description: Indicates if the user is a bot. + commit_email: + type: string + description: User's default commit email. + composite_identity_enforced: + type: boolean + description: Indicates if composite identity is enforced for the user. + created_at: + type: string + description: Timestamp of when the user was created. + discord: + type: string + description: Discord ID of the user. + github: + type: string + description: GitHub profile name of the user. + gitpod_enabled: + type: boolean + description: Whether Ona is enabled at the user level. + group_count: + type: integer + description: Group count for the user. + human: + type: boolean + description: Indicates if the user is a regular user. + id: + type: string + description: Global ID of the user. + job_title: + type: string + description: Job title of the user. + last_activity_on: + type: string + description: Date the user last performed any actions. + linkedin: + type: string + description: LinkedIn profile name of the user. + location: + type: string + description: Location of the user. + name: + type: string + description: Human-readable name of the user. Returns `****` if the user is a project bot and the requester does not have permission to view the project. + organization: + type: string + description: Who the user represents or works for. + preferences_gitpod_path: + type: string + description: Web path to the Ona section within user preferences. + profile_enable_gitpod_path: + type: string + description: Web path to enable Ona for the user. + project_count: + type: integer + description: Project count for the user. + pronouns: + type: string + description: Pronouns of the user. + public_email: + type: string + description: User's public email. + state: + type: string + enum: + - active + - blocked + - deactivated + - banned + - ldap_blocked + - blocked_pending_approval + description: State of the user. + twitter: + type: string + description: X (formerly Twitter) username of the user. + type: + type: string + enum: + - HUMAN + - SUPPORT_BOT + - ALERT_BOT + - VISUAL_REVIEW_BOT + - SERVICE_USER + - GHOST + - PROJECT_BOT + - SECURITY_BOT + - AUTOMATION_BOT + - SECURITY_POLICY_BOT + - ADMIN_BOT + - SERVICE_ACCOUNT + - PLACEHOLDER + - DUO_CODE_REVIEW_BOT + - IMPORT_USER + description: Type of the user. + username: + type: string + description: Username of the user. Unique within the instance of GitLab. + web_path: + type: string + description: Web path of the user. + web_url: + type: string + description: Web URL of the user. + namespace: + type: object + description: Namespace identity (id, full_path, name) + properties: + id: + type: string + full_path: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + current_user: + id: gitlab.users.current_user + name: current_user + title: Current User + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=current_user&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.currentUser + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/current_user/methods/get' + insert: [] + update: [] + delete: [] + project_user_access_authorized_agents: + id: gitlab.users.project_user_access_authorized_agents + name: project_user_access_authorized_agents + title: Project User Access Authorized Agents + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_user_access_authorized_agents&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.userAccessAuthorizedAgents.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_user_access_authorized_agents/methods/list' + insert: [] + update: [] + delete: [] + project_user_permissions: + id: gitlab.users.project_user_permissions + name: project_user_permissions + title: Project User Permissions + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_user_permissions&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.userPermissions + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_user_permissions/methods/get' + insert: [] + update: [] + delete: [] + todo: + id: gitlab.users.todo + name: todo + title: Todo + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=todo&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.todo + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/todo/methods/get' + insert: [] + update: [] + delete: [] + user: + id: gitlab.users.user + name: user + title: User + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=user&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.user + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/user/methods/get' + insert: [] + update: [] + delete: [] + users: + id: gitlab.users.users + name: users + title: Users + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=users&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.users.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/users/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/work_items.yaml b/providers/src/gitlab/v00.00.00000/services/work_items.yaml new file mode 100644 index 00000000..fcf82b28 --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/work_items.yaml @@ -0,0 +1,943 @@ +openapi: 3.0.3 +info: + title: work_items API + description: 'Work items - group work items, work item types and state counts. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=group_work_item_state_counts&method=get: + post: + operationId: group_work_item_state_counts_get + summary: Counts of work items by state for the namespace. + description: Counts of work items by state for the namespace. Generated from the GitLab GraphQL schema field Group.workItemStateCounts (WorkItemStateCountsType). + externalDocs: + description: 'GitLab GraphQL API reference: Group.workItemStateCounts' + url: https://docs.gitlab.com/api/graphql/reference/#groupworkitemstatecounts + x-stackQL-graphQL: + id: gitlab.work_items.group_work_item_state_counts.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { workItemStateCounts{{ if or .assignee_wildcard_id .author_username .closed_after .closed_before .confidential .created_after .created_before .crm_contact_id .crm_organization_id .due_after .due_before .health_status_filter .iid .include_ancestors .include_descendants .iteration_wildcard_id .milestone_wildcard_id .my_reaction_emoji .release_tag_wildcard_id .search .sort .state .subscribed .updated_after .updated_before .weight .weight_wildcard_id }}({{ if .assignee_wildcard_id }}, assigneeWildcardId: {{ .assignee_wildcard_id }}{{ end }}{{ if .author_username }}, authorUsername: "{{ .author_username }}"{{ end }}{{ if .closed_after }}, closedAfter: "{{ .closed_after }}"{{ end }}{{ if .closed_before }}, closedBefore: "{{ .closed_before }}"{{ end }}{{ if .confidential }}, confidential: {{ .confidential }}{{ end }}{{ if .created_after }}, createdAfter: "{{ .created_after }}"{{ end }}{{ if .created_before }}, createdBefore: "{{ .created_before }}"{{ end }}{{ if .crm_contact_id }}, crmContactId: "{{ .crm_contact_id }}"{{ end }}{{ if .crm_organization_id }}, crmOrganizationId: "{{ .crm_organization_id }}"{{ end }}{{ if .due_after }}, dueAfter: "{{ .due_after }}"{{ end }}{{ if .due_before }}, dueBefore: "{{ .due_before }}"{{ end }}{{ if .health_status_filter }}, healthStatusFilter: {{ .health_status_filter }}{{ end }}{{ if .iid }}, iid: "{{ .iid }}"{{ end }}{{ if .include_ancestors }}, includeAncestors: {{ .include_ancestors }}{{ end }}{{ if .include_descendants }}, includeDescendants: {{ .include_descendants }}{{ end }}{{ if .iteration_wildcard_id }}, iterationWildcardId: {{ .iteration_wildcard_id }}{{ end }}{{ if .milestone_wildcard_id }}, milestoneWildcardId: {{ .milestone_wildcard_id }}{{ end }}{{ if .my_reaction_emoji }}, myReactionEmoji: "{{ .my_reaction_emoji }}"{{ end }}{{ if .release_tag_wildcard_id }}, releaseTagWildcardId: {{ .release_tag_wildcard_id }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}{{ if .subscribed }}, subscribed: {{ .subscribed }}{{ end }}{{ if .updated_after }}, updatedAfter: "{{ .updated_after }}"{{ end }}{{ if .updated_before }}, updatedBefore: "{{ .updated_before }}"{{ end }}{{ if .weight }}, weight: "{{ .weight }}"{{ end }}{{ if .weight_wildcard_id }}, weightWildcardId: {{ .weight_wildcard_id }}{{ end }}){{ end }} { all_: all closed opened } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: assignee_wildcard_id + in: query + required: false + description: Filter by assignee wildcard. Incompatible with `assigneeUsernames`. + schema: + type: string + enum: + - NONE + - ANY + - ME + - name: author_username + in: query + required: false + description: Filter work items by author username. + schema: + type: string + - name: closed_after + in: query + required: false + description: Work items closed after the date. + schema: + type: string + - name: closed_before + in: query + required: false + description: Work items closed before the date. + schema: + type: string + - name: confidential + in: query + required: false + description: Filter for confidential work items. If `false`, excludes confidential work items. If `true`, returns only confidential work items. + schema: + type: boolean + - name: created_after + in: query + required: false + description: Work items created after the timestamp. + schema: + type: string + - name: created_before + in: query + required: false + description: Work items created before the timestamp. + schema: + type: string + - name: crm_contact_id + in: query + required: false + description: Filter by ID of CRM contact. + schema: + type: string + - name: crm_organization_id + in: query + required: false + description: Filter by ID of CRM contact organization. + schema: + type: string + - name: due_after + in: query + required: false + description: Work items due after the timestamp. + schema: + type: string + - name: due_before + in: query + required: false + description: Work items due before the timestamp. + schema: + type: string + - name: health_status_filter + in: query + required: false + description: Health status of the work item, "none" and "any" values are supported. + schema: + type: string + enum: + - NONE + - ANY + - onTrack + - needsAttention + - atRisk + - name: iid + in: query + required: false + description: IID of the work item. For example, "1". + schema: + type: string + - name: include_ancestors + in: query + required: false + description: Include work items from ancestor groups. Ignored for project namespaces. + schema: + type: boolean + - name: include_descendants + in: query + required: false + description: Include work items from descendant groups and projects. Ignored for project namespaces. + schema: + type: boolean + - name: iteration_wildcard_id + in: query + required: false + description: Filter by iteration ID wildcard. + schema: + type: string + enum: + - NONE + - ANY + - CURRENT + - name: milestone_wildcard_id + in: query + required: false + description: Filter by milestone ID wildcard. Incompatible with `milestoneTitle`. + schema: + type: string + enum: + - NONE + - ANY + - STARTED + - UPCOMING + - name: my_reaction_emoji + in: query + required: false + description: Filter by reaction emoji applied by the current user. Wildcard values `NONE` and `ANY` are supported. + schema: + type: string + - name: release_tag_wildcard_id + in: query + required: false + description: Filter by release tag wildcard. + schema: + type: string + enum: + - NONE + - ANY + - name: search + in: query + required: false + description: Search query for title or description. + schema: + type: string + - name: sort + in: query + required: false + description: Sort work items by criteria. + schema: + type: string + enum: + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - TITLE_ASC + - TITLE_DESC + - LABEL_PRIORITY_ASC + - LABEL_PRIORITY_DESC + - BLOCKING_ISSUES_ASC + - BLOCKING_ISSUES_DESC + - MILESTONE_DUE_ASC + - MILESTONE_DUE_DESC + - name: state + in: query + required: false + description: Current state of the work item. + schema: + type: string + enum: + - opened + - closed + - locked + - all + - name: subscribed + in: query + required: false + description: Work items the current user is subscribed to. + schema: + type: string + enum: + - EXPLICITLY_SUBSCRIBED + - EXPLICITLY_UNSUBSCRIBED + - name: updated_after + in: query + required: false + description: Work items updated after the timestamp. + schema: + type: string + - name: updated_before + in: query + required: false + description: Work items updated before the timestamp. + schema: + type: string + - name: weight + in: query + required: false + description: Weight applied to the work item, "none" and "any" values are supported. + schema: + type: string + - name: weight_wildcard_id + in: query + required: false + description: Filter by weight ID wildcard. Incompatible with weight. + schema: + type: string + enum: + - NONE + - ANY + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + workItemStateCounts: + type: object + properties: + all_: + type: integer + description: Number of work items for the project or group. + closed: + type: integer + description: Number of work items with state CLOSED for the project or group. + opened: + type: integer + description: Number of work items with state OPENED for the project or group. + /api/graphql?resource=group_work_item_types&method=list: + post: + operationId: group_work_item_types_list + summary: Work item types available to the group. + description: Work item types available to the group. Generated from the GitLab GraphQL schema field Group.workItemTypes (connection of WorkItemType nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.workItemTypes' + url: https://docs.gitlab.com/api/graphql/reference/#groupworkitemtypes + x-stackQL-graphQL: + id: gitlab.work_items.group_work_item_types.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.workItemTypes.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.workItemTypes.pageInfo.endCursor + terminateOnJsonPath: $.data.group.workItemTypes.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { workItemTypes(first: 100{{ .cursor }}) { nodes { icon_name: iconName id name } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + workItemTypes: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + icon_name: + type: string + description: Icon name of the work item type. + id: + type: string + description: Global ID of the work item type. + name: + type: string + description: Name of the work item type. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=group_work_item&method=get: + post: + operationId: group_work_item_get + summary: Find a work item by IID directly associated with the group. + description: Find a work item by IID directly associated with the group. Generated from the GitLab GraphQL schema field Group.workItem (WorkItem). + externalDocs: + description: 'GitLab GraphQL API reference: Group.workItem' + url: https://docs.gitlab.com/api/graphql/reference/#groupworkitem + x-stackQL-graphQL: + id: gitlab.work_items.group_work_item.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { group(fullPath: "{{ .full_path }}") { workItem(iid: "{{ .iid }}") { closed_at: closedAt confidential create_note_email: createNoteEmail created_at: createdAt description duplicated_to_work_item_url: duplicatedToWorkItemUrl hidden id iid imported lock_version: lockVersion moved_to_work_item_url: movedToWorkItemUrl name promoted_to_epic_url: promotedToEpicUrl reference state title updated_at: updatedAt user_discussions_count: userDiscussionsCount web_path: webPath web_url: webUrl } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: iid + in: query + required: true + description: IID of the work item. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + workItem: + type: object + properties: + closed_at: + type: string + description: Timestamp of when the work item was closed. + confidential: + type: boolean + description: Indicates the work item is confidential. + create_note_email: + type: string + description: User specific email address for the work item. + created_at: + type: string + description: Timestamp of when the work item was created. + description: + type: string + description: Description of the work item. + duplicated_to_work_item_url: + type: string + description: URL of the work item that the work item is marked as a duplicate of. + hidden: + type: boolean + description: Indicates the work item is hidden because the author has been banned. + id: + type: string + description: Global ID of the work item. + iid: + type: string + description: Internal ID of the work item. + imported: + type: boolean + description: Indicates whether the work item was imported. + lock_version: + type: integer + description: Lock version of the work item. Incremented each time the work item is updated. + moved_to_work_item_url: + type: string + description: URL of the work item that the work item was moved to. + name: + type: string + description: Name or title of the object. + promoted_to_epic_url: + type: string + description: URL of the epic that the work item has been promoted to. + reference: + type: string + description: Internal reference of the work item. Returned in shortened format by default. + state: + type: string + enum: + - OPEN + - CLOSED + description: State of the work item. + title: + type: string + description: Title of the work item. + updated_at: + type: string + description: Timestamp of when the work item was last updated. + user_discussions_count: + type: integer + description: Number of user discussions in the work item. + web_path: + type: string + description: Web path of the object. + web_url: + type: string + description: URL of the object. + /api/graphql?resource=group_work_items&method=list: + post: + operationId: group_work_items_list + summary: Work items that belong to the namespace. + description: Work items that belong to the namespace. Generated from the GitLab GraphQL schema field Group.workItems (connection of WorkItem nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Group.workItems' + url: https://docs.gitlab.com/api/graphql/reference/#groupworkitems + x-stackQL-graphQL: + id: gitlab.work_items.group_work_items.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.group.workItems.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.group.workItems.pageInfo.endCursor + terminateOnJsonPath: $.data.group.workItems.pageInfo.hasNextPage + query: 'query { group(fullPath: "{{ .full_path }}") { workItems(first: 100{{ .cursor }}{{ if .assignee_wildcard_id }}, assigneeWildcardId: {{ .assignee_wildcard_id }}{{ end }}{{ if .author_username }}, authorUsername: "{{ .author_username }}"{{ end }}{{ if .closed_after }}, closedAfter: "{{ .closed_after }}"{{ end }}{{ if .closed_before }}, closedBefore: "{{ .closed_before }}"{{ end }}{{ if .confidential }}, confidential: {{ .confidential }}{{ end }}{{ if .created_after }}, createdAfter: "{{ .created_after }}"{{ end }}{{ if .created_before }}, createdBefore: "{{ .created_before }}"{{ end }}{{ if .crm_contact_id }}, crmContactId: "{{ .crm_contact_id }}"{{ end }}{{ if .crm_organization_id }}, crmOrganizationId: "{{ .crm_organization_id }}"{{ end }}{{ if .due_after }}, dueAfter: "{{ .due_after }}"{{ end }}{{ if .due_before }}, dueBefore: "{{ .due_before }}"{{ end }}{{ if .health_status_filter }}, healthStatusFilter: {{ .health_status_filter }}{{ end }}{{ if .iid }}, iid: "{{ .iid }}"{{ end }}{{ if .include_ancestors }}, includeAncestors: {{ .include_ancestors }}{{ end }}{{ if .include_descendants }}, includeDescendants: {{ .include_descendants }}{{ end }}{{ if .iteration_wildcard_id }}, iterationWildcardId: {{ .iteration_wildcard_id }}{{ end }}{{ if .milestone_wildcard_id }}, milestoneWildcardId: {{ .milestone_wildcard_id }}{{ end }}{{ if .my_reaction_emoji }}, myReactionEmoji: "{{ .my_reaction_emoji }}"{{ end }}{{ if .release_tag_wildcard_id }}, releaseTagWildcardId: {{ .release_tag_wildcard_id }}{{ end }}{{ if .search }}, search: "{{ .search }}"{{ end }}{{ if .sort }}, sort: {{ .sort }}{{ end }}{{ if .state }}, state: {{ .state }}{{ end }}{{ if .subscribed }}, subscribed: {{ .subscribed }}{{ end }}{{ if .updated_after }}, updatedAfter: "{{ .updated_after }}"{{ end }}{{ if .updated_before }}, updatedBefore: "{{ .updated_before }}"{{ end }}{{ if .weight }}, weight: "{{ .weight }}"{{ end }}{{ if .weight_wildcard_id }}, weightWildcardId: {{ .weight_wildcard_id }}{{ end }}) { nodes { closed_at: closedAt confidential create_note_email: createNoteEmail created_at: createdAt description duplicated_to_work_item_url: duplicatedToWorkItemUrl hidden id iid imported lock_version: lockVersion moved_to_work_item_url: movedToWorkItemUrl name promoted_to_epic_url: promotedToEpicUrl reference state title updated_at: updatedAt user_discussions_count: userDiscussionsCount web_path: webPath web_url: webUrl } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the group, for example gitlab-org + schema: + type: string + - name: assignee_wildcard_id + in: query + required: false + description: Filter by assignee wildcard. Incompatible with `assigneeUsernames`. + schema: + type: string + enum: + - NONE + - ANY + - ME + - name: author_username + in: query + required: false + description: Filter work items by author username. + schema: + type: string + - name: closed_after + in: query + required: false + description: Work items closed after the date. + schema: + type: string + - name: closed_before + in: query + required: false + description: Work items closed before the date. + schema: + type: string + - name: confidential + in: query + required: false + description: Filter for confidential work items. If `false`, excludes confidential work items. If `true`, returns only confidential work items. + schema: + type: boolean + - name: created_after + in: query + required: false + description: Work items created after the timestamp. + schema: + type: string + - name: created_before + in: query + required: false + description: Work items created before the timestamp. + schema: + type: string + - name: crm_contact_id + in: query + required: false + description: Filter by ID of CRM contact. + schema: + type: string + - name: crm_organization_id + in: query + required: false + description: Filter by ID of CRM contact organization. + schema: + type: string + - name: due_after + in: query + required: false + description: Work items due after the timestamp. + schema: + type: string + - name: due_before + in: query + required: false + description: Work items due before the timestamp. + schema: + type: string + - name: health_status_filter + in: query + required: false + description: Health status of the work item, "none" and "any" values are supported. + schema: + type: string + enum: + - NONE + - ANY + - onTrack + - needsAttention + - atRisk + - name: iid + in: query + required: false + description: IID of the work item. For example, "1". + schema: + type: string + - name: include_ancestors + in: query + required: false + description: Include work items from ancestor groups. Ignored for project namespaces. + schema: + type: boolean + - name: include_descendants + in: query + required: false + description: Include work items from descendant groups and projects. Ignored for project namespaces. + schema: + type: boolean + - name: iteration_wildcard_id + in: query + required: false + description: Filter by iteration ID wildcard. + schema: + type: string + enum: + - NONE + - ANY + - CURRENT + - name: milestone_wildcard_id + in: query + required: false + description: Filter by milestone ID wildcard. Incompatible with `milestoneTitle`. + schema: + type: string + enum: + - NONE + - ANY + - STARTED + - UPCOMING + - name: my_reaction_emoji + in: query + required: false + description: Filter by reaction emoji applied by the current user. Wildcard values `NONE` and `ANY` are supported. + schema: + type: string + - name: release_tag_wildcard_id + in: query + required: false + description: Filter by release tag wildcard. + schema: + type: string + enum: + - NONE + - ANY + - name: search + in: query + required: false + description: Search query for title or description. + schema: + type: string + - name: sort + in: query + required: false + description: Sort work items by criteria. + schema: + type: string + enum: + - UPDATED_DESC + - UPDATED_ASC + - CREATED_DESC + - CREATED_ASC + - TITLE_ASC + - TITLE_DESC + - LABEL_PRIORITY_ASC + - LABEL_PRIORITY_DESC + - BLOCKING_ISSUES_ASC + - BLOCKING_ISSUES_DESC + - MILESTONE_DUE_ASC + - MILESTONE_DUE_DESC + - name: state + in: query + required: false + description: Current state of the work item. + schema: + type: string + enum: + - opened + - closed + - locked + - all + - name: subscribed + in: query + required: false + description: Work items the current user is subscribed to. + schema: + type: string + enum: + - EXPLICITLY_SUBSCRIBED + - EXPLICITLY_UNSUBSCRIBED + - name: updated_after + in: query + required: false + description: Work items updated after the timestamp. + schema: + type: string + - name: updated_before + in: query + required: false + description: Work items updated before the timestamp. + schema: + type: string + - name: weight + in: query + required: false + description: Weight applied to the work item, "none" and "any" values are supported. + schema: + type: string + - name: weight_wildcard_id + in: query + required: false + description: Filter by weight ID wildcard. Incompatible with weight. + schema: + type: string + enum: + - NONE + - ANY + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + group: + type: object + properties: + workItems: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + closed_at: + type: string + description: Timestamp of when the work item was closed. + confidential: + type: boolean + description: Indicates the work item is confidential. + create_note_email: + type: string + description: User specific email address for the work item. + created_at: + type: string + description: Timestamp of when the work item was created. + description: + type: string + description: Description of the work item. + duplicated_to_work_item_url: + type: string + description: URL of the work item that the work item is marked as a duplicate of. + hidden: + type: boolean + description: Indicates the work item is hidden because the author has been banned. + id: + type: string + description: Global ID of the work item. + iid: + type: string + description: Internal ID of the work item. + imported: + type: boolean + description: Indicates whether the work item was imported. + lock_version: + type: integer + description: Lock version of the work item. Incremented each time the work item is updated. + moved_to_work_item_url: + type: string + description: URL of the work item that the work item was moved to. + name: + type: string + description: Name or title of the object. + promoted_to_epic_url: + type: string + description: URL of the epic that the work item has been promoted to. + reference: + type: string + description: Internal reference of the work item. Returned in shortened format by default. + state: + type: string + enum: + - OPEN + - CLOSED + description: State of the work item. + title: + type: string + description: Title of the work item. + updated_at: + type: string + description: Timestamp of when the work item was last updated. + user_discussions_count: + type: integer + description: Number of user discussions in the work item. + web_path: + type: string + description: Web path of the object. + web_url: + type: string + description: URL of the object. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string + /api/graphql?resource=project_work_item_types&method=list: + post: + operationId: project_work_item_types_list + summary: Work item types available to the project. + description: Work item types available to the project. Generated from the GitLab GraphQL schema field Project.workItemTypes (connection of WorkItemType nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Project.workItemTypes' + url: https://docs.gitlab.com/api/graphql/reference/#projectworkitemtypes + x-stackQL-graphQL: + id: gitlab.work_items.project_work_item_types.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.project.workItemTypes.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.project.workItemTypes.pageInfo.endCursor + terminateOnJsonPath: $.data.project.workItemTypes.pageInfo.hasNextPage + query: 'query { project(fullPath: "{{ .full_path }}") { workItemTypes(first: 100{{ .cursor }}) { nodes { icon_name: iconName id name } pageInfo { hasNextPage endCursor } } } }' + x-stackql-protocol: graphql + parameters: + - name: full_path + in: query + required: true + description: Full path of the project, for example gitlab-org/gitlab + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + project: + type: object + properties: + workItemTypes: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + icon_name: + type: string + description: Icon name of the work item type. + id: + type: string + description: Global ID of the work item type. + name: + type: string + description: Name of the work item type. + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + group_work_item_state_counts: + id: gitlab.work_items.group_work_item_state_counts + name: group_work_item_state_counts + title: Group Work Item State Counts + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_work_item_state_counts&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.workItemStateCounts + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_work_item_state_counts/methods/get' + insert: [] + update: [] + delete: [] + group_work_item_types: + id: gitlab.work_items.group_work_item_types + name: group_work_item_types + title: Group Work Item Types + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_work_item_types&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.workItemTypes.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_work_item_types/methods/list' + insert: [] + update: [] + delete: [] + group_work_item: + id: gitlab.work_items.group_work_item + name: group_work_item + title: Group Work Item + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_work_item&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.workItem + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_work_item/methods/get' + insert: [] + update: [] + delete: [] + group_work_items: + id: gitlab.work_items.group_work_items + name: group_work_items + title: Group Work Items + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=group_work_items&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.group.workItems.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/group_work_items/methods/list' + insert: [] + update: [] + delete: [] + project_work_item_types: + id: gitlab.work_items.project_work_item_types + name: project_work_item_types + title: Project Work Item Types + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=project_work_item_types&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.project.workItemTypes.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/project_work_item_types/methods/list' + insert: [] + update: [] + delete: [] diff --git a/providers/src/gitlab/v00.00.00000/services/workspaces.yaml b/providers/src/gitlab/v00.00.00000/services/workspaces.yaml new file mode 100644 index 00000000..3a790c00 --- /dev/null +++ b/providers/src/gitlab/v00.00.00000/services/workspaces.yaml @@ -0,0 +1,255 @@ +openapi: 3.0.3 +info: + title: workspaces API + description: 'Remote development workspaces. Read-only: every method is a GraphQL query mapped to SELECT.' + version: v00.00.00000 +servers: + - url: https://{host:[^/]+} + variables: + host: + default: gitlab.com + description: 'GitLab host, with an optional port (default gitlab.com). Resolved from the GITLAB_HOST environment variable when it is set (x-stackQL-envVar); a WHERE host value always takes precedence. Self-managed instances: the provider is generated from the gitlab.com schema, so older instances may reject fields they do not serve.' + x-stackQL-envVar: GITLAB_HOST +paths: + /api/graphql?resource=workspace&method=get: + post: + operationId: workspace_get + summary: Find a workspace. + description: Find a workspace. Generated from the GitLab GraphQL schema field Query.workspace (Workspace). + externalDocs: + description: 'GitLab GraphQL API reference: Query.workspace' + url: https://docs.gitlab.com/api/graphql/reference/#queryworkspace + x-stackQL-graphQL: + id: gitlab.workspaces.workspace.get + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.* + cursor: + jsonPath: $.stackql_gql_get_sentinel + query: 'query { workspace(id: "{{ .id }}") { actual_state: actualState created_at: createdAt deployment_resource_version: deploymentResourceVersion desired_state: desiredState desired_state_updated_at: desiredStateUpdatedAt devfile devfile_path: devfilePath id name namespace processed_devfile: processedDevfile project_id: projectId project_ref: projectRef responded_to_agent_at: respondedToAgentAt updated_at: updatedAt url user { id username name } } }' + x-stackql-protocol: graphql + parameters: + - name: id + in: query + required: true + description: Find a workspace by its ID. + schema: + type: string + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + workspace: + type: object + properties: + actual_state: + type: string + description: Actual state of the workspace. + created_at: + type: string + description: Timestamp of when the workspace was created. + deployment_resource_version: + type: integer + description: Version of the deployment resource for the workspace. + desired_state: + type: string + description: Desired state of the workspace. + desired_state_updated_at: + type: string + description: Timestamp of the last update to the desired state. + devfile: + type: string + description: Source YAML of the devfile used to configure the workspace. + devfile_path: + type: string + description: Path to the devfile used to configure the workspace. + id: + type: string + description: Global ID of the workspace. + name: + type: string + description: Name of the workspace in Kubernetes. + namespace: + type: string + description: Namespace of the workspace in Kubernetes. + processed_devfile: + type: string + description: Processed YAML of the devfile used to configure the workspace. + project_id: + type: string + description: ID of the project that contains the devfile for the workspace. + project_ref: + type: string + description: Git reference that contains the devfile used to configure the workspace, and that will be cloned into the workspace + responded_to_agent_at: + type: string + description: Timestamp of the last response sent to the GitLab agent for Kubernetes for the workspace. + updated_at: + type: string + description: Timestamp of the last update to any mutable workspace property. + url: + type: string + description: URL of the workspace. + user: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + /api/graphql?resource=workspaces&method=list: + post: + operationId: workspaces_list + summary: Find workspaces across the entire instance. This field is only available to instance admins, it will return an empty result for all non-admins. + description: Find workspaces across the entire instance. This field is only available to instance admins, it will return an empty result for all non-admins. Generated from the GitLab GraphQL schema field Query.workspaces (connection of Workspace nodes). + externalDocs: + description: 'GitLab GraphQL API reference: Query.workspaces' + url: https://docs.gitlab.com/api/graphql/reference/#queryworkspaces + x-stackQL-graphQL: + id: gitlab.workspaces.workspaces.list + url: https://gitlab.com/api/graphql + httpVerb: POST + responseSelection: + jsonPath: $.data.workspaces.nodes[*] + cursor: + strategy: page_info + jsonPath: $.data.workspaces.pageInfo.endCursor + terminateOnJsonPath: $.data.workspaces.pageInfo.hasNextPage + query: 'query { workspaces(first: 100{{ .cursor }}) { nodes { actual_state: actualState created_at: createdAt deployment_resource_version: deploymentResourceVersion desired_state: desiredState desired_state_updated_at: desiredStateUpdatedAt devfile devfile_path: devfilePath id name namespace processed_devfile: processedDevfile project_id: projectId project_ref: projectRef responded_to_agent_at: respondedToAgentAt updated_at: updatedAt url user { id username name } } pageInfo { hasNextPage endCursor } } }' + x-stackql-protocol: graphql + parameters: [] + responses: + '200': + description: GraphQL response envelope + content: + application/json: + schema: + type: object + properties: + data: + type: object + properties: + workspaces: + type: object + properties: + nodes: + type: array + items: + type: object + properties: + actual_state: + type: string + description: Actual state of the workspace. + created_at: + type: string + description: Timestamp of when the workspace was created. + deployment_resource_version: + type: integer + description: Version of the deployment resource for the workspace. + desired_state: + type: string + description: Desired state of the workspace. + desired_state_updated_at: + type: string + description: Timestamp of the last update to the desired state. + devfile: + type: string + description: Source YAML of the devfile used to configure the workspace. + devfile_path: + type: string + description: Path to the devfile used to configure the workspace. + id: + type: string + description: Global ID of the workspace. + name: + type: string + description: Name of the workspace in Kubernetes. + namespace: + type: string + description: Namespace of the workspace in Kubernetes. + processed_devfile: + type: string + description: Processed YAML of the devfile used to configure the workspace. + project_id: + type: string + description: ID of the project that contains the devfile for the workspace. + project_ref: + type: string + description: Git reference that contains the devfile used to configure the workspace, and that will be cloned into the workspace + responded_to_agent_at: + type: string + description: Timestamp of the last response sent to the GitLab agent for Kubernetes for the workspace. + updated_at: + type: string + description: Timestamp of the last update to any mutable workspace property. + url: + type: string + description: URL of the workspace. + user: + type: object + description: UserCore identity (id, username, name) + properties: + id: + type: string + username: + type: string + name: + type: string + pageInfo: + type: object + properties: + hasNextPage: + type: boolean + endCursor: + type: string +components: + x-stackQL-resources: + workspace: + id: gitlab.workspaces.workspace + name: workspace + title: Workspace + methods: + get: + operation: + $ref: '#/paths/~1api~1graphql?resource=workspace&method=get/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.workspace + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/workspace/methods/get' + insert: [] + update: [] + delete: [] + workspaces: + id: gitlab.workspaces.workspaces + name: workspaces + title: Workspaces + methods: + list: + operation: + $ref: '#/paths/~1api~1graphql?resource=workspaces&method=list/post' + response: + mediaType: application/json + openAPIDocKey: '200' + objectKey: $.data.workspaces.nodes + x-stackql-protocol: graphql + sqlVerbs: + select: + - $ref: '#/components/x-stackQL-resources/workspaces/methods/list' + insert: [] + update: [] + delete: []