Giter Site home page Giter Site logo

routes's Introduction

⚠️ This repository is deprecated.

GitHub has an official OpenAPI Description now

Octokit routes

machine-readable, always up-to-date GitHub REST API route specifications

Update status

Downloads

Or install from package managers

Example

Example operation

{
  "summary": "Lock an issue",
  "description": "Users with push access can lock an issue or pull request's conversation.\n\nNote that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://developer.github.com/v3/#http-verbs).\"",
  "operationId": "issues-lock",
  "tags": ["issues"],
  "externalDocs": {
    "description": "API method documentation",
    "url": "https://developer.github.com/v3/issues/#lock-an-issue"
  },
  "parameters": [
    {
      "name": "accept",
      "description": "Setting to `application/vnd.github.v3+json` is recommended",
      "in": "header",
      "schema": {
        "type": "string",
        "default": "application/vnd.github.v3+json"
      }
    },
    {
      "name": "owner",
      "in": "path",
      "schema": {
        "type": "string"
      },
      "required": true,
      "description": "owner parameter"
    },
    {
      "name": "repo",
      "in": "path",
      "schema": {
        "type": "string"
      },
      "required": true,
      "description": "repo parameter"
    },
    {
      "name": "issue_number",
      "in": "path",
      "schema": {
        "type": "integer"
      },
      "required": true,
      "description": "issue_number parameter"
    }
  ],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "properties": {
            "lock_reason": {
              "description": "The reason for locking the issue or pull request conversation. Lock will fail if you don't use one of these reasons:  \n\\* `off-topic`  \n\\* `too heated`  \n\\* `resolved`  \n\\* `spam`",
              "type": "string",
              "enum": ["off-topic", "too heated", "resolved", "spam"]
            }
          }
        }
      }
    }
  },
  "responses": {
    "204": {
      "description": "Empty response"
    }
  },
  "x-code-samples": [
    {
      "lang": "Shell",
      "source": "curl \\\n  -XPUT \\\n  -H\"Accept: application/vnd.github.v3+json\" \\\n  https://api.github.com/repos/octocat/:repo/issues/:issue_number/lock"
    },
    {
      "lang": "JS",
      "source": "octokit.issues.get({\n  owner: 'octocat',\n  repo: 'hello-world',\n  issue_number: 1\n})"
    }
  ],
  "x-github": {
    "legacy": false,
    "enabledForApps": true,
    "githubCloudOnly": false
  },
  "x-changes": [
    {
      "type": "parameter",
      "date": "2019-04-10",
      "note": "\"number\" parameter renamed to \"issue_number\"",
      "meta": {
        "before": "number",
        "after": "issue_number"
      }
    }
  ]
}

Both endpoints or parameters may be deprecated. The date timestamp can be used to determine how long an Octokit library wants to support the endpoint / parameter. Deprecation information is located in the x-changes array of an operation.

Example for a deprecated parameter

{
  "type": "parameter",
  "date": "2019-04-10",
  "note": "\"number\" parameter renamed to \"issue_number\"",
  "meta": {
    "before": "number",
    "after": "issue_number"
  }
}

Deprecated endpoints have a type of "idName"

{
  "type": "idName",
  "date": "2019-03-05",
  "note": "\"List all licenses\" renamed to \"List commonly used licenses\"",
  "meta": {
    "before": {
      "idName": "list"
    },
    "after": {
      "idName": "list-commonly-used"
    }
  }
}

Usage as Node module

const ROUTES = require("@octokit/routes");
// ROUTES has "api.github.com" key and one "ghe-*" key for each supported GHE version
// The value of each key is the full OpenAPI specification for the respective version

How it works

This package updates itself using a daily cronjob running on Travis. All openapi/*.json files are generated by bin/octokit-rest-routes.js.

node bin/octokit-rest-routes.js update

Run node bin/octokit-rest-routes.js --usage for more instructions.

The update script is scraping GitHub’s REST API documentation pages and extracts the meta information using cheerio and a ton of regular expressions :)

For simpler local testing and tracking of changes, all loaded pages are cached in the cache/ folder. To only run the code generating the OpenAPI files without updating the cache, add the --cached option.

node bin/octokit-rest-routes.js update --cached

To update the enterprise routes for all versions, you have to set the --ghe option.

node bin/octokit-rest-routes.js update --ghe

You can optionally pass a version number

node bin/octokit-rest-routes.js update --ghe 2.20

1. Find documentation pages

Opens https://developer.github.com/v3/, find all documentation page URLs in the side bar navigation.

2. On each documentation page, finds sections

Loads HTML of each documentation page, finds sections in page.

3. In each section, finds endpoints

  • Some sections don’t have endpoints, such as Notifications Reasons
  • Some sections have multiple endpoints, see #3

Loads HTML of documentation page section. Turns it into openapi/*.json files. In some cases the HTML cannot be turned into an endpoint using the implemented patterns. For these cases custom overrides are defined.

See also

LICENSE

MIT

routes's People

Contributors

aryannarora avatar copperwall avatar d11n avatar dependabot[bot] avatar dominykas avatar github-actions[bot] avatar gr2m avatar greenkeeper[bot] avatar knrt10 avatar localheinz avatar maticzav avatar mikeralphson avatar mnahkies avatar octokitbot avatar polinabythebay avatar romanhotsiy avatar sinchang avatar skjnldsv avatar willabides avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

routes's Issues

Create a Commit: parameter type "array of strings" should be "string[]"

Current specification

{
"name": "Create a Commit",
"enabledForApps": true,
"method": "POST",
"path": "/repos/:owner/:repo/git/commits",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
},
{
"name": "message",
"type": "string",
"description": "The commit message",
"required": true
},
{
"name": "tree",
"type": "string",
"description": "The SHA of the tree object this commit points to",
"required": true
},
{
"name": "parents",
"type": "array of strings",
"description": "The SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided; for a merge commit, an array of more than one should be provided.",
"required": true
},
{
"name": "committer",
"type": "object",
"description": "object containing information about the committer."
},
{
"name": "author",
"type": "object",
"description": "object containing information about the author."
}
],
"description": "The `committer` section is optional and will be filled with the `author` data if omitted. If the `author` section is omitted, it will be filled in with the authenticated user's information and the current date.\n\nBoth the `author` and `committer` parameters have the same keys:\n\n| name | type | description |\n| ----- | ------ | ----------------------------------------------------------------------------------------------------------------------- |\n| name | string | The name of the author (or committer) of the commit |\n| email | string | The email of the author (or committer) of the commit |\n| date | string | Indicates when this commit was authored (or committed). This is a timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. |\n\nYou can also provide an optional string `signature` parameter. This value will be added to the `gpgsig` header of the created commit. For a commit signature to be verifiable by Git or GitHub, it must be an ASCII-armored detached PGP signature over the string commit as it would be written to the object database.\n\n**Note**: To pass a `signature` parameter, you need to first manually create a valid PGP signature, which can be complicated. You may find it easier to [use the command line](https://git-scm.com/book/id/v2/Git-Tools-Signing-Your-Work) to create signed commits.\n\nIn this example, the payload that the signature is over would have been:\n\n",
"documentationUrl": "https://developer.github.com/v3/git/commits/#create-a-commit"
}

I expected

"array of strings" should be "string[]"
{
  "name": "Create a Commit",
  "enabledForApps": true,
  "method": "POST",
  "path": "/repos/:owner/:repo/git/commits",
  "params": [
    {
      "name": "owner",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "repo",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "message",
      "type": "string",
      "description": "The commit message",
      "required": true
    },
    {
      "name": "tree",
      "type": "string",
      "description": "The SHA of the tree object this commit points to",
      "required": true
    },
    {
      "name": "parents",
      "type": "string[]",
      "description": "The SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided; for a merge commit, an array of more than one should be provided.",
      "required": true
    },
    {
      "name": "committer",
      "type": "object",
      "description": "object containing information about the committer."
    },
    {
      "name": "author",
      "type": "object",
      "description": "object containing information about the author."
    }
  ],
  "description": "The `committer` section is optional and will be filled with the `author` data if omitted. If the `author` section is omitted, it will be filled in with the authenticated user's information and the current date.\n\nBoth the `author` and `committer` parameters have the same keys:\n\n| name  | type   | description                                                                                                             |\n| ----- | ------ | ----------------------------------------------------------------------------------------------------------------------- |\n| name  | string | The name of the author (or committer) of the commit                                                                     |\n| email | string | The email of the author (or committer) of the commit                                                                    |\n| date  | string | Indicates when this commit was authored (or committed). This is a timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. |\n\nYou can also provide an optional string `signature` parameter. This value will be added to the `gpgsig` header of the created commit. For a commit signature to be verifiable by Git or GitHub, it must be an ASCII-armored detached PGP signature over the string commit as it would be written to the object database.\n\n**Note**: To pass a `signature` parameter, you need to first manually create a valid PGP signature, which can be complicated. You may find it easier to [use the command line](https://git-scm.com/book/id/v2/Git-Tools-Signing-Your-Work) to create signed commits.\n\nIn this example, the payload that the signature is over would have been:\n\n",
  "documentationUrl": "https://developer.github.com/v3/git/commits/#create-a-commit"
}

has failing test at #72

Repositories - Create: enum[true, false] should be boolean

Current specification

{
"method": "POST",
"path": "/user/repos",
"enabledForApps": true,
"name": "Create a new repository for the authenticated user",
"params": [
{
"name": "name",
"type": "string",
"description": "The name of the repository.",
"required": true
},
{
"name": "description",
"type": "string",
"description": "A short description of the repository.",
"required": false
},
{
"name": "homepage",
"type": "string",
"description": "A URL with more information about the repository.",
"required": false
},
{
"name": "private",
"type": "enum",
"options": [
"true",
"false"
],
"description": "Either `true` to create a private repository or `false` to create a public one. Creating private repositories requires a paid GitHub account.",
"default": "false",
"required": false
},
{
"name": "has_issues",
"type": "enum",
"options": [
"true",
"false"
],
"description": "Either `true` to enable issues for this repository or `false` to disable them.",
"default": "true",
"required": false
},
{
"name": "has_projects",
"type": "enum",
"options": [
"true",
"false",
"false",
"true"
],
"description": "Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.",
"default": "true",
"required": false
},
{
"name": "has_wiki",
"type": "enum",
"options": [
"true",
"false"
],
"description": "Either `true` to enable the wiki for this repository or `false` to disable it.",
"default": "true",
"required": false
},
{
"name": "team_id",
"type": "integer",
"description": "The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.",
"required": false
},
{
"name": "auto_init",
"type": "boolean",
"description": "Pass `true` to create an initial commit with empty README.",
"default": false,
"required": false
},
{
"name": "gitignore_template",
"type": "string",
"description": "Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, \"Haskell\".",
"required": false
},
{
"name": "license_template",
"type": "string",
"description": "Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://help.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, \"mit\" or \"mpl-2.0\".",
"required": false
},
{
"name": "allow_squash_merge",
"type": "enum",
"options": [
"true",
"false"
],
"description": "Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.",
"default": "true",
"required": false
},
{
"name": "allow_merge_commit",
"type": "enum",
"options": [
"true",
"false"
],
"description": "Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.",
"default": "true",
"required": false
},
{
"name": "allow_rebase_merge",
"type": "enum",
"options": [
"true",
"false"
],
"description": "Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.",
"default": "true",
"required": false
}
],
"description": "**Note**: There are two endpoints for creating a repository: one to create a repository on a user account, and one to create a repository in an organization. The organization endpoint is fully enabled for [GitHub Apps](/v3/apps/available-endpoints/), whereas the user endpoint is enabled only for [user-to-server requests](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#user-to-server-requests).\n\n**OAuth scope requirements**\n\nWhen using [OAuth](/apps/building-integrations/setting-up-and-registering-oauth-apps/about-scopes-for-oauth-apps/), authorizations must include:\n\n* `public_repo` scope or `repo` scope to create a public repository\n* `repo` scope to create a private repository",
"documentationUrl": "https://developer.github.com/v3/repos/#create"
}

I expected

all enums should be type: boolean instaed
{
  "method": "POST",
  "path": "/user/repos",
  "enabledForApps": true,
  "name": "Create a new repository for the authenticated user",
  "params": [
    {
      "name": "name",
      "type": "string",
      "description": "The name of the repository.",
      "required": true
    },
    {
      "name": "description",
      "type": "string",
      "description": "A short description of the repository.",
      "required": false
    },
    {
      "name": "homepage",
      "type": "string",
      "description": "A URL with more information about the repository.",
      "required": false
    },
    {
      "name": "private",
      "type": "enum",
      "options": [
        "true",
        "false"
      ],
      "description": "Either `true` to create a private repository or `false` to create a public one. Creating private repositories requires a paid GitHub account.",
      "default": "false",
      "required": false
    },
    {
      "name": "has_issues",
      "type": "enum",
      "options": [
        "true",
        "false"
      ],
      "description": "Either `true` to enable issues for this repository or `false` to disable them.",
      "default": "true",
      "required": false
    },
    {
      "name": "has_projects",
      "type": "enum",
      "options": [
        "true",
        "false",
        "false",
        "true"
      ],
      "description": "Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.",
      "default": "true",
      "required": false
    },
    {
      "name": "has_wiki",
      "type": "enum",
      "options": [
        "true",
        "false"
      ],
      "description": "Either `true` to enable the wiki for this repository or `false` to disable it.",
      "default": "true",
      "required": false
    },
    {
      "name": "team_id",
      "type": "integer",
      "description": "The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.",
      "required": false
    },
    {
      "name": "auto_init",
      "type": "boolean",
      "description": "Pass `true` to create an initial commit with empty README.",
      "default": false,
      "required": false
    },
    {
      "name": "gitignore_template",
      "type": "string",
      "description": "Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, \"Haskell\".",
      "required": false
    },
    {
      "name": "license_template",
      "type": "string",
      "description": "Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://help.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, \"mit\" or \"mpl-2.0\".",
      "required": false
    },
    {
      "name": "allow_squash_merge",
      "type": "enum",
      "options": [
        "true",
        "false"
      ],
      "description": "Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.",
      "default": "true",
      "required": false
    },
    {
      "name": "allow_merge_commit",
      "type": "enum",
      "options": [
        "true",
        "false"
      ],
      "description": "Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.",
      "default": "true",
      "required": false
    },
    {
      "name": "allow_rebase_merge",
      "type": "enum",
      "options": [
        "true",
        "false"
      ],
      "description": "Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.",
      "default": "true",
      "required": false
    }
  ],
  "description": "**Note**: There are two endpoints for creating a repository: one to create a repository on a user account, and one to create a repository in an organization. The organization endpoint is fully enabled for [GitHub Apps](/v3/apps/available-endpoints/), whereas the user endpoint is enabled only for [user-to-server requests](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#user-to-server-requests).\n\n**OAuth scope requirements**\n\nWhen using [OAuth](/apps/building-integrations/setting-up-and-registering-oauth-apps/about-scopes-for-oauth-apps/), authorizations must include:\n\n*   `public_repo` scope or `repo` scope to create a public repository\n*   `repo` scope to create a private repository",
  "documentationUrl": "https://developer.github.com/v3/repos/#create"
}

Reactions: "content" parameter is an enum

  • endpoint scope: Reactions
  • endpoint name: Pretty much all of them, but for example "List reactions for an issue" and "Create reaction for an issue"
  • documentation URL: https://developer.github.com/v3/reactions

Current specifications

{
"name": "content",
"type": "string",
"description": "Returns a single [reaction type](/v3/reactions/#reaction-types). Omit this parameter to list all reactions to an issue.",
"required": false
},

{
"name": "content",
"type": "string",
"description": "The [reaction type](/v3/reactions/#reaction-types) to add to the issue.",
"required": true
}

I expected

The "content" parameter should be an an enum with the options

[
  "+1",
  "-1",
  "laugh",
  "confused",
  "heart",
  "hooray"
]

If you’d like to work on it, just comment below and follow instructions in CONTRIBUTING.md

Orgs - Edit an organization: "default_repository_permission" is an enum

Current specification

{
"name": "default_repository_permission",
"type": "string",
"description": "Default permission level members have for organization repositories: \n\\* `read` \\- can pull, but not push to or administer this repository. \n\\* `write` \\- can pull and push, but not administer this repository. \n\\* `admin` \\- can pull, push, and administer this repository. \n\\* `none` \\- no permissions granted by default.",
"default": "read",
"required": false
},

I expected

"default_repository_permission" parameter should have "enum" options
{
  "name": "Edit an organization",
  "enabledForApps": false,
  "method": "PATCH",
  "path": "/orgs/:org",
  "params": [
    {
      "name": "org",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "billing_email",
      "type": "string",
      "description": "Billing email address. This address is not publicized.",
      "required": false
    },
    {
      "name": "company",
      "type": "string",
      "description": "The company name.",
      "required": false
    },
    {
      "name": "email",
      "type": "string",
      "description": "The publicly visible email address.",
      "required": false
    },
    {
      "name": "location",
      "type": "string",
      "description": "The location.",
      "required": false
    },
    {
      "name": "name",
      "type": "string",
      "description": "The shorthand name of the company.",
      "required": false
    },
    {
      "name": "description",
      "type": "string",
      "description": "The description of the company.",
      "required": false
    },
    {
      "name": "has_organization_projects",
      "type": "boolean",
      "description": "Toggles whether organization projects are enabled for the organization.",
      "required": false
    },
    {
      "name": "has_repository_projects",
      "type": "boolean",
      "description": "Toggles whether repository projects are enabled for repositories that belong to the organization.",
      "required": false
    },
    {
      "name": "default_repository_permission",
      "type": "string",
      "description": "Default permission level members have for organization repositories:  \n\\* `read` \\- can pull, but not push to or administer this repository.  \n\\* `write` \\- can pull and push, but not administer this repository.  \n\\* `admin` \\- can pull, push, and administer this repository.  \n\\* `none` \\- no permissions granted by default.",
      "default": "read",
      "required": false,
      "enum": [
        "read",
        "write",
        "admin",
        "none"
      ]
    },
    {
      "name": "members_can_create_repositories",
      "type": "boolean",
      "description": "Toggles ability of non-admin organization members to create repositories  \n\\* `true` \\- all organization members can create repositories.  \n\\* `false` \\- only admin members can create repositories.",
      "default": true,
      "required": false
    }
  ],
  "description": "",
  "documentationUrl": "https://developer.github.com/v3/orgs/#edit-an-organization"
}

If you’d like to work on it, just comment below and follow instructions in CONTRIBUTING.md

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this 💪.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


The push permission to the Git repository is required.

semantic-release cannot push the version tag to the branch master on remote Git repository.

Please refer to the authentication configuration documentation to configure the Git credentials on your CI environment.


Good luck with your project ✨

Your semantic-release bot 📦🚀

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this 💪.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


The push permission to the Git repository is required.

semantic-release cannot push the version tag to the branch master on remote Git repository.

Please refer to the authentication configuration documentation to configure the Git credentials on your CI environment.


Good luck with your project ✨

Your semantic-release bot 📦🚀

Create an issue: parameter type "integer" should be "number"

Current specification

{
"name": "Create an issue",
"enabledForApps": true,
"method": "POST",
"path": "/repos/:owner/:repo/issues",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
},
{
"name": "title",
"type": "string",
"description": "The title of the issue.",
"required": true
},
{
"name": "body",
"type": "string",
"description": "The contents of the issue.",
"required": false
},
{
"name": "assignee",
"type": "string",
"description": "Login for the user that this issue should be assigned to. _NOTE: Only users with push access can set the assignee for new issues. The assignee is silently dropped otherwise. **This field is deprecated.**_",
"required": false
},
{
"name": "milestone",
"type": "integer",
"description": "The `number` of the milestone to associate this issue with. _NOTE: Only users with push access can set the milestone for new issues. The milestone is silently dropped otherwise._",
"required": false
},
{
"name": "labels",
"type": "array of strings",
"description": "Labels to associate with this issue. _NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise._",
"required": false
},
{
"name": "assignees",
"type": "array of strings",
"description": "Logins for Users to assign to this issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._",
"required": false
}
],
"description": "Any user with pull access to a repository can create an issue.",
"documentationUrl": "https://developer.github.com/v3/issues/#create-an-issue"
}

I expected

"integer" should be "number"
{
  "name": "Create an issue",
  "enabledForApps": true,
  "method": "POST",
  "path": "/repos/:owner/:repo/issues",
  "params": [
    {
      "name": "owner",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "repo",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "title",
      "type": "string",
      "description": "The title of the issue.",
      "required": true
    },
    {
      "name": "body",
      "type": "string",
      "description": "The contents of the issue.",
      "required": false
    },
    {
      "name": "assignee",
      "type": "string",
      "description": "Login for the user that this issue should be assigned to. _NOTE: Only users with push access can set the assignee for new issues. The assignee is silently dropped otherwise. **This field is deprecated.**_",
      "required": false
    },
    {
      "name": "milestone",
      "type": "number",
      "description": "The `number` of the milestone to associate this issue with. _NOTE: Only users with push access can set the milestone for new issues. The milestone is silently dropped otherwise._",
      "required": false
    },
    {
      "name": "labels",
      "type": "array of strings",
      "description": "Labels to associate with this issue. _NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise._",
      "required": false
    },
    {
      "name": "assignees",
      "type": "array of strings",
      "description": "Logins for Users to assign to this issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._",
      "required": false
    }
  ],
  "description": "Any user with pull access to a repository can create an issue.",
  "documentationUrl": "https://developer.github.com/v3/issues/#create-an-issue"
}

has failing test at #75

Multiple routes per segment

Authenticated/specified user

GET /users/:username/starred
GET /user/starred
GET /users/:username/subscriptions
GET /user/subscriptions
GET /users/:username/gists
GET /gists
GET /users/:username/followers
GET /user/followers
GET /users/:username/following
GET /user/following

Examples

GET /repos/:owner/:repo/git/refs/:ref
GET /repos/:owner/:repo/git/refs/heads/skunkworkz/featureA
GET /repos/:owner/:repo/git/refs/heads/feature
GET /repos/:owner/:repo/git/refs/heads/feature-branch-that-no-longer-exists
DELETE /repos/:owner/:repo/git/refs/:ref
DELETE /repos/octocat/Hello-World/git/refs/heads/feature-a
DELETE /repos/octocat/Hello-World/git/refs/tags/v1.0
GET /repos/:owner/:repo/compare/:base...:head
GET /repos/:owner/:repo/compare/hubot:branchname...octocat:branchname
GET https://api.github.com/scim/v2/organizations/:organization/Users
GET https://api.github.com/scim/v2/organizations/:organization/Users?filter=userName

Optional suffix

GET /repos/:owner/:repo/git/refs
GET /repos/:owner/:repo/git/refs/tags

Other

GET /marketplace_listing/plans
GET /marketplace_listing/stubbed/plans
GET /marketplace_listing/plans/:id/accounts
GET /marketplace_listing/stubbed/plans/:id/accounts
GET /marketplace_listing/accounts/:id
GET /marketplace_listing/stubbed/accounts/:id
GET /user/marketplace_purchases
GET /user/marketplace_purchases/stubbed
GET /issues
GET /user/issues
GET /orgs/:org/issues
POST /user/repos
POST /orgs/:org/repos

add route variables as parameters

Current specification

{
"name": "List comments on an issue",
"enabledForApps": true,
"method": "GET",
"path": "/repos/:owner/:repo/issues/:number/comments",
"params": [
{
"name": "since",
"type": "string",
"description": "Only comments updated at or after this time are returned. This is a timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.",
"required": false
}
],
"description": "Issue Comments are ordered by ascending ID.",
"documentationUrl": "https://developer.github.com/v3/issues/comments/#list-comments-on-an-issue"
}

I expected

owner, repo and number should be listed in parameters
{
  "name": "List comments on an issue",
  "enabledForApps": true,
  "method": "GET",
  "path": "/repos/:owner/:repo/issues/:number/comments",
  "params": [
    {
      "name": "owner",
      "type": "string",
      "description": "",
      "required": true
    },
    {
      "name": "repo",
      "type": "string",
      "description": "",
      "required": true
    },
    {
      "name": "number",
      "type": "number",
      "description": "",
      "required": true
    },
    {
      "name": "since",
      "type": "string",
      "description": "Only comments updated at or after this time are returned. This is a timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.",
      "required": false
    }
  ],
  "description": "Issue Comments are ordered by ascending ID.",
  "documentationUrl": "https://developer.github.com/v3/issues/comments/#list-comments-on-an-issue"
}

parameter type "array" should be "string[]" or "number[]"

Has failing test at #77

GHE version

Ideally show what GHE versions are supported with differences, such as required preview headers etc

Transfer a repository: "team_id" parameter type should be "integer[]"

Current specification

{
"name": "Transfer a repository",
"enabledForApps": false,
"method": "POST",
"path": "/repos/:owner/:repo/transfer",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
},
{
"name": "new_owner",
"type": "string",
"description": "**Required:** The username or organization name the repository will be transferred to.",
"required": false
},
{
"name": "team_id",
"type": "array of integers",
"description": "ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories.",
"required": false
}
],
"description": "A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://help.github.com/articles/about-repository-transfers/).",
"documentationUrl": "https://developer.github.com/v3/repos/#transfer-a-repository"
}

I expected

"array of integers" should be "integer[]"
{
  "name": "Transfer a repository",
  "enabledForApps": false,
  "method": "POST",
  "path": "/repos/:owner/:repo/transfer",
  "params": [
    {
      "name": "owner",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "repo",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "new_owner",
      "type": "string",
      "description": "**Required:** The username or organization name the repository will be transferred to.",
      "required": false
    },
    {
      "name": "team_id",
      "type": "integer[]",
      "description": "ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories.",
      "required": false
    }
  ],
  "description": "A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://help.github.com/articles/about-repository-transfers/).",
  "documentationUrl": "https://developer.github.com/v3/repos/#transfer-a-repository"
}

has failing test at #70

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this 💪.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


The push permission to the Git repository is required.

semantic-release cannot push the version tag to the branch master on remote Git repository.

Please refer to the authentication configuration documentation to configure the Git credentials on your CI environment.


Good luck with your project ✨

Your semantic-release bot 📦🚀

Get contents: "path" parameter should be required

Current specification

{
"name": "Get contents",
"enabledForApps": true,
"method": "GET",
"path": "/repos/:owner/:repo/contents/:path",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
},
{
"name": "path",
"type": "string",
"description": "The content path.",
"required": false
},
{
"name": "ref",
"type": "string",
"description": "The name of the commit/branch/tag.",
"default": "the repository’s default branch (usually `master`)",
"required": false
}
],
"description": "This method returns the contents of a file or directory in a repository.\n\nFiles and symlinks support [a custom media type](#custom-media-types) for retrieving the raw content or rendered HTML (when supported). All content types support [a custom media type](#custom-media-types) to ensure the content is returned in a consistent object format.\n\n**Note**:\n\n* To get a repository's contents recursively, you can [recursively get the tree](/v3/git/trees/).\n* This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files, use the [Git Trees API](/v3/git/trees/#get-a-tree).\n* This API supports files up to 1 megabyte in size.\n\nThe response will be an array of objects, one object for each item in the directory.\n\nWhen listing the contents of a directory, submodules have their \"type\" specified as \"file\". Logically, the value _should_ be \"submodule\". This behavior exists in API v3 [for backwards compatibility purposes](https://git.io/v1YCW). In the next major version of the API, the type will be returned as \"submodule\".\n\nIf the requested `:path` points to a symlink, and the symlink's target is a normal file in the repository, then the API responds with the content of the file (in the [format shown above](#response-if-content-is-a-file)).\n\nOtherwise, the API responds with an object describing the symlink itself:\n\nThe `submodule_git_url` identifies the location of the submodule repository, and the `sha` identifies a specific commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out the submodule at that specific commit.\n\nIf the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links[\"git\"]`) and the github.com URLs (`html_url` and `_links[\"html\"]`) will have null values.",
"documentationUrl": "https://developer.github.com/v3/repos/contents/#get-contents"
}

I expected

"path" parameter should be marked as required
{
  "name": "Get contents",
  "enabledForApps": true,
  "method": "GET",
  "path": "/repos/:owner/:repo/contents/:path",
  "params": [
    {
      "name": "owner",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "repo",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "path",
      "type": "string",
      "description": "The content path.",
      "required": true
    },
    {
      "name": "ref",
      "type": "string",
      "description": "The name of the commit/branch/tag.",
      "default": "the repository’s default branch (usually `master`)",
      "required": false
    }
  ],
  "description": "This method returns the contents of a file or directory in a repository.\n\nFiles and symlinks support [a custom media type](#custom-media-types) for retrieving the raw content or rendered HTML (when supported). All content types support [a custom media type](#custom-media-types) to ensure the content is returned in a consistent object format.\n\n**Note**:\n\n*   To get a repository's contents recursively, you can [recursively get the tree](/v3/git/trees/).\n*   This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files, use the [Git Trees API](/v3/git/trees/#get-a-tree).\n*   This API supports files up to 1 megabyte in size.\n\nThe response will be an array of objects, one object for each item in the directory.\n\nWhen listing the contents of a directory, submodules have their \"type\" specified as \"file\". Logically, the value _should_ be \"submodule\". This behavior exists in API v3 [for backwards compatibility purposes](https://git.io/v1YCW). In the next major version of the API, the type will be returned as \"submodule\".\n\nIf the requested `:path` points to a symlink, and the symlink's target is a normal file in the repository, then the API responds with the content of the file (in the [format shown above](#response-if-content-is-a-file)).\n\nOtherwise, the API responds with an object describing the symlink itself:\n\nThe `submodule_git_url` identifies the location of the submodule repository, and the `sha` identifies a specific commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out the submodule at that specific commit.\n\nIf the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links[\"git\"]`) and the github.com URLs (`html_url` and `_links[\"html\"]`) will have null values.",
  "documentationUrl": "https://developer.github.com/v3/repos/contents/#get-contents"
}

Replace "Time.now" with better default value

Time.now is Ruby specific. Maybe we should do something like 2008-04-10T08:00:00Z (with current date/time) or <current time>

List your notifications

Param: since

https://developer.github.com/v3/activity/notifications/#list-your-notifications

List your notifications in a repository

Param: since

https://developer.github.com/v3/activity/notifications/#list-your-notifications-in-a-repository

Mark as read

Param: last_read_at

https://developer.github.com/v3/activity/notifications/#mark-as-read

Mark notifications as read in a repository

Param: last_read_at

https://developer.github.com/v3/activity/notifications/#mark-notifications-as-read-in-a-repository

Create a Tree: parameter type "array of objects " should be "object[]"

Current specification

{
"name": "Create a Tree",
"enabledForApps": true,
"method": "POST",
"path": "/repos/:owner/:repo/git/trees",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
},
{
"name": "tree",
"type": "array of objects",
"description": "Objects (of `path`, `mode`, `type`, and `sha`) specifying a tree structure",
"required": true
},
{
"name": "tree.path",
"type": "string",
"description": "The file referenced in the tree",
"required": false
},
{
"name": "tree.mode",
"type": "string",
"description": "The file mode; one of `100644` for file (blob), `100755` for executable (blob), `040000` for subdirectory (tree), `160000` for submodule (commit), or `120000` for a blob that specifies the path of a symlink",
"required": false
},
{
"name": "tree.type",
"type": "enum",
"options": [
"blob",
"tree",
"commit"
],
"description": "Either `blob`, `tree`, or `commit`",
"required": false
},
{
"name": "tree.sha",
"type": "string",
"description": "The SHA1 checksum ID of the object in the tree",
"required": false
},
{
"name": "tree.content",
"type": "string",
"description": "The content you want this file to have. GitHub will write this blob out and use that SHA for this entry. Use either this, or `tree.sha`.",
"required": false
},
{
"name": "base_tree",
"type": "string",
"description": "The SHA1 of the tree you want to update with new data. If you don't set this, the commit will be created on top of everything; however, it will only contain your change, the rest of your files will show up as deleted.",
"required": false
}
],
"description": "The tree creation API will take nested entries as well. If both a tree and a nested path modifying that tree are specified, it will overwrite the contents of that tree with the new path contents and write a new tree out.",
"documentationUrl": "https://developer.github.com/v3/git/trees/#create-a-tree"
}

I expected

"array of objects " should be "object[]"
{
  "name": "Create a Tree",
  "enabledForApps": true,
  "method": "POST",
  "path": "/repos/:owner/:repo/git/trees",
  "params": [
    {
      "name": "owner",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "repo",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "tree",
      "type": "object[]",
      "description": "Objects (of `path`, `mode`, `type`, and `sha`) specifying a tree structure",
      "required": true
    },
    {
      "name": "tree.path",
      "type": "string",
      "description": "The file referenced in the tree",
      "required": false
    },
    {
      "name": "tree.mode",
      "type": "string",
      "description": "The file mode; one of `100644` for file (blob), `100755` for executable (blob), `040000` for subdirectory (tree), `160000` for submodule (commit), or `120000` for a blob that specifies the path of a symlink",
      "required": false
    },
    {
      "name": "tree.type",
      "type": "enum",
      "options": [
        "blob",
        "tree",
        "commit"
      ],
      "description": "Either `blob`, `tree`, or `commit`",
      "required": false
    },
    {
      "name": "tree.sha",
      "type": "string",
      "description": "The SHA1 checksum ID of the object in the tree",
      "required": false
    },
    {
      "name": "tree.content",
      "type": "string",
      "description": "The content you want this file to have. GitHub will write this blob out and use that SHA for this entry. Use either this, or `tree.sha`.",
      "required": false
    },
    {
      "name": "base_tree",
      "type": "string",
      "description": "The SHA1 of the tree you want to update with new data. If you don't set this, the commit will be created on top of everything; however, it will only contain your change, the rest of your files will show up as deleted.",
      "required": false
    }
  ],
  "description": "The tree creation API will take nested entries as well. If both a tree and a nested path modifying that tree are specified, it will overwrite the contents of that tree with the new path contents and write a new tree out.",
  "documentationUrl": "https://developer.github.com/v3/git/trees/#create-a-tree"
}

Has failing test at #69

Create a Tag Object: required parameters not marked as such

Current specification

{
"name": "Create a Tag Object",
"enabledForApps": true,
"method": "POST",
"path": "/repos/:owner/:repo/git/tags",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
},
{
"name": "tag",
"type": "string",
"description": "The tag",
"required": false
},
{
"name": "message",
"type": "string",
"description": "The tag message",
"required": false
},
{
"name": "object",
"type": "string",
"description": "The SHA of the git object this is tagging",
"required": false
},
{
"name": "type",
"type": "string",
"description": "The type of the object we're tagging. Normally this is a `commit` but it can also be a `tree` or a `blob`.",
"required": false
},
{
"name": "tagger",
"type": "object",
"description": "An object with information about the individual creating the tag.",
"required": false
},
{
"name": "tagger.name",
"type": "string",
"description": "The name of the author of the tag",
"required": false
},
{
"name": "tagger.email",
"type": "string",
"description": "The email of the author of the tag",
"required": false
},
{
"name": "tagger.date",
"type": "string",
"description": "When this object was tagged. This is a timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.",
"required": false
}
],
"description": "Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](/v3/git/refs/#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](/v3/git/refs/#create-a-reference) the tag reference - this call would be unnecessary.",
"documentationUrl": "https://developer.github.com/v3/git/tags/#create-a-tag-object"
}

Todo

Someone either needs to manually test which parameters are required or someone from GitHub could tell us. Goal here is to not fix it on our side but help GitHub to update their documentation

Endpoints without a route

Something is wrong with these

[
  {
    "name": "List a user's gists",
    "enabledForApps": false,
    "params": [
      {
        "name": "since",
        "type": "string",
        "description": "A timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.",
        "required": false
      }
    ],
    "description": "List public gists for the specified user:\n\nList the authenticated user's gists or if called anonymously, this will return all public gists:",
    "documentationUrl": "https://developer.github.com/v3/gists/#list-a-users-gists"
  },
  {
    "name": "Delete a Reference",
    "enabledForApps": true,
    "params": [],
    "description": "Example: Deleting a branch:\n\n```\nDELETE /repos/octocat/Hello-World/git/refs/heads/feature-a\n```\n\nExample: Deleting a tag:\n\n```\nDELETE /repos/octocat/Hello-World/git/refs/tags/v1.0\n```",
    "documentationUrl": "https://developer.github.com/v3/git/refs/#delete-a-reference"
  },
  {
    "name": "Create",
    "enabledForApps": true,
    "params": [
      {
        "name": "name",
        "type": "string",
        "description": "The name of the repository.",
        "required": true
      },
      {
        "name": "description",
        "type": "string",
        "description": "A short description of the repository.",
        "required": false
      },
      {
        "name": "homepage",
        "type": "string",
        "description": "A URL with more information about the repository.",
        "required": false
      },
      {
        "name": "private",
        "type": "enum",
        "options": [
          "true",
          "false"
        ],
        "description": "Either `true` to create a private repository or `false` to create a public one. Creating private repositories requires a paid GitHub account.",
        "default": "false",
        "required": false
      },
      {
        "name": "has_issues",
        "type": "enum",
        "options": [
          "true",
          "false"
        ],
        "description": "Either `true` to enable issues for this repository or `false` to disable them.",
        "default": "true",
        "required": false
      },
      {
        "name": "has_projects",
        "type": "enum",
        "options": [
          "true",
          "false",
          "false",
          "true"
        ],
        "description": "Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.",
        "default": "true",
        "required": false
      },
      {
        "name": "has_wiki",
        "type": "enum",
        "options": [
          "true",
          "false"
        ],
        "description": "Either `true` to enable the wiki for this repository or `false` to disable it.",
        "default": "true",
        "required": false
      },
      {
        "name": "team_id",
        "type": "integer",
        "description": "The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.",
        "required": false
      },
      {
        "name": "auto_init",
        "type": "boolean",
        "description": "Pass `true` to create an initial commit with empty README.",
        "default": false,
        "required": false
      },
      {
        "name": "gitignore_template",
        "type": "string",
        "description": "Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, \"Haskell\".",
        "required": false
      },
      {
        "name": "license_template",
        "type": "string",
        "description": "Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://help.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, \"mit\" or \"mpl-2.0\".",
        "required": false
      },
      {
        "name": "allow_squash_merge",
        "type": "enum",
        "options": [
          "true",
          "false"
        ],
        "description": "Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.",
        "default": "true",
        "required": false
      },
      {
        "name": "allow_merge_commit",
        "type": "enum",
        "options": [
          "true",
          "false"
        ],
        "description": "Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.",
        "default": "true",
        "required": false
      },
      {
        "name": "allow_rebase_merge",
        "type": "enum",
        "options": [
          "true",
          "false"
        ],
        "description": "Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.",
        "default": "true",
        "required": false
      }
    ],
    "description": "Create a new repository for the authenticated user.\n\n**Note**: There are two endpoints for creating a repository: one to create a repository on a user account, and one to create a repository in an organization. The organization endpoint is fully enabled for [GitHub Apps](/v3/apps/available-endpoints/), whereas the user endpoint is enabled only for [user-to-server requests](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#user-to-server-requests).\n\nCreate a new repository in this organization. The authenticated user must be a member of the specified organization.\n\n**OAuth scope requirements**\n\nWhen using [OAuth](/apps/building-integrations/setting-up-and-registering-oauth-apps/about-scopes-for-oauth-apps/), authorizations must include:\n\n*   `public_repo` scope or `repo` scope to create a public repository\n*   `repo` scope to create a private repository",
    "documentationUrl": "https://developer.github.com/v3/repos/#create"
  },
  {
    "name": "Compare two commits",
    "enabledForApps": false,
    "params": [],
    "description": "Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `<USERNAME>:branch`. For example:\n\n```\nGET /repos/:owner/:repo/compare/hubot:branchname...octocat:branchname\n```\n\nThe response from the API is equivalent to running the `git log base..head` command; however, commits are returned in reverse chronological order.\n\nPass the appropriate [media type](/v3/media/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.\n\n**Working with large comparisons**\n\nThe response will include a comparison of up to 250 commits. If you are working with a larger commit range, you can use the [Commit List API](/v3/repos/commits/#list-commits-on-a-repository) to enumerate all commits in the range.\n\nFor comparisons with extremely large diffs, you may receive an error response indicating that the diff took too long to generate. You can typically resolve this error by using a smaller commit range.",
    "documentationUrl": "https://developer.github.com/v3/repos/commits/#compare-two-commits"
  },
  {
    "name": "Get a list of provisioned identities",
    "enabledForApps": false,
    "params": [
      {
        "name": "startIndex",
        "type": "integer",
        "description": "Used for pagination: the index of the first result to return",
        "required": false
      },
      {
        "name": "count",
        "type": "integer",
        "description": "Used for pagination: the number of results to return",
        "required": false
      },
      {
        "name": "filter",
        "type": "string",
        "description": "Only `eq` type filters are supported",
        "required": false
      }
    ],
    "description": "**Filter parameter**\n\nYou can filter results with the `id`, `userName`, `emails` and `external_id` query parameters.\n\nRetrieves a paginated list of all provisioned organization members, including pending invitations.",
    "documentationUrl": "https://developer.github.com/v3/scim/#get-a-list-of-provisioned-identities"
  }
]

List pull requests: description contains too much content

List issues for a repository: parameter type "integer or string" should be "string"

Current specification

{
"name": "List issues for a repository",
"enabledForApps": true,
"method": "GET",
"path": "/repos/:owner/:repo/issues",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
},
{
"name": "milestone",
"type": "integer or string",
"description": "If an `integer` is passed, it should refer to a milestone by its `number` field. If the string `*` is passed, issues with any milestone are accepted. If the string `none` is passed, issues without milestones are returned.",
"required": false
},
{
"name": "state",
"type": "string",
"description": "Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.",
"default": "open",
"required": false
},
{
"name": "assignee",
"type": "string",
"description": "Can be the name of a user. Pass in `none` for issues with no assigned user, and `*` for issues assigned to any user.",
"required": false
},
{
"name": "creator",
"type": "string",
"description": "The user that created the issue.",
"required": false
},
{
"name": "mentioned",
"type": "string",
"description": "A user that's mentioned in the issue.",
"required": false
},
{
"name": "labels",
"type": "string",
"description": "A list of comma separated label names. Example: `bug,ui,@high`",
"required": false
},
{
"name": "sort",
"type": "string",
"description": "What to sort results by. Can be either `created`, `updated`, `comments`.",
"default": "created",
"required": false
},
{
"name": "direction",
"type": "string",
"description": "The direction of the sort. Can be either `asc` or `desc`.",
"default": "desc",
"required": false
},
{
"name": "since",
"type": "string",
"description": "Only issues updated at or after this time are returned. This is a timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.",
"required": false
},
{
"name": "per_page",
"type": "number",
"required": false,
"description": "Results per page (max 100)",
"default": 30
},
{
"name": "page",
"type": "number",
"required": false,
"description": "Page number of the results to fetch.",
"default": 1
}
],
"description": "**Note**: In the past, pull requests and issues were more closely aligned than they are now. As far as the API is concerned, every pull request is an issue, but not every issue is a pull request.\n\nThis endpoint may also return pull requests in the response. If an issue _is_ a pull request, the object will include a `pull_request` key.\n\n\n\n**Note:** If a user opened an issue via a GitHub App, the `performed_via_github_app` key contains information on that GitHub App.",
"documentationUrl": "https://developer.github.com/v3/issues/#list-issues-for-a-repository"
}

I expected

"integer or string" should be "string"
{
  "name": "List issues for a repository",
  "enabledForApps": true,
  "method": "GET",
  "path": "/repos/:owner/:repo/issues",
  "params": [
    {
      "name": "owner",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "repo",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "milestone",
      "type": "string",
      "description": "If an `integer` is passed, it should refer to a milestone by its `number` field. If the string `*` is passed, issues with any milestone are accepted. If the string `none` is passed, issues without milestones are returned.",
      "required": false
    },
    {
      "name": "state",
      "type": "string",
      "description": "Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.",
      "default": "open",
      "required": false
    },
    {
      "name": "assignee",
      "type": "string",
      "description": "Can be the name of a user. Pass in `none` for issues with no assigned user, and `*` for issues assigned to any user.",
      "required": false
    },
    {
      "name": "creator",
      "type": "string",
      "description": "The user that created the issue.",
      "required": false
    },
    {
      "name": "mentioned",
      "type": "string",
      "description": "A user that's mentioned in the issue.",
      "required": false
    },
    {
      "name": "labels",
      "type": "string",
      "description": "A list of comma separated label names. Example: `bug,ui,@high`",
      "required": false
    },
    {
      "name": "sort",
      "type": "string",
      "description": "What to sort results by. Can be either `created`, `updated`, `comments`.",
      "default": "created",
      "required": false
    },
    {
      "name": "direction",
      "type": "string",
      "description": "The direction of the sort. Can be either `asc` or `desc`.",
      "default": "desc",
      "required": false
    },
    {
      "name": "since",
      "type": "string",
      "description": "Only issues updated at or after this time are returned. This is a timestamp in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`.",
      "required": false
    },
    {
      "name": "per_page",
      "type": "number",
      "required": false,
      "description": "Results per page (max 100)",
      "default": 30
    },
    {
      "name": "page",
      "type": "number",
      "required": false,
      "description": "Page number of the results to fetch.",
      "default": 1
    }
  ],
  "description": "**Note**: In the past, pull requests and issues were more closely aligned than they are now. As far as the API is concerned, every pull request is an issue, but not every issue is a pull request.\n\nThis endpoint may also return pull requests in the response. If an issue _is_ a pull request, the object will include a `pull_request` key.\n\n\n\n**Note:** If a user opened an issue via a GitHub App, the `performed_via_github_app` key contains information on that GitHub App.",
  "documentationUrl": "https://developer.github.com/v3/issues/#list-issues-for-a-repository"
}

Get a Tree & Get a Tree Recursively is one endpoint and should be combined

recursive is a parameter like in many other GET routes

routes/index.json

Lines 2232 to 2287 in 11a432f

{
"name": "Get a Tree",
"enabledForApps": true,
"method": "GET",
"path": "/repos/:owner/:repo/git/trees/:sha",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
},
{
"name": "sha",
"type": "string",
"required": true,
"description": ""
}
],
"description": "If `truncated` is `true`, the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, you can clone the repository and iterate over the Git data locally.",
"documentationUrl": "https://developer.github.com/v3/git/trees/#get-a-tree"
},
{
"name": "Get a Tree Recursively",
"enabledForApps": false,
"method": "GET",
"path": "/repos/:owner/:repo/git/trees/:sha?recursive=1",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
},
{
"name": "sha",
"type": "string",
"required": true,
"description": ""
}
],
"description": "If `truncated` is `true`, the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, use the non-recursive method of fetching trees, and fetch one sub-tree at a time.",
"documentationUrl": "https://developer.github.com/v3/git/trees/#get-a-tree-recursively"
},

Multiple parameters / input tables per endpoint

`enabledForApps` flag

Not all API endpoints are enabled for apps yet. The ones that are have a (i) after the endpoint title, e.g.
image

Teams - Create a team: "privacy" is an enum

Current specification

{
"name": "privacy",
"type": "string",
"description": "The level of privacy this team should have. The options are: \n**For a non-nested team:** \n\\* `secret` \\- only visible to organization owners and members of this team. \n\\* `closed` \\- visible to all members of this organization. \nDefault: `secret` \n**For a parent or child team:** \n\\* `closed` \\- visible to all members of this organization. \nDefault for child team: `closed` \n**Note**: You must pass the `hellcat-preview` media type to set privacy default to `closed` for child teams. **For a parent or child team:** ",
"default": "secret",
"required": false
},

I expected

"privacy" parameter should have "enum" options
{
  "name": "Create team",
  "enabledForApps": false,
  "method": "POST",
  "path": "/orgs/:org/teams",
  "params": [
    {
      "name": "org",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "name",
      "type": "string",
      "description": "The name of the team.",
      "required": true
    },
    {
      "name": "description",
      "type": "string",
      "description": "The description of the team.",
      "required": false
    },
    {
      "name": "maintainers",
      "type": "array of strings",
      "description": "The logins of organization members to add as maintainers of the team.",
      "required": false
    },
    {
      "name": "repo_names",
      "type": "array of strings",
      "description": "The full name (e.g., \"organization-name/repository-name\") of repositories to add the team to.",
      "required": false
    },
    {
      "name": "privacy",
      "type": "string",
      "description": "The level of privacy this team should have. The options are:  \n**For a non-nested team:**  \n\\* `secret` \\- only visible to organization owners and members of this team.  \n\\* `closed` \\- visible to all members of this organization.  \nDefault: `secret`  \n**For a parent or child team:**  \n\\* `closed` \\- visible to all members of this organization.  \nDefault for child team: `closed`  \n**Note**: You must pass the `hellcat-preview` media type to set privacy default to `closed` for child teams. **For a parent or child team:**  ",
      "default": "secret",
      "required": false,
      "enum": [
        "secret",
        "closed"
      ]
    },
    {
      "name": "permission",
      "type": "string",
      "description": "**Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of:  \n\\* `pull` \\- team members can pull, but not push to or administer newly-added repositories.  \n\\* `push` \\- team members can pull and push, but not administer newly-added repositories.  \n\\* `admin` \\- team members can pull, push and administer newly-added repositories.",
      "default": "pull",
      "required": false,
      "enum": [
        "pull",
        "push",
        "admin"
      ]
    },
    {
      "name": "parent_team_id",
      "type": "integer",
      "description": "The ID of a team to set as the parent team. **Note**: You must pass the `hellcat-preview` media type to use this parameter.",
      "required": false
    }
  ],
  "description": "To create a team, the authenticated user must be a member of `:org`.",
  "documentationUrl": "https://developer.github.com/v3/teams/#create-team"
}

If you’d like to work on it, just comment below and follow instructions in CONTRIBUTING.md

move to octokit org

  • change owner to @octokit, rename repository to just routes
  • setup Travis / semantic-release
  • change npm name to @octokit/routes
  • publish @octokit/routes to latest version of @gr2m/octokit-rest-routes
  • update README, remove warning about non-semver versioning

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this 💪.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


The push permission to the Git repository is required.

semantic-release cannot push the version tag to the branch master on remote Git repository.

Please refer to the authentication configuration documentation to configure the Git credentials on your CI environment.


Good luck with your project ✨

Your semantic-release bot 📦🚀

Could we Include Return Types?

The documentation does not specify the JSON that is returned when an API call is made but it would be nice if they were somehow described in the routes.json so that they can be specified in the TypeScript files.

Some possibilities:

Conflict between url variable & parameter name

Current specification

{
"name": "Update a label",
"enabledForApps": true,
"method": "PATCH",
"path": "/repos/:owner/:repo/labels/:name",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
},
{
"name": "name",
"type": "string",
"required": true,
"description": ""
},
{
"name": "name",
"type": "string",
"description": "The name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://a248.e.akamai.net/assets.github.com/images/icons/emoji/unicode/1f353.png \":strawberry:\"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/).",
"required": false
},
{
"name": "color",
"type": "string",
"description": "The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`.",
"required": false
},
{
"name": "description",
"type": "string",
"description": "A short description of the label.",
"required": false
}
],
"description": "",
"documentationUrl": "https://developer.github.com/v3/issues/labels/#update-a-label"
}

I expected

The url parameter should be renamed to something such as `:oldname`
{
  "name": "Update a label",
  "enabledForApps": true,
  "method": "PATCH",
  "path": "/repos/:owner/:repo/labels/:oldname",
  "params": [
    {
      "name": "owner",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "repo",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "oldname",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "name",
      "type": "string",
      "description": "The name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://a248.e.akamai.net/assets.github.com/images/icons/emoji/unicode/1f353.png \":strawberry:\"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/).",
      "required": false
    },
    {
      "name": "color",
      "type": "string",
      "description": "The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`.",
      "required": false
    },
    {
      "name": "description",
      "type": "string",
      "description": "A short description of the label.",
      "required": false
    }
  ],
  "description": "",
  "documentationUrl": "https://developer.github.com/v3/issues/labels/#update-a-label"
}

Create a Pull Request Review: "comments" parameter type should be "object[]"

Current specification

{
"name": "Create a pull request review",
"enabledForApps": true,
"method": "POST",
"path": "/repos/:owner/:repo/pulls/:number/reviews",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
},
{
"name": "number",
"type": "number",
"required": true,
"description": ""
},
{
"name": "commit_id",
"type": "string",
"description": "The SHA of the commit that needs a review. Not using the latest commit SHA may render your review comment outdated if a subsequent commit modifies the line you specify as the `position`. Defaults to the most recent commit in the pull request when you do not specify a value.",
"required": false
},
{
"name": "body",
"type": "string",
"description": "**Required** when using `REQUEST_CHANGES` or `COMMENT` for the `event` parameter. The body text of the pull request review.",
"required": false
},
{
"name": "event",
"type": "string",
"description": "The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. By leaving this blank, you set the review action state to `PENDING`, which means you will need to [submit the pull request review](/v3/pulls/reviews/#submit-a-pull-request-review) when you are ready.",
"required": false
},
{
"name": "comments",
"type": "array of draft review comment objects",
"description": "Use the following table to specify the location, destination, and contents of the draft review comment.",
"required": false
},
{
"name": "comments.path",
"type": "string",
"description": "**Required.** The relative path to the file that necessitates a review comment.",
"required": false
},
{
"name": "comments.position",
"type": "integer",
"description": "**Required.** The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note below.",
"required": false
},
{
"name": "comments.body",
"type": "string",
"description": "**Required.** Text of the review comment.",
"required": false
}
],
"description": "**Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API v3 offers the `application/vnd.github.v3.diff` [media type](/v3/media/#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](/v3/pulls/#get-a-single-pull-request) endpoint.\n\nThe `position` value equals the number of lines down from the first \"@@\" hunk header in the file you want to add a comment. The line just below the \"@@\" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.",
"documentationUrl": "https://developer.github.com/v3/pulls/reviews/#create-a-pull-request-review"
}

I expected

object[]
{
  "name": "Create a pull request review",
  "enabledForApps": true,
  "method": "POST",
  "path": "/repos/:owner/:repo/pulls/:number/reviews",
  "params": [
    {
      "name": "owner",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "repo",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "number",
      "type": "number",
      "required": true,
      "description": ""
    },
    {
      "name": "commit_id",
      "type": "string",
      "description": "The SHA of the commit that needs a review. Not using the latest commit SHA may render your review comment outdated if a subsequent commit modifies the line you specify as the `position`. Defaults to the most recent commit in the pull request when you do not specify a value.",
      "required": false
    },
    {
      "name": "body",
      "type": "string",
      "description": "**Required** when using `REQUEST_CHANGES` or `COMMENT` for the `event` parameter. The body text of the pull request review.",
      "required": false
    },
    {
      "name": "event",
      "type": "string",
      "description": "The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. By leaving this blank, you set the review action state to `PENDING`, which means you will need to [submit the pull request review](/v3/pulls/reviews/#submit-a-pull-request-review) when you are ready.",
      "required": false
    },
    {
      "name": "comments",
      "type": "object[]",
      "description": "Use the following table to specify the location, destination, and contents of the draft review comment.",
      "required": false
    },
    {
      "name": "comments.path",
      "type": "string",
      "description": "**Required.** The relative path to the file that necessitates a review comment.",
      "required": false
    },
    {
      "name": "comments.position",
      "type": "integer",
      "description": "**Required.** The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note below.",
      "required": false
    },
    {
      "name": "comments.body",
      "type": "string",
      "description": "**Required.** Text of the review comment.",
      "required": false
    }
  ],
  "description": "**Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API v3 offers the `application/vnd.github.v3.diff` [media type](/v3/media/#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](/v3/pulls/#get-a-single-pull-request) endpoint.\n\nThe `position` value equals the number of lines down from the first \"@@\" hunk header in the file you want to add a comment. The line just below the \"@@\" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.",
  "documentationUrl": "https://developer.github.com/v3/pulls/reviews/#create-a-pull-request-review"
}

Has failing test at #69, help wanted

List pull requests: parameter type "enum" should be "string"

Current specification

{
"name": "List pull requests",
"enabledForApps": true,
"method": "GET",
"path": "/repos/:owner/:repo/pulls",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
},
{
"name": "state",
"type": "enum",
"options": [
"open",
"closed",
"all"
],
"description": "Either `open`, `closed`, or `all` to filter by state.",
"default": "open",
"required": false
},
{
"name": "head",
"type": "string",
"description": "Filter pulls by head user and branch name in the format of `user:ref-name`. Example: `github:new-script-format`.",
"required": false
},
{
"name": "base",
"type": "string",
"description": "Filter pulls by base branch name. Example: `gh-pages`.",
"required": false
},
{
"name": "sort",
"type": "string",
"description": "What to sort results by. Can be either `created`, `updated`, `popularity` (comment count) or `long-running` (age, filtering by pulls updated in the last month).",
"default": "created",
"required": false
},
{
"name": "direction",
"type": "string",
"description": "The direction of the sort. Can be either `asc` or `desc`.",
"default": "`desc` when sort is `created` or sort is not specified, otherwise `asc`",
"required": false
},
{
"name": "per_page",
"type": "number",
"required": false,
"description": "Results per page (max 100)",
"default": 30
},
{
"name": "page",
"type": "number",
"required": false,
"description": "Page number of the results to fetch.",
"default": 1
}
],
"description": "",
"documentationUrl": "https://developer.github.com/v3/pulls/#list-pull-requests"
}

I expected

"enum" should be "string"
{
  "name": "List pull requests",
  "enabledForApps": true,
  "method": "GET",
  "path": "/repos/:owner/:repo/pulls",
  "params": [
    {
      "name": "owner",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "repo",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "state",
      "type": "string",
      "enum": [
        "open",
        "closed",
        "all"
      ],
      "description": "Either `open`, `closed`, or `all` to filter by state.",
      "default": "open",
      "required": false
    },
    {
      "name": "head",
      "type": "string",
      "description": "Filter pulls by head user and branch name in the format of `user:ref-name`. Example: `github:new-script-format`.",
      "required": false
    },
    {
      "name": "base",
      "type": "string",
      "description": "Filter pulls by base branch name. Example: `gh-pages`.",
      "required": false
    },
    {
      "name": "sort",
      "type": "string",
      "description": "What to sort results by. Can be either `created`, `updated`, `popularity` (comment count) or `long-running` (age, filtering by pulls updated in the last month).",
      "default": "created",
      "required": false
    },
    {
      "name": "direction",
      "type": "string",
      "description": "The direction of the sort. Can be either `asc` or `desc`.",
      "default": "`desc` when sort is `created` or sort is not specified, otherwise `asc`",
      "required": false
    },
    {
      "name": "per_page",
      "type": "number",
      "required": false,
      "description": "Results per page (max 100)",
      "default": 30
    },
    {
      "name": "page",
      "type": "number",
      "required": false,
      "description": "Page number of the results to fetch.",
      "default": 1
    }
  ],
  "description": "",
  "documentationUrl": "https://developer.github.com/v3/pulls/#list-pull-requests"
}

has failing test at #73

Pagination parameters

Example

Current specification

{
"name": "List all labels for this repository",
"enabledForApps": true,
"method": "GET",
"path": "/repos/:owner/:repo/labels",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
}
],
"description": "",
"documentationUrl": "https://developer.github.com/v3/issues/labels/#list-all-labels-for-this-repository"
}

I expected

per_page and page to be listed in params
{
  "name": "List all labels for this repository",
  "enabledForApps": true,
  "method": "GET",
  "path": "/repos/:owner/:repo/labels",
  "params": [
    {
      "name": "owner",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "repo",
      "type": "string",
      "required": true,
      "description": ""
    }
  ],
  "description": "",
  "documentationUrl": "https://developer.github.com/v3/issues/labels/#list-all-labels-for-this-repository"
}

Migration - Start an import: parameter type "url" should be "string"

Current specification

{
"name": "Start an import",
"enabledForApps": true,
"method": "PUT",
"path": "/repos/:owner/:repo/import",
"params": [
{
"name": "owner",
"type": "string",
"required": true,
"description": ""
},
{
"name": "repo",
"type": "string",
"required": true,
"description": ""
},
{
"name": "vcs_url",
"type": "url",
"description": "**Required** The URL of the originating repository.",
"required": false
},
{
"name": "vcs",
"type": "enum",
"options": [
"subversion",
"git",
"mercurial",
"tfvc"
],
"description": "The originating VCS type. Can be one of `subversion`, `git`, `mercurial`, or `tfvc`. Please be aware that without this parameter, the import job will take additional time to detect the VCS type before beginning the import. This detection step will be reflected in the response.",
"required": false
},
{
"name": "vcs_username",
"type": "string",
"description": "If authentication is required, the username to provide to `vcs_url`.",
"required": false
},
{
"name": "vcs_password",
"type": "string",
"description": "If authentication is required, the password to provide to `vcs_url`.",
"required": false
},
{
"name": "tfvc_project",
"type": "string",
"description": "For a tfvc import, the name of the project that is being imported.",
"required": false
}
],
"description": "Start a source import to a GitHub repository using GitHub Importer.",
"documentationUrl": "https://developer.github.com/v3/migration/source_imports/#start-an-import"
}

I expected

"url" should be "string"
{
  "name": "Start an import",
  "enabledForApps": true,
  "method": "PUT",
  "path": "/repos/:owner/:repo/import",
  "params": [
    {
      "name": "owner",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "repo",
      "type": "string",
      "required": true,
      "description": ""
    },
    {
      "name": "vcs_url",
      "type": "string",
      "description": "**Required** The URL of the originating repository.",
      "required": false
    },
    {
      "name": "vcs",
      "type": "enum",
      "options": [
        "subversion",
        "git",
        "mercurial",
        "tfvc"
      ],
      "description": "The originating VCS type. Can be one of `subversion`, `git`, `mercurial`, or `tfvc`. Please be aware that without this parameter, the import job will take additional time to detect the VCS type before beginning the import. This detection step will be reflected in the response.",
      "required": false
    },
    {
      "name": "vcs_username",
      "type": "string",
      "description": "If authentication is required, the username to provide to `vcs_url`.",
      "required": false
    },
    {
      "name": "vcs_password",
      "type": "string",
      "description": "If authentication is required, the password to provide to `vcs_url`.",
      "required": false
    },
    {
      "name": "tfvc_project",
      "type": "string",
      "description": "For a tfvc import, the name of the project that is being imported.",
      "required": false
    }
  ],
  "description": "Start a source import to a GitHub repository using GitHub Importer.",
  "documentationUrl": "https://developer.github.com/v3/migration/source_imports/#start-an-import"
}

has failing test at #76

Unify type values

Across all endpoints, these are the values for the parameter "type" property

  • "array of draft review comment objects" (#58)
  • "array of integers" (#59)
  • "array of objects" (#60)
  • "array of strings" (#61)
  • "array" (#66)
  • "boolean"
  • "enum" (#62)
  • "integer or string" (#63)
  • "integer" (#64)
  • "number"
  • "object"
  • "string"
  • "type" (reported to GitHub, they’ll fix it) fixed via #81
  • "url" (#65)

I think we can reduce these to

  • "boolean"
  • "number"
  • "object"
  • "string"
  • "number[]"
  • "object[]"
  • "string[]"

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this 💪.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


The push permission to the Git repository is required.

semantic-release cannot push the version tag to the branch master on remote Git repository.

Please refer to the authentication configuration documentation to configure the Git credentials on your CI environment.


Good luck with your project ✨

Your semantic-release bot 📦🚀

Multiple endpoints with same route

✅ GET /repos/:owner/:repo/issues/events

[
  {
    "name": "List issue events for a repository",
    "enabledForApps": false,
    "method": "GET",
    "path": "/repos/:owner/:repo/issues/events",
    "params": [],
    "description": "Repository issue events have a different format than other events, as documented in the [Issue Events API](/v3/issues/events/).",
    "documentationUrl": "https://developer.github.com/v3/activity/events/#list-issue-events-for-a-repository"
  },
  {
    "name": "List events for a repository",
    "enabledForApps": true,
    "method": "GET",
    "path": "/repos/:owner/:repo/issues/events",
    "params": [],
    "description": "",
    "documentationUrl": "https://developer.github.com/v3/issues/events/#list-events-for-a-repository"
  }
]

✅ GET /repos/:owner/:repo

[
  {
    "name": "Get a repository's code of conduct",
    "enabledForApps": true,
    "method": "GET",
    "path": "/repos/:owner/:repo",
    "params": [],
    "description": "When passed the preview media type, requests to get a repository will also return the repository's code of conduct if it can be detected from the repository's code of conduct file.",
    "documentationUrl": "https://developer.github.com/v3/codes_of_conduct/#get-a-repositorys-code-of-conduct"
  },
  {
    "name": "Get",
    "enabledForApps": true,
    "method": "GET",
    "path": "/repos/:owner/:repo",
    "params": [],
    "description": "The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network.",
    "documentationUrl": "https://developer.github.com/v3/repos/#get"
  }
]

✅ GET /repos/:owner/:repo/git/tags/:sha

[
  {
    "name": "Get a Tag",
    "enabledForApps": true,
    "method": "GET",
    "path": "/repos/:owner/:repo/git/tags/:sha",
    "params": [],
    "description": "",
    "documentationUrl": "https://developer.github.com/v3/git/tags/#get-a-tag"
  },
  {
    "name": "Tag signature verification",
    "enabledForApps": false,
    "method": "GET",
    "path": "/repos/:owner/:repo/git/tags/:sha",
    "params": [
      {
        "name": "verified",
        "type": "boolean",
        "description": "Does GitHub consider the signature in this tag to be verified?",
        "required": false
      },
      {
        "name": "reason",
        "type": "string",
        "description": "The reason for `verified` value. Possible values and their meanings are enumerated in the table below.",
        "required": false
      },
      {
        "name": "signature",
        "type": "string",
        "description": "The signature that was extracted from the tag.",
        "required": false
      },
      {
        "name": "payload",
        "type": "string",
        "description": "The value that was signed.",
        "required": false
      }
    ],
    "description": "**The verification object**\n\n**The reason field**\n\nThe following are possible `reason`s that may be included in the `verification` object:\n\n| Value                   | Description                                                                                                                 |\n| ----------------------- | --------------------------------------------------------------------------------------------------------------------------- |\n| `expired_key`           | The key that made the signature is expired.                                                                                 |\n| `not_signing_key`       | The \"signing\" flag is not among the usage flags in the GPG key that made the signature.                                     |\n| `gpgverify_error`       | There was an error communicating with the signature-verification service.                                                   |\n| `gpgverify_unavailable` | The signature-verification service is currently unavailable.                                                                |\n| `unsigned`              | The object does not include a signature.                                                                                    |\n| `unkown_signature_type` | A non-PGP signature was found in the tag.                                                                                   |\n| `no_user`               | No user was associated with the `tagger` email address in the tag.                                                          |\n| `unverified_email`      | The `tagger` email address in the tag was associated with a user, but the email address is not verified on her/his account. |\n| `bad_email`             | The `tagger` email address in the tag is not included in the identities of the PGP key that made the signature.             |\n| `unknown_key`           | The key that made the signature has not been registered with any user's account.                                            |\n| `malformed_signature`   | There was an error parsing the signature.                                                                                   |\n| `invalid`               | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                |\n| `valid`                 | None of the above errors applied, so the signature is considered to be verified.                                            |",
    "documentationUrl": "https://developer.github.com/v3/git/tags/#tag-signature-verification"
  }
]

✅ GET /repos/:owner/:repo/git/commits/:sha

[
  {
    "name": "Get a Commit",
    "enabledForApps": true,
    "method": "GET",
    "path": "/repos/:owner/:repo/git/commits/:sha",
    "params": [],
    "description": "",
    "documentationUrl": "https://developer.github.com/v3/git/commits/#get-a-commit"
  },
  {
    "name": "Commit signature verification",
    "enabledForApps": false,
    "method": "GET",
    "path": "/repos/:owner/:repo/git/commits/:sha",
    "params": [
      {
        "name": "verified",
        "type": "boolean",
        "description": "Does GitHub consider the signature in this commit to be verified?",
        "required": false
      },
      {
        "name": "reason",
        "type": "string",
        "description": "The reason for `verified` value. Possible values and their meanings are enumerated in the table below.",
        "required": false
      },
      {
        "name": "signature",
        "type": "string",
        "description": "The signature that was extracted from the commit.",
        "required": false
      },
      {
        "name": "payload",
        "type": "string",
        "description": "The value that was signed.",
        "required": false
      }
    ],
    "description": "**The verification object**\n\n**The reason field**\n\nThe following are possible `reason`s that may be included in the `verification` object:\n\n| Value                    | Description                                                                                                                       |\n| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |\n| `expired_key`            | The key that made the signature is expired.                                                                                       |\n| `not_signing_key`        | The \"signing\" flag is not among the usage flags in the GPG key that made the signature.                                           |\n| `gpgverify_error`        | There was an error communicating with the signature-verification service.                                                         |\n| `gpgverify_unavailable`  | The signature-verification service is currently unavailable.                                                                      |\n| `unsigned`               | The object does not include a signature.                                                                                          |\n| `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |\n| `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |\n| `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |\n| `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |\n| `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |\n| `malformed_signature`    | There was an error parsing the signature.                                                                                         |\n| `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |\n| `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |",
    "documentationUrl": "https://developer.github.com/v3/git/commits/#commit-signature-verification"
  }
]

✅ POST /repos/:owner/:repo/pulls/:number/comments

[
  {
    "name": "Create a comment",
    "enabledForApps": true,
    "method": "POST",
    "path": "/repos/:owner/:repo/pulls/:number/comments",
    "params": [
      {
        "name": "body",
        "type": "string",
        "description": "The text of the comment.",
        "required": true
      },
      {
        "name": "commit_id",
        "type": "string",
        "description": "The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.",
        "required": true
      },
      {
        "name": "path",
        "type": "string",
        "description": "The relative path to the file that necessitates a comment.",
        "required": true
      },
      {
        "name": "position",
        "type": "integer",
        "description": "The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note below.",
        "required": true
      }
    ],
    "description": "**Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API v3 offers the `application/vnd.github.v3.diff` [media type](/v3/media/#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](/v3/pulls/#get-a-single-pull-request) endpoint.\n\nThe `position` value equals the number of lines down from the first \"@@\" hunk header in the file you want to add a comment. The line just below the \"@@\" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.",
    "documentationUrl": "https://developer.github.com/v3/pulls/comments/#create-a-comment"
  },
  {
    "name": "Create a comment (alternative)",
    "enabledForApps": true,
    "method": "POST",
    "path": "/repos/:owner/:repo/pulls/:number/comments",
    "params": [
      {
        "name": "body",
        "type": "string",
        "description": "The text of the comment.",
        "required": true
      },
      {
        "name": "commit_id",
        "type": "string",
        "description": "The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.",
        "required": true
      },
      {
        "name": "path",
        "type": "string",
        "description": "The relative path to the file that necessitates a comment.",
        "required": true
      },
      {
        "name": "position",
        "type": "integer",
        "description": "The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note below.",
        "required": true
      }
    ],
    "description": "**Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API v3 offers the `application/vnd.github.v3.diff` [media type](/v3/media/#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](/v3/pulls/#get-a-single-pull-request) endpoint.\n\nThe `position` value equals the number of lines down from the first \"@@\" hunk header in the file you want to add a comment. The line just below the \"@@\" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.",
    "documentationUrl": "https://developer.github.com/v3/pulls/comments/#create-a-comment"
  }
]

✅ POST /repos/:owner/:repo/pulls

[
  {
    "name": "Create a pull request",
    "enabledForApps": true,
    "method": "POST",
    "path": "/repos/:owner/:repo/pulls",
    "params": [
      {
        "name": "title",
        "type": "string",
        "description": "The title of the pull request.",
        "required": true
      },
      {
        "name": "head",
        "type": "string",
        "description": "The name of the branch where your changes are implemented. For cross-repository pull requests in the same network, namespace `head` with a user like this: `username:branch`.",
        "required": true
      },
      {
        "name": "base",
        "type": "string",
        "description": "The name of the branch you want the changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repository that requests a merge to a base of another repository.",
        "required": true
      },
      {
        "name": "body",
        "type": "string",
        "description": "The contents of the pull request.",
        "required": false
      },
      {
        "name": "maintainer_can_modify",
        "type": "boolean",
        "description": "Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request.",
        "required": false
      }
    ],
    "description": "",
    "documentationUrl": "https://developer.github.com/v3/pulls/#create-a-pull-request"
  },
  {
    "name": "Create a pull request (alternative)",
    "enabledForApps": true,
    "method": "POST",
    "path": "/repos/:owner/:repo/pulls",
    "params": [
      {
        "name": "owner",
        "type": "string",
        "required": true,
        "description": "",
        "location": "url"
      },
      {
        "name": "repo",
        "type": "string",
        "required": true,
        "description": "",
        "location": "url"
      },
      {
        "name": "issue",
        "type": "integer",
        "description": "The issue number in this repository to turn into a Pull Request.",
        "required": true,
        "location": "body"
      },
      {
        "name": "head",
        "type": "string",
        "description": "The name of the branch where your changes are implemented. For cross-repository pull requests in the same network, namespace `head` with a user like this: `username:branch`.",
        "required": true,
        "location": "body"
      },
      {
        "name": "base",
        "type": "string",
        "description": "The name of the branch you want the changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repository that requests a merge to a base of another repository.",
        "required": true,
        "location": "body"
      },
      {
        "name": "maintainer_can_modify",
        "type": "boolean",
        "description": "Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request.",
        "required": false,
        "location": "body"
      }
    ],
    "description": "",
    "documentationUrl": "https://developer.github.com/v3/pulls/#create-a-pull-request"
  }
]

✅ GET /repos/:owner/:repo/commits/:sha

[
  {
    "name": "Get a single commit",
    "enabledForApps": true,
    "method": "GET",
    "path": "/repos/:owner/:repo/commits/:sha",
    "params": [],
    "description": "Diffs with binary data will have no 'patch' property. Pass the appropriate [media type](/v3/media/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.",
    "documentationUrl": "https://developer.github.com/v3/repos/commits/#get-a-single-commit"
  },
  {
    "name": "Commit signature verification",
    "enabledForApps": false,
    "method": "GET",
    "path": "/repos/:owner/:repo/commits/:sha",
    "params": [
      {
        "name": "verified",
        "type": "boolean",
        "description": "Does GitHub consider the signature in this commit to be verified?",
        "required": false
      },
      {
        "name": "reason",
        "type": "string",
        "description": "The reason for `verified` value. Possible values and their meanings are enumerated in the table below.",
        "required": false
      },
      {
        "name": "signature",
        "type": "string",
        "description": "The signature that was extracted from the commit.",
        "required": false
      },
      {
        "name": "payload",
        "type": "string",
        "description": "The value that was signed.",
        "required": false
      }
    ],
    "description": "**The verification object**\n\n**The reason field**\n\nThe following are possible `reason`s that may be included in the `verification` object:\n\n| Value                    | Description                                                                                                                       |\n| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |\n| `expired_key`            | The key that made the signature is expired.                                                                                       |\n| `not_signing_key`        | The \"signing\" flag is not among the usage flags in the GPG key that made the signature.                                           |\n| `gpgverify_error`        | There was an error communicating with the signature-verification service.                                                         |\n| `gpgverify_unavailable`  | The signature-verification service is currently unavailable.                                                                      |\n| `unsigned`               | The object does not include a signature.                                                                                          |\n| `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |\n| `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |\n| `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |\n| `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |\n| `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |\n| `malformed_signature`    | There was an error parsing the signature.                                                                                         |\n| `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |\n| `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |",
    "documentationUrl": "https://developer.github.com/v3/repos/commits/#commit-signature-verification"
  }
]

✅ PUT /repos/:owner/:repo/contents/:path

[
  {
    "name": "Create a file",
    "enabledForApps": true,
    "method": "PUT",
    "path": "/repos/:owner/:repo/contents/:path",
    "params": [
      {
        "name": "path",
        "type": "string",
        "description": "The content path.",
        "required": true
      },
      {
        "name": "message",
        "type": "string",
        "description": "The commit message.",
        "required": true
      },
      {
        "name": "content",
        "type": "string",
        "description": "The new file content, Base64 encoded.",
        "required": true
      },
      {
        "name": "branch",
        "type": "string",
        "description": "The branch name.",
        "default": "the repository’s default branch (usually `master`)",
        "required": false
      },
      {
        "name": "committer",
        "type": "object",
        "description": "object containing information about the committer."
      },
      {
        "name": "author",
        "type": "object",
        "description": "object containing information about the author."
      }
    ],
    "description": "This method creates a new file in a repository\n\nThe `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used.\n\nYou must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code.\n\nBoth the `author` and `committer` parameters have the same keys:\n\n| name  | type   | description                                          |\n| ----- | ------ | ---------------------------------------------------- |\n| name  | string | The name of the author (or committer) of the commit  |\n| email | string | The email of the author (or committer) of the commit |",
    "documentationUrl": "https://developer.github.com/v3/repos/contents/#create-a-file"
  },
  {
    "name": "Update a file",
    "enabledForApps": true,
    "method": "PUT",
    "path": "/repos/:owner/:repo/contents/:path",
    "params": [
      {
        "name": "path",
        "type": "string",
        "description": "The content path.",
        "required": true
      },
      {
        "name": "message",
        "type": "string",
        "description": "The commit message.",
        "required": true
      },
      {
        "name": "content",
        "type": "string",
        "description": "The updated file content, Base64 encoded.",
        "required": true
      },
      {
        "name": "sha",
        "type": "string",
        "description": "The blob SHA of the file being replaced.",
        "required": true
      },
      {
        "name": "branch",
        "type": "string",
        "description": "The branch name.",
        "default": "the repository’s default branch (usually `master`)",
        "required": false
      },
      {
        "name": "committer",
        "type": "object",
        "description": "object containing information about the committer."
      },
      {
        "name": "author",
        "type": "object",
        "description": "object containing information about the author."
      }
    ],
    "description": "This method updates a file in a repository\n\nThe `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used.\n\nYou must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code.\n\nBoth the `author` and `committer` parameters have the same keys:\n\n| name  | type   | description                                          |\n| ----- | ------ | ---------------------------------------------------- |\n| name  | string | The name of the author (or committer) of the commit  |\n| email | string | The email of the author (or committer) of the commit |",
    "documentationUrl": "https://developer.github.com/v3/repos/contents/#update-a-file"
  }
]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.