GitLab API — deploy_resources. 24 operations. Lead operation: List all deploy keys. Self-contained Naftiko capability covering one Gitlab Ci business surface.
naftiko: 1.0.0-alpha2
info:
label: GitLab API — deploy_resources
description: 'GitLab API — deploy_resources. 24 operations. Lead operation: List all deploy keys. Self-contained Naftiko
capability covering one Gitlab Ci business surface.'
tags:
- Gitlab Ci
- deploy_resources
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-deploy-resources
baseUri: https://gitlab.com
description: GitLab API — deploy_resources business capability. Self-contained, no shared references.
resources:
- name: api-v4-deploy_keys
path: /api/v4/deploy_keys
operations:
- name: getapiv4deploykeys
method: GET
description: List all deploy keys
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: public
in: query
type: boolean
description: Only return deploy keys that are public
- name: postapiv4deploykeys
method: POST
description: Create a deploy key
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: postApiV4DeployKeys
in: body
type: string
required: true
- name: api-v4-deploy_tokens
path: /api/v4/deploy_tokens
operations:
- name: getapiv4deploytokens
method: GET
description: List all deploy tokens
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: active
in: query
type: boolean
description: Limit by active status
- name: api-v4-groups-id-deploy_tokens
path: /api/v4/groups/{id}/deploy_tokens
operations:
- name: getapiv4groupsiddeploytokens
method: GET
description: List group deploy tokens
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: The ID or URL-encoded path of the group owned by the authenticated user
required: true
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: active
in: query
type: boolean
description: Limit by active status
- name: postapiv4groupsiddeploytokens
method: POST
description: Create a group deploy token
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: The ID or URL-encoded path of the group owned by the authenticated user
required: true
- name: postApiV4GroupsIdDeployTokens
in: body
type: string
required: true
- name: api-v4-groups-id-deploy_tokens-token_id
path: /api/v4/groups/{id}/deploy_tokens/{token_id}
operations:
- name: getapiv4groupsiddeploytokenstokenid
method: GET
description: Get a group deploy token
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: The ID or URL-encoded path of the group owned by the authenticated user
required: true
- name: token_id
in: path
type: integer
description: The ID of the deploy token
required: true
- name: deleteapiv4groupsiddeploytokenstokenid
method: DELETE
description: Delete a group deploy token
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: integer
description: The ID or URL-encoded path of the group owned by the authenticated user
required: true
- name: token_id
in: path
type: integer
description: The ID of the deploy token
required: true
- name: api-v4-projects-id-deploy_keys
path: /api/v4/projects/{id}/deploy_keys
operations:
- name: getapiv4projectsiddeploykeys
method: GET
description: List deploy keys for 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 owned by the authenticated user
required: true
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: postapiv4projectsiddeploykeys
method: POST
description: Add deploy key
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 owned by the authenticated user
required: true
- name: postApiV4ProjectsIdDeployKeys
in: body
type: string
required: true
- name: api-v4-projects-id-deploy_keys-key_id
path: /api/v4/projects/{id}/deploy_keys/{key_id}
operations:
- name: getapiv4projectsiddeploykeyskeyid
method: GET
description: Get a single deploy key
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 owned by the authenticated user
required: true
- name: key_id
in: path
type: integer
description: The ID of the deploy key
required: true
- name: putapiv4projectsiddeploykeyskeyid
method: PUT
description: Update deploy key
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 owned by the authenticated user
required: true
- name: key_id
in: path
type: integer
description: The ID of the deploy key
required: true
- name: putApiV4ProjectsIdDeployKeysKeyId
in: body
type: string
required: true
- name: deleteapiv4projectsiddeploykeyskeyid
method: DELETE
description: Delete deploy key
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 owned by the authenticated user
required: true
- name: key_id
in: path
type: integer
description: The ID of the deploy key
required: true
- name: api-v4-projects-id-deploy_keys-key_id-enable
path: /api/v4/projects/{id}/deploy_keys/{key_id}/enable
operations:
- name: postapiv4projectsiddeploykeyskeyidenable
method: POST
description: Enable a deploy key
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 owned by the authenticated user
required: true
- name: key_id
in: path
type: integer
description: The ID of the deploy key
required: true
- name: api-v4-projects-id-deploy_tokens
path: /api/v4/projects/{id}/deploy_tokens
operations:
- name: getapiv4projectsiddeploytokens
method: GET
description: List project deploy tokens
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 owned by the authenticated user
required: true
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: active
in: query
type: boolean
description: Limit by active status
- name: postapiv4projectsiddeploytokens
method: POST
description: Create a project deploy token
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 owned by the authenticated user
required: true
- name: postApiV4ProjectsIdDeployTokens
in: body
type: string
required: true
- name: api-v4-projects-id-deploy_tokens-token_id
path: /api/v4/projects/{id}/deploy_tokens/{token_id}
operations:
- name: getapiv4projectsiddeploytokenstokenid
method: GET
description: Get a project deploy token
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 owned by the authenticated user
required: true
- name: token_id
in: path
type: integer
description: The ID of the deploy token
required: true
- name: deleteapiv4projectsiddeploytokenstokenid
method: DELETE
description: Delete a project deploy token
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 owned by the authenticated user
required: true
- name: token_id
in: path
type: integer
description: The ID of the deploy token
required: true
- name: api-v4-projects-id-deployments
path: /api/v4/projects/{id}/deployments
operations:
- name: getapiv4projectsiddeployments
method: GET
description: List project deployments
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 owned by the authenticated user
required: true
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: order_by
in: query
type: string
description: Return deployments ordered by either one of `id`, `iid`, `created_at`, `updated_at` or `ref` fields.
Default is `id`
- name: sort
in: query
type: string
description: Return deployments sorted in `asc` or `desc` order. Default is `asc`
- name: updated_after
in: query
type: string
description: Return deployments updated after the specified date. Expected in ISO 8601 format (`2019-03-15T08:00:00Z`)
- name: updated_before
in: query
type: string
description: Return deployments updated before the specified date. Expected in ISO 8601 format (`2019-03-15T08:00:00Z`)
- name: finished_after
in: query
type: string
description: Return deployments finished after the specified date. Expected in ISO 8601 format (`2019-03-15T08:00:00Z`)
- name: finished_before
in: query
type: string
description: Return deployments finished before the specified date. Expected in ISO 8601 format (`2019-03-15T08:00:00Z`)
- name: environment
in: query
type: string
description: The name of the environment to filter deployments by
- name: status
in: query
type: string
description: The status to filter deployments by. One of `created`, `running`, `success`, `failed`, `canceled`,
or `blocked`
- name: postapiv4projectsiddeployments
method: POST
description: Create a deployment
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 owned by the authenticated user
required: true
- name: postApiV4ProjectsIdDeployments
in: body
type: string
required: true
- name: api-v4-projects-id-deployments-deployment_id
path: /api/v4/projects/{id}/deployments/{deployment_id}
operations:
- name: getapiv4projectsiddeploymentsdeploymentid
method: GET
description: Get a specific deployment
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 owned by the authenticated user
required: true
- name: deployment_id
in: path
type: integer
description: The ID of the deployment
required: true
- name: putapiv4projectsiddeploymentsdeploymentid
method: PUT
description: Update a deployment
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 owned by the authenticated user
required: true
- name: deployment_id
in: path
type: integer
required: true
- name: putApiV4ProjectsIdDeploymentsDeploymentId
in: body
type: string
required: true
- name: deleteapiv4projectsiddeploymentsdeploymentid
method: DELETE
description: Delete a specific deployment
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 owned by the authenticated user
required: true
- name: deployment_id
in: path
type: integer
description: The ID of the deployment
required: true
- name: api-v4-projects-id-deployments-deployment_id-approval
path: /api/v4/projects/{id}/deployments/{deployment_id}/approval
operations:
- name: postapiv4projectsiddeploymentsdeploymentidapproval
method: POST
description: Approve or reject a blocked deployment
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 owned by the authenticated user
required: true
- name: deployment_id
in: path
type: integer
description: The ID of the deployment
required: true
- name: postApiV4ProjectsIdDeploymentsDeploymentIdApproval
in: body
type: string
required: true
- name: api-v4-projects-id-deployments-deployment_id-merge_requests
path: /api/v4/projects/{id}/deployments/{deployment_id}/merge_requests
operations:
- name: getapiv4projectsiddeploymentsdeploymentidmergerequests
method: GET
description: List of merge requests associated with a deployment
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 owned by the authenticated user
required: true
- name: page
in: query
type: integer
description: Current page number
- name: per_page
in: query
type: integer
description: Number of items per page
- name: deployment_id
in: path
type: integer
description: The ID of the deployment
required: true
- name: author_id
in: query
type: integer
description: Returns merge requests created by the given user `id`. Mutually exclusive with `author_username`. Combine
with `scope=all` or `scope=assigned_to_me`.
- name: author_username
in: query
type: string
description: Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.
- name: assignee_id
in: query
type: integer
description: Returns merge requests assigned to the given user `id`. `None` returns unassigned merge requests. `Any`
returns merge requests with an assignee.
- name: assignee_username
in: query
type: array
description: Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.
- name: reviewer_username
in: query
type: string
description: Returns merge requests which have the user as a reviewer with the given `username`. `None` returns
merge requests with no reviewers. `Any` returns merge request
- name: labels
in: query
type: array
description: Returns merge requests matching a comma-separated list of labels. `None` lists all merge requests with
no labels. `Any` lists all merge requests with at least o
- name: milestone
in: query
type: string
description: Returns merge requests for a specific milestone. `None` returns merge requests with no milestone. `Any`
returns merge requests that have an assigned milestone.
- name: my_reaction_emoji
in: query
type: string
description: Returns merge requests reacted by the authenticated user by the given `emoji`. `None` returns issues
not given a reaction. `Any` returns issues given at least o
- name: reviewer_id
in: query
type: integer
description: Returns merge requests which have the user as a reviewer with the given user `id`. `None` returns merge
requests with no reviewers. `Any` returns merge requests
- name: state
in: query
type: string
description: Returns `all` merge requests or just those that are `opened`, `closed`, `locked`, or `merged`.
- name: order_by
in: query
type: string
description: Returns merge requests ordered by `created_at`, `label_priority`, `milestone_due`, `popularity`, `priority`,
`title`, `updated_at` or `merged_at` fields. Introd
- name: sort
in: query
type: string
description: Returns merge requests sorted in `asc` or `desc` order.
- name: with_labels_details
in: query
type: boolean
description: 'If `true`, response returns more details for each label in labels field: `:name`,`:color`, `:description`,
`:description_html`, `:text_color`'
- name: with_merge_status_recheck
in: query
type: boolean
description: If `true`, this projection requests (but does not guarantee) that the `merge_status` field be recalculated
asynchronously. Introduced in GitLab 13.0.
- name: created_after
in: query
type: string
description: Returns merge requests created on or after the given time. Expected in ISO 8601 format.
- name: created_before
in: query
type: string
description: Returns merge requests created on or before the given time. Expected in ISO 8601 format.
- name: updated_after
in: query
type: string
description: Returns merge requests updated on or after the given time. Expected in ISO 8601 format.
- name: updated_before
in: query
type: string
description: Returns merge requests updated on or before the given time. Expected in ISO 8601 format.
- name: view
in: query
type: string
description: If simple, returns the `iid`, URL, title, description, and basic state of merge request
- name: scope
in: query
type: string
description: 'Returns merge requests for the given scope: `created_by_me`, `assigned_to_me`, `reviews_for_me` or
`all`'
- name: source_branch
in: query
type: string
description: Returns merge requests with the given source branch
- name: source_project_id
in: query
type: integer
description: Returns merge requests with the given source project id
- name: target_branch
in: query
type: string
description: Returns merge requests with the given target branch
- name: search
in: query
type: string
description: Search merge requests against their `title` and `description`.
- name: in
in: query
type: string
description: Modify the scope of the search attribute. `title`, `description`, or a string joining them with comma.
- name: wip
in: query
type: string
description: Deprecated. Use `draft` instead. Filter merge requests against their `wip` status. `yes` to return
only draft merge requests, `no` to return non-draft merge req
- name: draft
in: query
type: boolean
description: Filter merge requests against their `draft` status. `true` to return only draft merge requests, `false`
to return non-draft merge requests.
- name: not[author_id]
in: query
type: integer
description: '`<Negated>` Returns merge requests created by the given user `id`. Mutually exclusive with `author_username`.
Combine with `scope=all` or `scope=assigned_to_me`'
- name: not[author_username]
in: query
type: string
description: '`<Negated>` Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.'
- name: not[assignee_id]
in: query
type: integer
description: '`<Negated>` Returns merge requests assigned to the given user `id`. `None` returns unassigned merge
requests. `Any` returns merge requests with an assignee.'
- name: not[assignee_username]
in: query
type: array
description: '`<Negated>` Returns merge requests created by the given `username`. Mutually exclusive with `author_id`.'
- name: not[reviewer_username]
in: query
type: string
description: '`<Negated>` Returns merge requests which have the user as a reviewer with the given `username`. `None`
returns merge requests with no reviewers. `Any` returns m'
- name: not[labels]
in: query
type: array
description: '`<Negated>` Returns merge requests matching a comma-separated list of labels. `None` lists all merge
requests with no labels. `Any` lists all merge requests wit'
- name: not[milestone]
in: query
type: string
description: '`<Negated>` Returns merge requests for a specific milestone. `None` returns merge requests with no
milestone. `Any` returns merge requests that have an assigned'
- name: not[my_reaction_emoji]
in: query
type: string
description: '`<Negated>` Returns merge requests reacted by the authenticated user by the given `emoji`. `None`
returns issues not given a reaction. `Any` returns issues give'
- name: not[reviewer_id]
in: query
type: integer
description: '`<Negated>` Returns merge requests which have the user as a reviewer with the given user `id`. `None`
returns merge requests with no reviewers. `Any` returns me'
- name: deployed_before
in: query
type: string
description: Returns merge requests deployed before the given date/time. Expected in ISO 8601 format.
- name: deployed_after
in: query
type: string
description: Returns merge requests deployed after the given date/time. Expected in ISO 8601 format
- name: environment
in: query
type: string
description: Returns merge requests deployed to the given environment
- name: approved
in: query
type: string
description: Filters merge requests by their `approved` status. `yes` returns only approved merge requests. `no`
returns only non-approved merge requests.
- name: merge_user_id
in: query
type: integer
description: Returns merge requests which have been merged by the user with the given user `id`. Mutually exclusive
with `merge_user_username`.
- name: merge_user_username
in: query
type: string
description: Returns merge requests which have been merged by the user with the given `username`. Mutually exclusive
with `merge_user_id`.
exposes:
- type: rest
namespace: gitlab-ci-deploy-resources-rest
port: 8080
description: REST adapter for GitLab API — deploy_resources. One Spectral-compliant resource per consumed operation, prefixed
with /v1.
resources:
- path: /v1/api/v4/deploy-keys
name: api-v4-deploy-keys
description: REST surface for api-v4-deploy_keys.
operations:
- method: GET
name: getapiv4deploykeys
description: List all deploy keys
call: gitlab-ci-deploy-resources.getapiv4deploykeys
with:
page: rest.page
per_page: rest.per_page
public: rest.public
outputParameters:
- type: object
mapping: $.
- method: POST
name: postapiv4deploykeys
description: Create a deploy key
call: gitlab-ci-deploy-resources.postapiv4deploykeys
with:
postApiV4DeployKeys: rest.postApiV4DeployKeys
outputParameters:
- type: object
mapping: $.
- path: /v1/api/v4/deploy-tokens
name: api-v4-deploy-tokens
description: REST surface for api-v4-deploy_tokens.
operations:
- method: GET
name: getapiv4deploytokens
description: List all deploy tokens
call: gitlab-ci-deploy-resources.getapiv4deploytokens
with:
page: rest.page
per_page: rest.per_page
active: rest.active
outputParameters:
- type: object
mapping: $.
- path: /v1/api/v4/groups/{id}/deploy-tokens
name: api-v4-groups-id-deploy-tokens
description: REST surface for api-v4-groups-id-deploy_tokens.
operations:
- method: GET
name: getapiv4groupsiddeploytokens
description: List group deploy tokens
call: gitlab-ci-deploy-resources.getapiv4groupsiddeploytokens
with:
id: rest.id
page: rest.page
per_page: rest.per_page
active: rest.active
outputParameters:
- type: object
mapping: $.
- method: POST
name: postapiv4groupsiddeploytokens
description: Create a group deploy token
call: gitlab-ci-deploy-resources.postapiv4groupsiddeploytokens
with:
id: rest.id
postApiV4GroupsIdDeployTokens: rest.postApiV4GroupsIdDeployTokens
outputParameters:
- type: object
mapping: $.
- path: /v1/api/v4/groups/{id}/deploy-tokens/{token-id}
name: api-v4-groups-id-deploy-tokens-token-id
description: REST surface for api-v4-groups-id-deploy_tokens-token_id.
operations:
- method: GET
name: getapiv4groupsiddeploytokenstokenid
description: Get a group deploy token
call: gitlab-ci-deploy-resources.getapiv4groupsiddeploytokenstokenid
with:
id: rest.id
token_id: rest.token_id
outputParameters:
- type: object
mapping: $.
- method: DELETE
name: deleteapiv4groupsiddeploytokenstokenid
description: Delete a group deploy token
call: gitlab-ci-deploy-resources.deleteapiv4groupsiddeploytokenstokenid
with:
id: rest.id
token_id: rest.token_id
outputParameters:
- type: object
mapping: $.
- path: /v1/api/v4/projects/{id}/deploy-keys
name: api-v4-projects-id-deploy-keys
description: REST surface for api-v4-projects-id-deploy_keys.
operations:
- method: GET
name: getapiv4projectsiddeploykeys
description: List deploy keys for project
call: gitlab-ci-deploy-resources.getapiv4projectsiddeploykeys
with:
id: rest.id
page: rest.page
per_page: rest.per_page
outputParameters:
- type: object
mapping: $.
- method: POST
name: postapiv4projectsiddeploykeys
description: Add deploy key
call: gitlab-ci-deploy-resources.postapiv4projectsiddeploykeys
with:
id: rest.id
postApiV4ProjectsIdDeployKeys: rest.postApiV4ProjectsIdDeployKeys
outputParameters:
- type: object
mapping: $.
- path: /v1/api/v4/projects/{id}/deploy-keys/{key-id}
name: api-v4-projects-id-deploy-keys-key-id
description: REST surface for api-v4-projects-id-deploy_keys-key_id.
operations:
- method: GET
name: getapiv4projectsiddeploykeyskeyid
description: Get a single deploy key
call: gitlab-ci-deploy-resources.getapiv4projectsiddeploykeyskeyid
with:
id: rest.id
key_id: rest.key_id
outputParameters:
- type
# --- truncated at 32 KB (52 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gitlab-ci/refs/heads/main/capabilities/gitlab-ci-deploy-resources.yaml