summaryrefslogtreecommitdiff
path: root/doc/api/secure_files.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/api/secure_files.md')
-rw-r--r--doc/api/secure_files.md171
1 files changed, 171 insertions, 0 deletions
diff --git a/doc/api/secure_files.md b/doc/api/secure_files.md
new file mode 100644
index 00000000000..96190920a33
--- /dev/null
+++ b/doc/api/secure_files.md
@@ -0,0 +1,171 @@
+---
+stage: Verify
+group: Pipeline Authoring
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+type: reference, api
+---
+
+# Project-level Secure Files API **(FREE)**
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/78227) in GitLab 14.8. [Deployed behind the `ci_secure_files` flag](../administration/feature_flags.md), disabled by default.
+
+FLAG:
+On self-managed GitLab, by default this feature is not available. To make it available,
+ask an administrator to [enable the feature flag](../administration/feature_flags.md) named `ci_secure_files`.
+The feature is not ready for production use.
+
+## List project secure files
+
+Get list of secure files in a project.
+
+```plaintext
+GET /projects/:project_id/secure_files
+```
+
+Supported attributes:
+
+| Attribute | Type | Required | Description |
+|--------------|----------------|------------------------|-------------|
+| `project_id` | integer/string | **{check-circle}** Yes | The ID or [URL-encoded path of the project](index.md#namespaced-path-encoding) owned by the authenticated user. |
+
+Example request:
+
+```shell
+curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/secure_files"
+```
+
+Example response:
+
+```json
+[
+ {
+ "id": 1,
+ "name": "myfile.jks",
+ "checksum": "16630b189ab34b2e3504f4758e1054d2e478deda510b2b08cc0ef38d12e80aac",
+ "checksum_algorithm": "sha256",
+ "permissions": "read_only",
+ "created_at": "2022-02-22T22:22:22.222Z"
+ },
+ {
+ "id": 2,
+ "name": "myotherfile.jks",
+ "checksum": "16630b189ab34b2e3504f4758e1054d2e478deda510b2b08cc0ef38d12e80aa2",
+ "checksum_algorithm": "sha256",
+ "permissions": "execute",
+ "created_at": "2022-02-22T22:22:22.222Z"
+ }
+]
+```
+
+## Show secure file details
+
+Get the details of a specific secure file in a project.
+
+```plaintext
+GET /projects/:project_id/secure_files/:id
+```
+
+Supported attributes:
+
+| Attribute | Type | Required | Description |
+|--------------|----------------|------------------------|-------------|
+| `project_id` | integer/string | **{check-circle}** Yes | The ID or [URL-encoded path of the project](index.md#namespaced-path-encoding) owned by the authenticated user. |
+| `id` | integer | **{check-circle}** Yes | The `id` of a secure file. |
+
+Example request:
+
+```shell
+curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/secure_files/1"
+```
+
+Example response:
+
+```json
+{
+ "id": 1,
+ "name": "myfile.jks",
+ "checksum": "16630b189ab34b2e3504f4758e1054d2e478deda510b2b08cc0ef38d12e80aac",
+ "checksum_algorithm": "sha256",
+ "permissions": "read_only",
+ "created_at": "2022-02-22T22:22:22.222Z"
+}
+```
+
+## Create secure file
+
+Create a new secure file.
+
+```plaintext
+POST /projects/:project_id/secure_files
+```
+
+Supported attributes:
+
+| Attribute | Type | Required | Description |
+|---------------|----------------|------------------------|-------------|
+| `project_id` | integer/string | **{check-circle}** Yes | The ID or [URL-encoded path of the project](index.md#namespaced-path-encoding) owned by the authenticated user. |
+| `name` | string | **{check-circle}** Yes | The `name` of the file being uploaded. |
+| `file` | file | **{check-circle}** Yes | The `file` being uploaded. |
+| `permissions` | string | **{dotted-circle}** No | The file is created with the specified permissions when created in the CI/CD job. Available types are: `read_only` (default), `read_write`, and `execute`. |
+
+Example request:
+
+```shell
+curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
+ "https://gitlab.example.com/api/v4/projects/1/secure_files" --form "name=myfile.jks" --form "file=@/path/to/file/myfile.jks"
+```
+
+Example response:
+
+```json
+{
+ "id": 1,
+ "name": "myfile.jks",
+ "checksum": "16630b189ab34b2e3504f4758e1054d2e478deda510b2b08cc0ef38d12e80aac",
+ "checksum_algorithm": "sha256",
+ "permissions": "read_only",
+ "created_at": "2022-02-22T22:22:22.222Z"
+}
+```
+
+## Download secure file
+
+Download the contents of a project's secure file.
+
+```plaintext
+GET /projects/:project_id/download/:id
+```
+
+Supported attributes:
+
+| Attribute | Type | Required | Description |
+|--------------|----------------|------------------------|-------------|
+| `project_id` | integer/string | **{check-circle}** Yes | The ID or [URL-encoded path of the project](index.md#namespaced-path-encoding) owned by the authenticated user. |
+| `id` | integer | **{check-circle}** Yes | The `id` of a secure file. |
+
+Example request:
+
+```shell
+curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/1/secure_files/1/download --output myfile.jks
+```
+
+## Remove secure file
+
+Remove a project's secure file.
+
+```plaintext
+DELETE /projects/:project_id/secure_files/:id
+```
+
+Supported attributes:
+
+| Attribute | Type | Required | Description |
+|--------------|----------------|------------------------|-------------|
+| `project_id` | integer/string | **{check-circle}** Yes | The ID or [URL-encoded path of the project](index.md#namespaced-path-encoding) owned by the authenticated user. |
+| `id` | integer | **{check-circle}** Yes | The `id` of a secure file. |
+
+Example request:
+
+```shell
+curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/secure_files/1"
+```