Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Response types have optional keys #214

Closed
gr2m opened this issue Dec 2, 2020 · 2 comments · Fixed by #216
Closed

Response types have optional keys #214

gr2m opened this issue Dec 2, 2020 · 2 comments · Fixed by #216
Labels
Type: Bug Something isn't working as documented, or is being fixed typescript Relevant to TypeScript users only
Projects

Comments

@gr2m
Copy link
Contributor

gr2m commented Dec 2, 2020

Endpoints["PUT /repos/{owner}/{repo}/contents/{path}"]["response"]["data"]["content"] // can be undefined

This is a problem with the Official OpenAPI specs, see e.g.

Many response types seem to be affected, not all however. E.g. Endpoints["GET /repos/{owner}/{repo}"]["response"]["data"] has the correct types.

Until this problem is resolved on GitHub's side, we could recursively make all response properties non-optional

@gr2m gr2m added the Type: Support Any questions, information, or general needs around the SDK or GitHub APIs label Dec 2, 2020
@ghost ghost added this to Support in JS Dec 2, 2020
@gr2m gr2m added Type: Bug Something isn't working as documented, or is being fixed typescript Relevant to TypeScript users only and removed Type: Support Any questions, information, or general needs around the SDK or GitHub APIs labels Dec 2, 2020
@ghost ghost moved this from Support to Bugs in JS Dec 2, 2020
@gr2m
Copy link
Contributor Author

gr2m commented Dec 2, 2020

Until this problem is resolved on GitHub's side, we could recursively make all response properties non-optional

We could selectively apply the fix to only these routes which currently lack a "required" key in its 200/201 response data types:

  • GET /app/hook/config
  • PATCH /app/hook/config
  • POST /app/installations/{installation_id}/access_tokens
  • GET /emojis
  • GET /enterprises/{enterprise}/actions/permissions
  • GET /enterprises/{enterprise}/actions/permissions/organizations
  • GET /enterprises/{enterprise}/actions/permissions/selected-actions
  • GET /enterprises/{enterprise}/actions/runner-groups
  • POST /enterprises/{enterprise}/actions/runner-groups
  • GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}
  • PATCH /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}
  • GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations
  • GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners
  • GET /enterprises/{enterprise}/actions/runners
  • GET /enterprises/{enterprise}/actions/runners/downloads
  • GET /enterprises/{enterprise}/settings/billing/actions
  • GET /enterprises/{enterprise}/settings/billing/packages
  • GET /enterprises/{enterprise}/settings/billing/shared-storage
  • GET /installation/repositories
  • GET /notifications
  • GET /notifications/threads/{thread_id}
  • GET /orgs/{org}/actions/permissions
  • GET /orgs/{org}/actions/permissions/repositories
  • GET /orgs/{org}/actions/permissions/selected-actions
  • GET /orgs/{org}/actions/runner-groups
  • POST /orgs/{org}/actions/runner-groups
  • GET /orgs/{org}/actions/runner-groups/{runner_group_id}
  • PATCH /orgs/{org}/actions/runner-groups/{runner_group_id}
  • GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories
  • GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners
  • GET /orgs/{org}/actions/runners
  • GET /orgs/{org}/actions/runners/downloads
  • GET /orgs/{org}/actions/secrets
  • GET /orgs/{org}/actions/secrets/{secret_name}/repositories
  • GET /orgs/{org}/hooks/{hook_id}/config
  • PATCH /orgs/{org}/hooks/{hook_id}/config
  • GET /orgs/{org}/installations
  • GET /orgs/{org}/invitations
  • POST /orgs/{org}/invitations
  • GET /orgs/{org}/settings/billing/actions
  • GET /orgs/{org}/settings/billing/packages
  • GET /orgs/{org}/settings/billing/shared-storage
  • GET /orgs/{org}/team-sync/groups
  • GET /orgs/{org}/teams/{team_slug}/invitations
  • GET /orgs/{org}/teams/{team_slug}/projects
  • GET /orgs/{org}/teams/{team_slug}/projects/{project_id}
  • GET /orgs/{org}/teams/{team_slug}/team-sync/group-mappings
  • PATCH /orgs/{org}/teams/{team_slug}/team-sync/group-mappings
  • POST /projects/columns/cards/{card_id}/moves
  • POST /projects/columns/{column_id}/moves
  • GET /repos/{owner}/{repo}/actions/artifacts
  • GET /repos/{owner}/{repo}/actions/permissions
  • GET /repos/{owner}/{repo}/actions/permissions/selected-actions
  • GET /repos/{owner}/{repo}/actions/runners
  • GET /repos/{owner}/{repo}/actions/runners/downloads
  • GET /repos/{owner}/{repo}/actions/runs
  • GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts
  • GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs
  • GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing
  • GET /repos/{owner}/{repo}/actions/secrets
  • GET /repos/{owner}/{repo}/actions/workflows
  • GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs
  • GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing
  • PATCH /repos/{owner}/{repo}/check-suites/preferences
  • GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs
  • GET /repos/{owner}/{repo}/code-scanning/alerts
  • GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}
  • PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}
  • GET /repos/{owner}/{repo}/code-scanning/analyses
  • GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head
  • GET /repos/{owner}/{repo}/commits/{ref}/check-runs
  • GET /repos/{owner}/{repo}/commits/{ref}/check-suites
  • GET /repos/{owner}/{repo}/commits/{ref}/statuses
  • PUT /repos/{owner}/{repo}/contents/{path}
  • DELETE /repos/{owner}/{repo}/contents/{path}
  • POST /repos/{owner}/{repo}/git/blobs
  • POST /repos/{owner}/{repo}/git/commits
  • GET /repos/{owner}/{repo}/git/commits/{commit_sha}
  • GET /repos/{owner}/{repo}/git/matching-refs/{ref}
  • GET /repos/{owner}/{repo}/git/ref/{ref}
  • POST /repos/{owner}/{repo}/git/refs
  • PATCH /repos/{owner}/{repo}/git/refs/{ref}
  • GET /repos/{owner}/{repo}/hooks/{hook_id}/config
  • PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config
  • GET /repos/{owner}/{repo}/issues/{issue_number}/events
  • GET /repos/{owner}/{repo}/issues/{issue_number}/timeline
  • GET /repos/{owner}/{repo}/keys
  • POST /repos/{owner}/{repo}/keys
  • GET /repos/{owner}/{repo}/keys/{key_id}
  • GET /repos/{owner}/{repo}/languages
  • GET /repos/{owner}/{repo}/notifications
  • GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers
  • GET /repos/{owner}/{repo}/stats/participation
  • POST /repos/{owner}/{repo}/statuses/{sha}
  • GET /repos/{owner}/{repo}/topics
  • PUT /repos/{owner}/{repo}/topics
  • GET /scim/v2/enterprises/{enterprise}/Groups
  • POST /scim/v2/enterprises/{enterprise}/Groups
  • GET /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}
  • PUT /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}
  • PATCH /scim/v2/enterprises/{enterprise}/Groups/{scim_group_id}
  • GET /scim/v2/enterprises/{enterprise}/Users
  • POST /scim/v2/enterprises/{enterprise}/Users
  • GET /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}
  • PUT /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}
  • PATCH /scim/v2/enterprises/{enterprise}/Users/{scim_user_id}
  • GET /search/code
  • GET /search/commits
  • GET /search/issues
  • GET /search/labels
  • GET /search/repositories
  • GET /search/topics
  • GET /search/users
  • GET /teams/{team_id}/invitations
  • GET /teams/{team_id}/projects
  • GET /teams/{team_id}/projects/{project_id}
  • GET /teams/{team_id}/team-sync/group-mappings
  • PATCH /teams/{team_id}/team-sync/group-mappings
  • GET /user/installations
  • GET /user/installations/{installation_id}/repositories
  • GET /user/keys
  • POST /user/keys
  • GET /user/keys/{key_id}
  • GET /users/{username}/settings/billing/actions
  • GET /users/{username}/settings/billing/packages
  • GET /users/{username}/settings/billing/shared-storage

See also: github/rest-api-description#109

gr2m added a commit that referenced this issue Dec 2, 2020
@gr2m gr2m closed this as completed in #216 Dec 2, 2020
JS automation moved this from Bugs to Done Dec 2, 2020
@octokitbot
Copy link
Collaborator

🎉 This issue has been resolved in version 6.0.3 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Bug Something isn't working as documented, or is being fixed typescript Relevant to TypeScript users only
Projects
No open projects
JS
  
Done
Development

Successfully merging a pull request may close this issue.

2 participants