Skip to content

key_id is required for Creating or updating a repo secret #403

Closed
@AjkayAlan

Description

@AjkayAlan

When creating or updating a repo secret (https://docs.github.com/en/rest/reference/actions#create-or-update-a-repository-secret), https://octokit.github.io/rest.js/v18#actions-create-or-update-repo-secret shows optional. However, if you make an API request without providing key_id, you will get a 422 invalid request:

{
    "errorType": "HttpError",
    "errorMessage": "Invalid request.\n\n\"key_id\" wasn't supplied.",
    "code": 422,
    "name": "HttpError",
    "status": 422,
    "response": {
        "url": "https://api.github.com/repos/myorg/myrepo/actions/secrets/mysecret",
        "status": 422,
        "data": {
            "message": "Invalid request.\n\n\"key_id\" wasn't supplied.",
            "documentation_url": "https://docs.github.com/rest/reference/actions#create-or-update-a-repository-secret"
        }
    },
    "request": {
        "method": "PUT",
        "url": "https://api.github.com/repos/myorg/myrepo/actions/secrets/mysecret",
        "headers": {
            "accept": "application/vnd.github.v3+json",
            "user-agent": "octokit-request.js/5.6.0 Node.js/14.17.0 (linux; x64)",
            "authorization": "token [REDACTED]",
            "content-type": "application/json; charset=utf-8"
        },
        "body": "{\"encrypted_value\":\"TheEncryptedValueHere"}",
        "request": {}
    },
    "stack": [
        "HttpError: Invalid request.",
        "",
        "\"key_id\" wasn't supplied.",
        "    at /var/task/index.js:3:35066",
        "    at processTicksAndRejections (internal/process/task_queues.js:95:5)",
        "    at async XI (/var/task/index.js:5:53816)",
        "    at async DA.addSecretToRepo (/var/task/index.js:100:105846)",
        "    at async Promise.all (index 0)",
        "    at async DA.setSecretsOnRepo (/var/task/index.js:100:105423)",
        "    at async bL (/var/task/index.js:100:106485)",
        "    at async QOe (/var/task/index.js:101:1623)",
        "    at async Runtime.GOe [as handler] (/var/task/index.js:101:1073)"
    ]
}

So, the following does not work:

    const response = await this.makeRequest('PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}', {
      owner: "myorg",
      repo: "myrepo",
      secret_name: "mysecret",
      encrypted_value: "myencryptedvalue",
    });

However, this does work:

    const keyResponse = await this.makeRequest('GET /repos/{owner}/{repo}/actions/secrets/public-key', {
      owner: "myorg",
      repo: "myrepo",
    });

    const response = await this.makeRequest('PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}', {
      owner: "myorg",
      repo: "myrepo",
      secret_name: "mysecret",
      encrypted_value: "myencryptedvalue",
      key_id: keyResponse.data.key_id,
    });

Can the docs be updated to reflect this?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: BugSomething isn't working as documented

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions