feat: Add enterprise Visual Studio subscription licensing APIs - #4483
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
61319d2 to
782156e
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #4483 +/- ##
=======================================
Coverage 98.53% 98.53%
=======================================
Files 195 195
Lines 17691 17735 +44
=======================================
+ Hits 17431 17475 +44
Misses 260 260 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
gmlewis
left a comment
There was a problem hiding this comment.
Thank you, @hariom-hp!
LGTM.
Awaiting second LGTM+Approval from any other contributor to this repo before merging.
| Email *string `json:"email,omitempty"` | ||
| SubscriptionID *string `json:"subscriptionId,omitempty"` | ||
| Username *string `json:"username,omitempty"` | ||
| ManualMatch *bool `json:"manual_match,omitempty"` |
There was a problem hiding this comment.
Looks like this doesn't match the schema in docs: email vs visual_studio_subscription_email, subscriptionId vs subscription_id
{
"type": "object",
"required": [
"total_count",
"visual_studio_subscriptions"
],
"properties": {
"total_count": {
"type": "integer"
},
"visual_studio_subscriptions": {
"type": "array",
"items": {
"title": "Visual Studio Subscription Assignment",
"description": "Visual Studio Subscription Assignment",
"type": "object",
"properties": {
"visual_studio_subscription_email": {
"type": "string",
"description": "The email associated with the Visual Studio subscription assignment in the visual studio portal."
},
"subscription_id": {
"type": "string",
"description": "The ID of the Visual Studio Subscription. This is a GUID that comes from the Visual Studio management portal."
},
"username": {
"type": [
"string",
"null"
],
"description": "The GitHub username of the user associated with the Visual Studio subscription assignment."
},
"manual_match": {
"type": "boolean",
"description": "Indicates if the Visual Studio subscription assignment was manually matched to a user."
}
}
}
}
}
}
| // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/licensing?apiVersion=2022-11-28#add-or-update-a-visual-studio-subscription-user-match | ||
| // | ||
| //meta:operation PUT /enterprises/{enterprise}/visual-studio-subscriptions/{visual_studio_subscription_id} | ||
| func (s *EnterpriseService) AddOrUpdateVisualStudioSubscriptionUserMatch(ctx context.Context, enterprise, subscriptionID string, body VisualStudioSubscriptionUserMatchRequest) (*VisualStudioSubscriptionAssignment, *Response, error) { |
There was a problem hiding this comment.
| func (s *EnterpriseService) AddOrUpdateVisualStudioSubscriptionUserMatch(ctx context.Context, enterprise, subscriptionID string, body VisualStudioSubscriptionUserMatchRequest) (*VisualStudioSubscriptionAssignment, *Response, error) { | |
| func (s *EnterpriseService) AddOrUpdateVisualStudioSubscriptionAssignment(ctx context.Context, enterprise, subscriptionID string, body VisualStudioSubscriptionAssignmentRequest) (*VisualStudioSubscriptionAssignment, *Response, error) { |
| // GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/enterprise-admin/licensing?apiVersion=2022-11-28#delete-a-visual-studio-subscription-user-match | ||
| // | ||
| //meta:operation DELETE /enterprises/{enterprise}/visual-studio-subscriptions/{visual_studio_subscription_id} | ||
| func (s *EnterpriseService) DeleteVisualStudioSubscriptionUserMatch(ctx context.Context, enterprise, subscriptionID string) (*Response, error) { |
There was a problem hiding this comment.
| func (s *EnterpriseService) DeleteVisualStudioSubscriptionUserMatch(ctx context.Context, enterprise, subscriptionID string) (*Response, error) { | |
| func (s *EnterpriseService) DeleteVisualStudioSubscriptionAssignment(ctx context.Context, enterprise, subscriptionID string) (*Response, error) { |
|
|
||
| // VisualStudioSubscriptionUserMatchRequest represents the request body to add or update a user match. | ||
| type VisualStudioSubscriptionUserMatchRequest struct { | ||
| UserIdentifier string `json:"user_identifier"` |
There was a problem hiding this comment.
| UserIdentifier string `json:"user_identifier"` | |
| UserIdentifier *string `json:"user_identifier,omitempty"` |
|
Thank you for the review, @alexandear I have addressed all the feedback in the latest commit:
|
|
Thank you, @alexandear - I really appreciate you catching all the field naming errors! |
Summary
Adds typed
EnterpriseServicesupport for GitHub Enterprise Cloud's Visual Studio Subscriptions (VSS) licensing endpoints:ListVisualStudioSubscriptions:GET /enterprises/{enterprise}/visual-studio-subscriptionsAddOrUpdateVisualStudioSubscriptionAssignment:PUT /enterprises/{enterprise}/visual-studio-subscriptions/{visual_studio_subscription_id}DeleteVisualStudioSubscriptionAssignment:DELETE /enterprises/{enterprise}/visual-studio-subscriptions/{visual_studio_subscription_id}Changes
VisualStudioSubscriptions,VisualStudioSubscriptionAssignment,VisualStudioSubscriptionAssignmentRequest, andListVisualStudioSubscriptionsOptions.EnterpriseServicewith OpenAPI//meta:operationdirectives and API documentation links.enterprise_licenses_test.gocovering success cases, request body payloads, HTTP 204 responses, bad options, and mock server failures (100% statement coverage).github-accessors.goand iterators ingithub-iterators.go.Validation
script/fmt.shscript/generate.sh --checkscript/lint.sh(0 issues across all 12 modules)script/test.sh -race -covermode atomic ./...(0 failures across all 12 modules)go test -v -tags=integration -run=^$ ./test/integrationgit diff --check