Project-level Secure Files API

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
History

This feature is part of Mobile DevOps developed by GitLab Incubation Engineering. The feature is still in development, but you can:

You can securely store up to 100 files for use in CI/CD pipelines as secure files. These files are stored securely outside of your project’s repository and are not version controlled. It is safe to store sensitive information in these files. Secure files support both plain text and binary file types but must be 5 MB or less.

List project secure files

Get list of secure files in a project.

Copy to clipboard
GET /projects/:project_id/secure_files

Supported attributes:

AttributeTypeRequiredDescription
project_idinteger/stringYesThe ID or URL-encoded path of the project.

Example request:

Copy to clipboard
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/secure_files"

Example response:

Copy to clipboard
[
    {
        "id": 1,
        "name": "myfile.jks",
        "checksum": "16630b189ab34b2e3504f4758e1054d2e478deda510b2b08cc0ef38d12e80aac",
        "checksum_algorithm": "sha256",
        "created_at": "2022-02-22T22:22:22.222Z",
        "expires_at": null,
        "metadata": null
    },
    {
        "id": 2,
        "name": "myfile.cer",
        "checksum": "16630b189ab34b2e3504f4758e1054d2e478deda510b2b08cc0ef38d12e80aa2",
        "checksum_algorithm": "sha256",
        "created_at": "2022-02-22T22:22:22.222Z",
        "expires_at": "2023-09-21T14:55:59.000Z",
        "metadata": {
            "id":"75949910542696343243264405377658443914",
            "issuer": {
                "C":"US",
                "O":"Apple Inc.",
                "CN":"Apple Worldwide Developer Relations Certification Authority",
                "OU":"G3"
            },
            "subject": {
                "C":"US",
                "O":"Organization Name",
                "CN":"Apple Distribution: Organization Name (ABC123XYZ)",
                "OU":"ABC123XYZ",
                "UID":"ABC123XYZ"
            },
            "expires_at":"2023-09-21T14:55:59.000Z"
        }
    }
]

Show secure file details

Get the details of a specific secure file in a project.

Copy to clipboard
GET /projects/:project_id/secure_files/:id

Supported attributes:

AttributeTypeRequiredDescription
idintegerYesThe ID of a secure file.
project_idinteger/stringYesThe ID or URL-encoded path of the project.

Example request:

Copy to clipboard
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/secure_files/1"

Example response:

Copy to clipboard
{
    "id": 1,
    "name": "myfile.jks",
    "checksum": "16630b189ab34b2e3504f4758e1054d2e478deda510b2b08cc0ef38d12e80aac",
    "checksum_algorithm": "sha256",
    "created_at": "2022-02-22T22:22:22.222Z",
    "expires_at": null,
    "metadata": null
}

Create secure file

Create a new secure file.

Copy to clipboard
POST /projects/:project_id/secure_files

Supported attributes:

AttributeTypeRequiredDescription
filefileYesThe file being uploaded (5 MB limit).
namestringYesThe name of the file being uploaded. The filename must be unique in the project.
project_idinteger/stringYesThe ID or URL-encoded path of the project.

Example request:

Copy to clipboard
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:

Copy to clipboard
{
    "id": 1,
    "name": "myfile.jks",
    "checksum": "16630b189ab34b2e3504f4758e1054d2e478deda510b2b08cc0ef38d12e80aac",
    "checksum_algorithm": "sha256",
    "created_at": "2022-02-22T22:22:22.222Z",
    "expires_at": null,
    "metadata": null
}

Download secure file

Download the contents of a project’s secure file.

Copy to clipboard
GET /projects/:project_id/secure_files/:id/download

Supported attributes:

AttributeTypeRequiredDescription
idintegerYesThe ID of a secure file.
project_idinteger/stringYesThe ID or URL-encoded path of the project.

Example request:

Copy to clipboard
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.

Copy to clipboard
DELETE /projects/:project_id/secure_files/:id

Supported attributes:

AttributeTypeRequiredDescription
idintegerYesThe ID of a secure file.
project_idinteger/stringYesThe ID or URL-encoded path of the project.

Example request:

Copy to clipboard
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/secure_files/1"