Channel: Each Channel is owned by a Platform and owns a collection of versions. Possible Channels are listed in the Channel enum below. Not all Channels are available for every Platform (e.g. CANARY does not exist for LINUX).
type Channel struct { // ChannelType: Type of channel. // // Possible values: // "CHANNEL_TYPE_UNSPECIFIED" // "STABLE" - The Stable channel. // "BETA" - The Beta channel. // "DEV" - The Dev channel. // "CANARY" - The Canary channel. // "CANARY_ASAN" - The Canary channel for Chrome, with DCHECK/ASAN enabled. // "ALL" // "EXTENDED" - The Extended Stable channel for Chrome. // "LTS" - The Long-term support channel for ChromeOS. // "LTC" - The Long-term support candidate channel for ChromeOS. ChannelType string `json:"channelType,omitempty"` // Name: Channel name. Format is // "{product}/platforms/{platform}/channels/{channel}" Name string `json:"name,omitempty"` // ForceSendFields is a list of field names (e.g. "ChannelType") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "ChannelType") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` }
func (s *Channel) MarshalJSON() ([]byte, error)
Interval: Represents a time interval, encoded as a Timestamp start (inclusive) and a Timestamp end (exclusive). The start must be less than or equal to the end. When the start equals the end, the interval is empty (matches no time). When both start and end are unspecified, the interval matches any time.
type Interval struct { // EndTime: Optional. Exclusive end of the interval. If specified, a Timestamp // matching this interval will have to be before the end. EndTime string `json:"endTime,omitempty"` // StartTime: Optional. Inclusive start of the interval. If specified, a // Timestamp matching this interval will have to be the same or after the // start. StartTime string `json:"startTime,omitempty"` // ForceSendFields is a list of field names (e.g. "EndTime") to unconditionally // include in API requests. By default, fields with empty or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "EndTime") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` }
func (s *Interval) MarshalJSON() ([]byte, error)
ListChannelsResponse: Response message for ListChannels.
type ListChannelsResponse struct { // Channels: The list of channels. Channels []*Channel `json:"channels,omitempty"` // NextPageToken: A token, which can be sent as `page_token` to retrieve the // next page. If this field is omitted, there are no subsequent pages. NextPageToken string `json:"nextPageToken,omitempty"` // ServerResponse contains the HTTP response code and headers from the server. googleapi.ServerResponse `json:"-"` // ForceSendFields is a list of field names (e.g. "Channels") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Channels") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` }
func (s *ListChannelsResponse) MarshalJSON() ([]byte, error)
ListPlatformsResponse: Response message for ListPlatforms.
type ListPlatformsResponse struct { // NextPageToken: A token, which can be sent as `page_token` to retrieve the // next page. If this field is omitted, there are no subsequent pages. NextPageToken string `json:"nextPageToken,omitempty"` // Platforms: The list of platforms. Platforms []*Platform `json:"platforms,omitempty"` // ServerResponse contains the HTTP response code and headers from the server. googleapi.ServerResponse `json:"-"` // ForceSendFields is a list of field names (e.g. "NextPageToken") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "NextPageToken") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` }
func (s *ListPlatformsResponse) MarshalJSON() ([]byte, error)
ListReleasesResponse: Response message for ListReleases.
type ListReleasesResponse struct { // NextPageToken: A token, which can be sent as `page_token` to retrieve the // next page. If this field is omitted, there are no subsequent pages. NextPageToken string `json:"nextPageToken,omitempty"` // Releases: The list of releases. Releases []*Release `json:"releases,omitempty"` // ServerResponse contains the HTTP response code and headers from the server. googleapi.ServerResponse `json:"-"` // ForceSendFields is a list of field names (e.g. "NextPageToken") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "NextPageToken") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` }
func (s *ListReleasesResponse) MarshalJSON() ([]byte, error)
ListVersionsResponse: Response message for ListVersions.
type ListVersionsResponse struct { // NextPageToken: A token, which can be sent as `page_token` to retrieve the // next page. If this field is omitted, there are no subsequent pages. NextPageToken string `json:"nextPageToken,omitempty"` // Versions: The list of versions. Versions []*Version `json:"versions,omitempty"` // ServerResponse contains the HTTP response code and headers from the server. googleapi.ServerResponse `json:"-"` // ForceSendFields is a list of field names (e.g. "NextPageToken") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "NextPageToken") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` }
func (s *ListVersionsResponse) MarshalJSON() ([]byte, error)
Platform: Each Platform is owned by a Product and owns a collection of channels. Available platforms are listed in Platform enum below. Not all Channels are available for every Platform (e.g. CANARY does not exist for LINUX).
type Platform struct { // Name: Platform name. Format is "{product}/platforms/{platform}" Name string `json:"name,omitempty"` // PlatformType: Type of platform. // // Possible values: // "PLATFORM_TYPE_UNSPECIFIED" // "WIN" - Chrome Desktop for Windows (32-bit). // "WIN64" - Chrome Desktop for Windows (x86_64). // "MAC" - Chrome Desktop for macOS (x86_64). // "LINUX" - Chrome Desktop for Linux. // "ANDROID" - Chrome for Android. // "WEBVIEW" - WebView for Android. // "IOS" - Chrome for iOS. // "ALL" // "MAC_ARM64" - Chrome for macOS (ARM64). // "LACROS" - ChromeOS Lacros (x86_64). // "LACROS_ARM32" - ChromeOS Lacros (ARM). // "CHROMEOS" - ChromeOS. // "LACROS_ARM64" - ChromeOS Lacros (ARM64). // "FUCHSIA" - Chrome for Fuchsia. // "WIN_ARM64" - Chrome Desktop for Windows (ARM64). PlatformType string `json:"platformType,omitempty"` // ForceSendFields is a list of field names (e.g. "Name") to unconditionally // include in API requests. By default, fields with empty or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Name") to include in API requests // with the JSON null value. By default, fields with empty values are omitted // from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` }
func (s *Platform) MarshalJSON() ([]byte, error)
type PlatformsChannelsListCall struct {
// contains filtered or unexported fields
}
func (c *PlatformsChannelsListCall) Context(ctx context.Context) *PlatformsChannelsListCall
Context sets the context to be used in this call's Do method.
func (c *PlatformsChannelsListCall) Do(opts ...googleapi.CallOption) (*ListChannelsResponse, error)
Do executes the "versionhistory.platforms.channels.list" call. Any non-2xx status code is an error. Response headers are in either *ListChannelsResponse.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.
func (c *PlatformsChannelsListCall) Fields(s ...googleapi.Field) *PlatformsChannelsListCall
Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more details.
func (c *PlatformsChannelsListCall) Header() http.Header
Header returns a http.Header that can be modified by the caller to add headers to the request.
func (c *PlatformsChannelsListCall) IfNoneMatch(entityTag string) *PlatformsChannelsListCall
IfNoneMatch sets an optional parameter which makes the operation fail if the object's ETag matches the given value. This is useful for getting updates only after the object has changed since the last request.
func (c *PlatformsChannelsListCall) PageSize(pageSize int64) *PlatformsChannelsListCall
PageSize sets the optional parameter "pageSize": Optional limit on the number of channels to include in the response. If unspecified, the server will pick an appropriate default.
func (c *PlatformsChannelsListCall) PageToken(pageToken string) *PlatformsChannelsListCall
PageToken sets the optional parameter "pageToken": A page token, received from a previous `ListChannels` call. Provide this to retrieve the subsequent page.
func (c *PlatformsChannelsListCall) Pages(ctx context.Context, f func(*ListChannelsResponse) error) error
Pages invokes f for each page of results. A non-nil error returned from f will halt the iteration. The provided context supersedes any context provided to the Context method.
type PlatformsChannelsService struct { Versions *PlatformsChannelsVersionsService // contains filtered or unexported fields }
func NewPlatformsChannelsService(s *Service) *PlatformsChannelsService
func (r *PlatformsChannelsService) List(parent string) *PlatformsChannelsListCall
List: Returns list of channels that are available for a given platform.
type PlatformsChannelsVersionsListCall struct {
// contains filtered or unexported fields
}
func (c *PlatformsChannelsVersionsListCall) Context(ctx context.Context) *PlatformsChannelsVersionsListCall
Context sets the context to be used in this call's Do method.
func (c *PlatformsChannelsVersionsListCall) Do(opts ...googleapi.CallOption) (*ListVersionsResponse, error)
Do executes the "versionhistory.platforms.channels.versions.list" call. Any non-2xx status code is an error. Response headers are in either *ListVersionsResponse.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.
func (c *PlatformsChannelsVersionsListCall) Fields(s ...googleapi.Field) *PlatformsChannelsVersionsListCall
Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more details.
func (c *PlatformsChannelsVersionsListCall) Filter(filter string) *PlatformsChannelsVersionsListCall
Filter sets the optional parameter "filter": Filter string. Format is a comma separated list of All comma separated filter clauses are conjoined with a logical "and". Valid field_names are "version", "name", "platform", and "channel". Valid operators are "<", "<=", "=", ">=", and ">". Channel comparison is done by distance from stable. Ex) stable < beta, beta < dev, canary < canary_asan. Version comparison is done numerically. If version is not entirely written, the version will be appended with 0 in missing fields. Ex) version > 80 becoms version > 80.0.0.0 Name and platform are filtered by string comparison. Ex) "...?filter=channel<=beta, version >= 80 Ex) "...?filter=version > 80, version < 81
func (c *PlatformsChannelsVersionsListCall) Header() http.Header
Header returns a http.Header that can be modified by the caller to add headers to the request.
func (c *PlatformsChannelsVersionsListCall) IfNoneMatch(entityTag string) *PlatformsChannelsVersionsListCall
IfNoneMatch sets an optional parameter which makes the operation fail if the object's ETag matches the given value. This is useful for getting updates only after the object has changed since the last request.
func (c *PlatformsChannelsVersionsListCall) OrderBy(orderBy string) *PlatformsChannelsVersionsListCall
OrderBy sets the optional parameter "orderBy": Ordering string. Valid order_by strings are "version", "name", "platform", and "channel". Optionally, you can append " desc" or " asc" to specify the sorting order. Multiple order_by strings can be used in a comma separated list. Ordering by channel will sort by distance from the stable channel (not alphabetically). A list of channels sorted in this order is: stable, beta, dev, canary, and canary_asan. Sorting by name may cause unexpected behaviour as it is a naive string sort. For example, 1.0.0.8 will be before 1.0.0.10 in descending order. If order_by is not specified the response will be sorted by version in descending order. Ex) "...?order_by=version asc" Ex) "...?order_by=platform desc, channel, version"
func (c *PlatformsChannelsVersionsListCall) PageSize(pageSize int64) *PlatformsChannelsVersionsListCall
PageSize sets the optional parameter "pageSize": Optional limit on the number of versions to include in the response. If unspecified, the server will pick an appropriate default.
func (c *PlatformsChannelsVersionsListCall) PageToken(pageToken string) *PlatformsChannelsVersionsListCall
PageToken sets the optional parameter "pageToken": A page token, received from a previous `ListVersions` call. Provide this to retrieve the subsequent page.
func (c *PlatformsChannelsVersionsListCall) Pages(ctx context.Context, f func(*ListVersionsResponse) error) error
Pages invokes f for each page of results. A non-nil error returned from f will halt the iteration. The provided context supersedes any context provided to the Context method.
type PlatformsChannelsVersionsReleasesListCall struct {
// contains filtered or unexported fields
}
func (c *PlatformsChannelsVersionsReleasesListCall) Context(ctx context.Context) *PlatformsChannelsVersionsReleasesListCall
Context sets the context to be used in this call's Do method.
func (c *PlatformsChannelsVersionsReleasesListCall) Do(opts ...googleapi.CallOption) (*ListReleasesResponse, error)
Do executes the "versionhistory.platforms.channels.versions.releases.list" call. Any non-2xx status code is an error. Response headers are in either *ListReleasesResponse.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.
func (c *PlatformsChannelsVersionsReleasesListCall) Fields(s ...googleapi.Field) *PlatformsChannelsVersionsReleasesListCall
Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more details.
func (c *PlatformsChannelsVersionsReleasesListCall) Filter(filter string) *PlatformsChannelsVersionsReleasesListCall
Filter sets the optional parameter "filter": Filter string. Format is a comma separated list of All comma separated filter clauses are conjoined with a logical "and". Valid field_names are "version", "name", "platform", "channel", "fraction" "starttime", and "endtime". Valid operators are "<", "<=", "=", ">=", and ">". Channel comparison is done by distance from stable. must be a valid channel when filtering by channel. Ex) stable < beta, beta < dev, canary < canary_asan. Version comparison is done numerically. Ex) 1.0.0.8 < 1.0.0.10. If version is not entirely written, the version will be appended with 0 for the missing fields. Ex) version > 80 becoms version > 80.0.0.0 When filtering by starttime or endtime, string must be in RFC 3339 date string format. Name and platform are filtered by string comparison. Ex) "...?filter=channel<=beta, version >= 80 Ex) "...?filter=version > 80, version < 81 Ex) "...?filter=starttime>2020-01-01T00:00:00Z
func (c *PlatformsChannelsVersionsReleasesListCall) Header() http.Header
Header returns a http.Header that can be modified by the caller to add headers to the request.
func (c *PlatformsChannelsVersionsReleasesListCall) IfNoneMatch(entityTag string) *PlatformsChannelsVersionsReleasesListCall
IfNoneMatch sets an optional parameter which makes the operation fail if the object's ETag matches the given value. This is useful for getting updates only after the object has changed since the last request.
func (c *PlatformsChannelsVersionsReleasesListCall) OrderBy(orderBy string) *PlatformsChannelsVersionsReleasesListCall
OrderBy sets the optional parameter "orderBy": Ordering string. Valid order_by strings are "version", "name", "starttime", "endtime", "platform", "channel", and "fraction". Optionally, you can append "desc" or "asc" to specify the sorting order. Multiple order_by strings can be used in a comma separated list. Ordering by channel will sort by distance from the stable channel (not alphabetically). A list of channels sorted in this order is: stable, beta, dev, canary, and canary_asan. Sorting by name may cause unexpected behaviour as it is a naive string sort. For example, 1.0.0.8 will be before 1.0.0.10 in descending order. If order_by is not specified the response will be sorted by starttime in descending order. Ex) "...?order_by=starttime asc" Ex) "...?order_by=platform desc, channel, startime desc"
func (c *PlatformsChannelsVersionsReleasesListCall) PageSize(pageSize int64) *PlatformsChannelsVersionsReleasesListCall
PageSize sets the optional parameter "pageSize": Optional limit on the number of releases to include in the response. If unspecified, the server will pick an appropriate default.
func (c *PlatformsChannelsVersionsReleasesListCall) PageToken(pageToken string) *PlatformsChannelsVersionsReleasesListCall
PageToken sets the optional parameter "pageToken": A page token, received from a previous `ListReleases` call. Provide this to retrieve the subsequent page.
func (c *PlatformsChannelsVersionsReleasesListCall) Pages(ctx context.Context, f func(*ListReleasesResponse) error) error
Pages invokes f for each page of results. A non-nil error returned from f will halt the iteration. The provided context supersedes any context provided to the Context method.
type PlatformsChannelsVersionsReleasesService struct {
// contains filtered or unexported fields
}
func NewPlatformsChannelsVersionsReleasesService(s *Service) *PlatformsChannelsVersionsReleasesService
func (r *PlatformsChannelsVersionsReleasesService) List(parent string) *PlatformsChannelsVersionsReleasesListCall
List: Returns list of releases of the given version.
type PlatformsChannelsVersionsService struct { Releases *PlatformsChannelsVersionsReleasesService // contains filtered or unexported fields }
func NewPlatformsChannelsVersionsService(s *Service) *PlatformsChannelsVersionsService
func (r *PlatformsChannelsVersionsService) List(parent string) *PlatformsChannelsVersionsListCall
List: Returns list of version for the given platform/channel.
type PlatformsListCall struct {
// contains filtered or unexported fields
}
func (c *PlatformsListCall) Context(ctx context.Context) *PlatformsListCall
Context sets the context to be used in this call's Do method.
func (c *PlatformsListCall) Do(opts ...googleapi.CallOption) (*ListPlatformsResponse, error)
Do executes the "versionhistory.platforms.list" call. Any non-2xx status code is an error. Response headers are in either *ListPlatformsResponse.ServerResponse.Header or (if a response was returned at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check whether the returned error was because http.StatusNotModified was returned.
func (c *PlatformsListCall) Fields(s ...googleapi.Field) *PlatformsListCall
Fields allows partial responses to be retrieved. See https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more details.
func (c *PlatformsListCall) Header() http.Header
Header returns a http.Header that can be modified by the caller to add headers to the request.
func (c *PlatformsListCall) IfNoneMatch(entityTag string) *PlatformsListCall
IfNoneMatch sets an optional parameter which makes the operation fail if the object's ETag matches the given value. This is useful for getting updates only after the object has changed since the last request.
func (c *PlatformsListCall) PageSize(pageSize int64) *PlatformsListCall
PageSize sets the optional parameter "pageSize": Optional limit on the number of channels to include in the response. If unspecified, the server will pick an appropriate default.
func (c *PlatformsListCall) PageToken(pageToken string) *PlatformsListCall
PageToken sets the optional parameter "pageToken": A page token, received from a previous `ListChannels` call. Provide this to retrieve the subsequent page.
func (c *PlatformsListCall) Pages(ctx context.Context, f func(*ListPlatformsResponse) error) error
Pages invokes f for each page of results. A non-nil error returned from f will halt the iteration. The provided context supersedes any context provided to the Context method.
type PlatformsService struct { Channels *PlatformsChannelsService // contains filtered or unexported fields }
func NewPlatformsService(s *Service) *PlatformsService
func (r *PlatformsService) List(parent string) *PlatformsListCall
List: Returns list of platforms that are available for a given product. The resource "product" has no resource name in its name.
Release: A Release is owned by a Version. A Release contains information about the release(s) of its parent version. This includes when the release began and ended, as well as what percentage it was released at. If the version is released again, or if the serving percentage changes, it will create another release under the version.
type Release struct { // Fraction: Rollout fraction. This fraction indicates the fraction of people // that should receive this version in this release. If the fraction is not // specified in ReleaseManager, the API will assume fraction is 1. Fraction float64 `json:"fraction,omitempty"` // FractionGroup: Rollout fraction group. Only fractions with the same // fraction_group are statistically comparable: there may be non-fractional // differences between different fraction groups. FractionGroup int64 `json:"fractionGroup,omitempty,string"` // Name: Release name. Format is // "{product}/platforms/{platform}/channels/{channel}/versions/{version}/release // s/{release}" Name string `json:"name,omitempty"` // Serving: Timestamp interval of when the release was live. If end_time is // unspecified, the release is currently live. Serving *Interval `json:"serving,omitempty"` // Version: String containing just the version number. e.g. "84.0.4147.38" Version string `json:"version,omitempty"` // ForceSendFields is a list of field names (e.g. "Fraction") to // unconditionally include in API requests. By default, fields with empty or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Fraction") to include in API // requests with the JSON null value. By default, fields with empty values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` }
func (s *Release) MarshalJSON() ([]byte, error)
func (s *Release) UnmarshalJSON(data []byte) error
type Service struct { BasePath string // API endpoint base URL UserAgent string // optional additional User-Agent fragment Platforms *PlatformsService // contains filtered or unexported fields }
func New(client *http.Client) (*Service, error)
New creates a new Service. It uses the provided http.Client for requests.
Deprecated: please use NewService instead. To provide a custom HTTP client, use option.WithHTTPClient. If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error)
NewService creates a new Service.
Version: Each Version is owned by a Channel. A Version only displays the Version number (e.g. 84.0.4147.38). A Version owns a collection of releases.
type Version struct { // Name: Version name. Format is // "{product}/platforms/{platform}/channels/{channel}/versions/{version}" e.g. // "chrome/platforms/win/channels/beta/versions/84.0.4147.38" Name string `json:"name,omitempty"` // Version: String containing just the version number. e.g. "84.0.4147.38" Version string `json:"version,omitempty"` // ForceSendFields is a list of field names (e.g. "Name") to unconditionally // include in API requests. By default, fields with empty or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. ForceSendFields []string `json:"-"` // NullFields is a list of field names (e.g. "Name") to include in API requests // with the JSON null value. By default, fields with empty values are omitted // from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` }
func (s *Version) MarshalJSON() ([]byte, error)