GitLab API — projects. 73 operations. Lead operation: Search on GitLab within a project. Self-contained Naftiko capability covering one Gitlab Ci business surface.
naftiko: 1.0.0-alpha2
info:
label: GitLab API — projects
description: 'GitLab API — projects. 73 operations. Lead operation: Search on GitLab within a project. Self-contained Naftiko
capability covering one Gitlab Ci business surface.'
tags:
- Gitlab Ci
- projects
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
GITLAB_CI_API_KEY: GITLAB_CI_API_KEY
capability:
consumes:
- type: http
namespace: gitlab-ci-projects
baseUri: https://gitlab.com
description: GitLab API — projects business capability. Self-contained, no shared references.
resources:
- name: api-v4-projects
path: /api/v4/projects
operations:
- name: getapiv4projects
method: GET
description: Get a list of visible projects for authenticated user
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: order_by
in: query
type: string
description: Return projects ordered by field. storage_size, repository_size, wiki_size, packages_size are only
available to admins. Similarity is available when searching a
- name: sort
in: query
type: string
description: Return projects sorted in ascending and descending order
- name: archived
in: query
type: boolean
description: Limit by archived status
- name: visibility
in: query
type: string
description: Limit by visibility
- name: search
in: query
type: string
description: Return list of projects matching the search criteria
- name: search_namespaces
in: query
type: boolean
description: Include ancestor namespaces when matching search criteria
- name: owned
in: query
type: boolean
description: Limit by owned by authenticated user
- name: starred
in: query
type: boolean
description: Limit by starred status
- name: imported
in: query
type: boolean
description: Limit by imported by authenticated user
- name: membership
in: query
type: boolean
description: Limit by projects that the current user is a member of
- name: with_issues_enabled
in: query
type: boolean
description: Limit by enabled issues feature
- name: with_merge_requests_enabled
in: query
type: boolean
description: Limit by enabled merge requests feature
- name: with_programming_language
in: query
type: string
description: Limit to repositories which use the given programming language
- name: min_access_level
in: query
type: integer
description: Limit by minimum access level of authenticated user
- name: id_after
in: query
type: integer
description: Limit results to projects with IDs greater than the specified ID
- name: id_before
in: query
type: integer
description: Limit results to projects with IDs less than the specified ID
- name: last_activity_after
in: query
type: string
description: 'Limit results to projects with last_activity after specified time. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ'
- name: last_activity_before
in: query
type: string
description: 'Limit results to projects with last_activity before specified time. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ'
- name: repository_storage
in: query
type: string
description: Which storage shard the repository is on. Available only to admins
- name: topic
in: query
type: array
description: Comma-separated list of topics. Limit results to projects having all topics
- name: topic_id
in: query
type: integer
description: Limit results to projects with the assigned topic given by the topic ID
- name: updated_before
in: query
type: string
description: 'Return projects updated before the specified datetime. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ'
- name: updated_after
in: query
type: string
description: 'Return projects updated after the specified datetime. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ'
- name: include_pending_delete
in: query
type: boolean
description: Include projects in pending delete state. Can only be set by admins
- name: marked_for_deletion_on
in: query
type: string
description: Date when the project was marked for deletion
- name: active
in: query
type: boolean
description: Limit by projects that are not archived and not marked for deletion
- name: wiki_checksum_failed
in: query
type: boolean
description: Limit by projects where wiki checksum is failed
- name: repository_checksum_failed
in: query
type: boolean
description: Limit by projects where repository checksum is failed
- name: include_hidden
in: query
type: boolean
description: Include hidden projects. Can only be set by admins
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: simple
in: query
type: boolean
description: Return only the ID, URL, name, and path of each project
- name: statistics
in: query
type: boolean
description: Include project statistics
- name: with_custom_attributes
in: query
type: boolean
description: Include custom attributes in the response
- name: postapiv4projects
method: POST
description: Create new project
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: postApiV4Projects
in: body
type: string
required: true
- name: api-v4-projects-user-user_id
path: /api/v4/projects/user/{user_id}
operations:
- name: postapiv4projectsuseruserid
method: POST
description: Create new project for a specified user. Only available to admin users.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: user_id
in: path
type: integer
description: The ID of a user
required: true
- name: postApiV4ProjectsUserUserId
in: body
type: string
required: true
- name: api-v4-projects-id
path: /api/v4/projects/{id}
operations:
- name: getapiv4projectsid
method: GET
description: Get a single project
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: statistics
in: query
type: boolean
description: Include project statistics
- name: with_custom_attributes
in: query
type: boolean
description: Include custom attributes in the response
- name: license
in: query
type: boolean
description: Include project license data
- name: putapiv4projectsid
method: PUT
description: Update an existing project
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: putApiV4ProjectsId
in: body
type: string
required: true
- name: deleteapiv4projectsid
method: DELETE
description: Delete a project
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: api-v4-projects-id-(--)search
path: /api/v4/projects/{id}/(-/)search
operations:
- name: getapiv4projectsidsearch
method: GET
description: Search on GitLab within a project
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: search
in: query
type: string
description: The expression it should be searched for
required: true
- name: scope
in: query
type: string
description: The scope of the search
required: true
- name: ref
in: query
type: string
description: The name of a repository branch or tag. If not given, the default branch is used
- name: state
in: query
type: string
description: Filter results by state
- name: confidential
in: query
type: boolean
description: Filter results by confidentiality
- name: type
in: query
type: array
description: 'Filter work items by type. Only applies to work_items scope. Available types: issue, task, epic, incident,
test_case, requirement, objective, key_result, ticket'
- name: fields
in: query
type: array
description: Array of fields you wish to search. Available with advanced search.
- name: num_context_lines
in: query
type: integer
description: Number of context lines around each match. Available with advanced and exact code search. Introduced
in GitLab 18.11.
- name: regex
in: query
type: boolean
description: Performs a regex code search. Available with exact code search. Introduced in GitLab 18.9
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: api-v4-projects-id-archive
path: /api/v4/projects/{id}/archive
operations:
- name: postapiv4projectsidarchive
method: POST
description: Archive a project
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: api-v4-projects-id-audit_events
path: /api/v4/projects/{id}/audit_events
operations:
- name: getapiv4projectsidauditevents
method: GET
description: Get a list of audit events in this project.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: created_after
in: query
type: string
description: Return audit events created after the specified time
- name: created_before
in: query
type: string
description: Return audit events created before the specified time
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: id
in: path
type: integer
required: true
- name: api-v4-projects-id-audit_events-audit_event_id
path: /api/v4/projects/{id}/audit_events/{audit_event_id}
operations:
- name: getapiv4projectsidauditeventsauditeventid
method: GET
description: Get a specific audit event in this project.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: audit_event_id
in: path
type: integer
description: The ID of the audit event
required: true
- name: id
in: path
type: integer
required: true
- name: api-v4-projects-id-create_ci_config
path: /api/v4/projects/{id}/create_ci_config
operations:
- name: postapiv4projectsidcreateciconfig
method: POST
description: Create merge request for missing ci config in project
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
required: true
- name: api-v4-projects-id-fork
path: /api/v4/projects/{id}/fork
operations:
- name: postapiv4projectsidfork
method: POST
description: Fork new project for the current user or provided namespace.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: postApiV4ProjectsIdFork
in: body
type: string
required: true
- name: deleteapiv4projectsidfork
method: DELETE
description: Remove a forked_from relationship
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: api-v4-projects-id-fork-forked_from_id
path: /api/v4/projects/{id}/fork/{forked_from_id}
operations:
- name: postapiv4projectsidforkforkedfromid
method: POST
description: Mark this project as forked from another
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: forked_from_id
in: path
type: string
description: The ID of the project it was forked from
required: true
- name: api-v4-projects-id-forks
path: /api/v4/projects/{id}/forks
operations:
- name: getapiv4projectsidforks
method: GET
description: List forks of this project
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: order_by
in: query
type: string
description: Return projects ordered by field. storage_size, repository_size, wiki_size, packages_size are only
available to admins. Similarity is available when searching a
- name: sort
in: query
type: string
description: Return projects sorted in ascending and descending order
- name: archived
in: query
type: boolean
description: Limit by archived status
- name: visibility
in: query
type: string
description: Limit by visibility
- name: search
in: query
type: string
description: Return list of projects matching the search criteria
- name: search_namespaces
in: query
type: boolean
description: Include ancestor namespaces when matching search criteria
- name: owned
in: query
type: boolean
description: Limit by owned by authenticated user
- name: starred
in: query
type: boolean
description: Limit by starred status
- name: imported
in: query
type: boolean
description: Limit by imported by authenticated user
- name: membership
in: query
type: boolean
description: Limit by projects that the current user is a member of
- name: with_issues_enabled
in: query
type: boolean
description: Limit by enabled issues feature
- name: with_merge_requests_enabled
in: query
type: boolean
description: Limit by enabled merge requests feature
- name: with_programming_language
in: query
type: string
description: Limit to repositories which use the given programming language
- name: min_access_level
in: query
type: integer
description: Limit by minimum access level of authenticated user
- name: id_after
in: query
type: integer
description: Limit results to projects with IDs greater than the specified ID
- name: id_before
in: query
type: integer
description: Limit results to projects with IDs less than the specified ID
- name: last_activity_after
in: query
type: string
description: 'Limit results to projects with last_activity after specified time. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ'
- name: last_activity_before
in: query
type: string
description: 'Limit results to projects with last_activity before specified time. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ'
- name: repository_storage
in: query
type: string
description: Which storage shard the repository is on. Available only to admins
- name: topic
in: query
type: array
description: Comma-separated list of topics. Limit results to projects having all topics
- name: topic_id
in: query
type: integer
description: Limit results to projects with the assigned topic given by the topic ID
- name: updated_before
in: query
type: string
description: 'Return projects updated before the specified datetime. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ'
- name: updated_after
in: query
type: string
description: 'Return projects updated after the specified datetime. Format: ISO 8601 YYYY-MM-DDTHH:MM:SSZ'
- name: include_pending_delete
in: query
type: boolean
description: Include projects in pending delete state. Can only be set by admins
- name: marked_for_deletion_on
in: query
type: string
description: Date when the project was marked for deletion
- name: active
in: query
type: boolean
description: Limit by projects that are not archived and not marked for deletion
- name: wiki_checksum_failed
in: query
type: boolean
description: Limit by projects where wiki checksum is failed
- name: repository_checksum_failed
in: query
type: boolean
description: Limit by projects where repository checksum is failed
- name: include_hidden
in: query
type: boolean
description: Include hidden projects. Can only be set by admins
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: simple
in: query
type: boolean
description: Return only the ID, URL, name, and path of each project
- name: with_custom_attributes
in: query
type: boolean
description: Include custom attributes in the response
- name: api-v4-projects-id-groups
path: /api/v4/projects/{id}/groups
operations:
- name: getapiv4projectsidgroups
method: GET
description: Get ancestor and shared groups for a project
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: search
in: query
type: string
description: Return list of groups matching the search criteria
- name: skip_groups
in: query
type: array
description: Array of group ids to exclude from list
- name: with_shared
in: query
type: boolean
description: Include shared groups
- name: shared_visible_only
in: query
type: boolean
description: Limit to shared groups user has access to
- name: shared_min_access_level
in: query
type: integer
description: Limit returned shared groups by minimum access level to the project
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: api-v4-projects-id-housekeeping
path: /api/v4/projects/{id}/housekeeping
operations:
- name: postapiv4projectsidhousekeeping
method: POST
description: Start the housekeeping task for a project
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: postApiV4ProjectsIdHousekeeping
in: body
type: string
required: true
- name: api-v4-projects-id-import_project_members-project_id
path: /api/v4/projects/{id}/import_project_members/{project_id}
operations:
- name: postapiv4projectsidimportprojectmembersprojectid
method: POST
description: Import members from another project
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: project_id
in: path
type: integer
description: The ID of the source project to import the members from.
required: true
- name: api-v4-projects-id-invited_groups
path: /api/v4/projects/{id}/invited_groups
operations:
- name: getapiv4projectsidinvitedgroups
method: GET
description: Get a list of invited groups in this project
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: relation
in: query
type: array
description: Filter by group relation
- name: search
in: query
type: string
description: Search for a specific group
- name: min_access_level
in: query
type: integer
description: Limit by minimum access level of authenticated user
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: with_custom_attributes
in: query
type: boolean
description: Include custom attributes in the response
- name: api-v4-projects-id-issues
path: /api/v4/projects/{id}/issues
operations:
- name: getapiv4projectsidissues
method: GET
description: Get a list of project issues
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
description: The ID or URL-encoded path of the project
required: true
- name: with_labels_details
in: query
type: boolean
description: Return titles of labels and other details
- name: state
in: query
type: string
description: Return opened, closed, or all issues
- name: closed_by_id
in: query
type: integer
description: Return issues which were closed by the user with the given ID.
- name: order_by
in: query
type: string
description: Return issues ordered by `created_at`, `due_date`, `label_priority`, `milestone_due`, `popularity`,
`priority`, `relative_position`, `title`, or `updated_at` fi
- name: sort
in: query
type: string
description: Return issues sorted in `asc` or `desc` order.
- name: due_date
in: query
type: string
description: 'Return issues that have no due date (`0`), or whose due date is this week, this month, between two
weeks ago and next month, or which are overdue. Accepts: `ove'
- name: issue_type
in: query
type: string
description: 'The type of the issue. Accepts: issue, incident, test_case, requirement, task, ticket'
- name: labels
in: query
type: array
description: Comma-separated list of label names
- name: milestone
in: query
type: string
description: Milestone title
- name: milestone_id
in: query
type: string
description: Return issues assigned to milestones with the specified timebox value ("Any", "None", "Upcoming" or
"Started")
- name: iids
in: query
type: array
description: The IID array of issues
- name: search
in: query
type: string
description: Search issues for text present in the title, description, or any combination of these
- name: in
in: query
type: string
description: '`title`, `description`, or a string joining them with comma'
- name: author_id
in: query
type: integer
description: Return issues which are authored by the user with the given ID
- name: author_username
in: query
type: string
description: Return issues which are authored by the user with the given username
- name: assignee_id
in: query
type: integer
description: Return issues which are assigned to the user with the given ID
- name: assignee_username
in: query
type: array
description: Return issues which are assigned to the user with the given username
- name: created_after
in: query
type: string
description: Return issues created after the specified time
- name: created_before
in: query
type: string
description: Return issues created before the specified time
- name: updated_after
in: query
type: string
description: Return issues updated after the specified time
- name: updated_before
in: query
type: string
description: Return issues updated before the specified time
- name: not[labels]
in: query
type: array
description: Comma-separated list of label names
- name: not[milestone]
in: query
type: string
description: Milestone title
- name: not[milestone_id]
in: query
type: string
description: Return issues assigned to milestones without the specified timebox value ("Any", "None", "Upcoming"
or "Started")
- name: not[iids]
in: query
type: array
description: The IID array of issues
- name: not[author_id]
in: query
type: integer
description: Return issues which are not authored by the user with the given ID
- name: not[author_username]
in: query
type: string
description: Return issues which are not authored by the user with the given username
- name: not[assignee_id]
in: query
type: integer
description: Return issues which are not assigned to the user with the given ID
- name: not[assignee_username]
in: query
type: array
description: Return issues which are not assigned to the user with the given username
- name: not[weight]
in: query
type: integer
description: Return issues without the specified weight
- name: not[iteration_id]
in: query
type: integer
description: Return issues which are not assigned to the iteration with the given ID
- name: not[iteration_title]
in: query
type: string
description: Return issues which are not assigned to the iteration with the given title
- name: scope
in: query
type: string
description: 'Return issues for the given scope: `created_by_me`, `assigned_to_me` or `all`'
- name: my_reaction_emoji
in: query
type: string
description: Return issues reacted by the authenticated user by the given emoji
- name: confidential
in: query
type: boolean
description: Filter confidential or public issues
- name: weight
in: query
type: integer
description: The weight of the issue
- name: epic_id
in: query
type: integer
description: The ID of an epic associated with the issues
- name: health_status
in: query
type: string
description: 'The health status of the issue. Must be one of: on_track, needs_attention, at_risk, none, any'
- name: iteration_id
in: query
type: integer
description: Return issues which are assigned to the iteration with the given ID
- name: iteration_title
in: query
type: string
description: Return issues which are assigned to the iteration with the given title
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: cursor
in: query
type: string
description: Cursor for obtaining the next set of records
- name: pos
# --- truncated at 32 KB (166 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gitlab-ci/refs/heads/main/capabilities/gitlab-ci-projects.yaml