From f15543d4c07047ac1d51a62c940f69acebf46dd4 Mon Sep 17 00:00:00 2001 From: lberrymage Date: Fri, 10 Oct 2025 23:37:30 +0000 Subject: [PATCH 1/5] Revert "Add package info to `AppDownloadInfo`" This reverts commit 85551c04101d5b75a13ee35f29727cf94fa870bd. Clients may want to know the exact package information for the app described in an AppDownloadInfo, as described in the referenced commit. However, the Accrescent client has no need of this field at the moment, and it may actually be better to include package info regardless of whether the app is compatible (contrary to the referenced commit) if we were to include it. Since we don't need this information, exclude it from the public API so that we don't prematurely commit to providing it. --- accrescent/directory/v1/app_download_info.proto | 4 ---- 1 file changed, 4 deletions(-) diff --git a/accrescent/directory/v1/app_download_info.proto b/accrescent/directory/v1/app_download_info.proto index 5e4153c..e1bb951 100644 --- a/accrescent/directory/v1/app_download_info.proto +++ b/accrescent/directory/v1/app_download_info.proto @@ -6,7 +6,6 @@ syntax = "proto3"; package accrescent.directory.v1; -import "accrescent/directory/v1/package_info.proto"; import "accrescent/directory/v1/split_download_info.proto"; import "buf/validate/validate.proto"; @@ -17,7 +16,4 @@ option java_package = "app.accrescent.directory.v1"; message AppDownloadInfo { // Download info for each individual split APK. repeated SplitDownloadInfo split_download_info = 1 [(buf.validate.field).repeated.min_items = 1]; - - // Package information for this app. - PackageInfo package_info = 2 [(buf.validate.field).required = true]; } From 4b9ffa9948e322e0bbb303f68e35b730b6221242 Mon Sep 17 00:00:00 2001 From: lberrymage Date: Sat, 11 Oct 2025 01:33:32 +0000 Subject: [PATCH 2/5] Define certain status code meanings in the API contract --- accrescent/directory/v1/directory_service.proto | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/accrescent/directory/v1/directory_service.proto b/accrescent/directory/v1/directory_service.proto index 3537f96..c98b141 100644 --- a/accrescent/directory/v1/directory_service.proto +++ b/accrescent/directory/v1/directory_service.proto @@ -21,14 +21,28 @@ option java_package = "app.accrescent.directory.v1"; // Service providing a directory of all Accrescent apps. service DirectoryService { // Retrieves a single app's listing. + // + // The following status codes have defined meanings: + // + // - INVALID_ARGUMENT: the request parameters are invalid + // - NOT_FOUND: an app with the provided ID could not be found rpc GetAppListing(GetAppListingRequest) returns (GetAppListingResponse); // Retrieves a list of unique app listings. rpc ListAppListings(ListAppListingsRequest) returns (ListAppListingsResponse); // Retrieves an app's package information. + // + // The following status codes have defined meanings: + // + // - INVALID_ARGUMENT: the request parameters are invalid rpc GetAppPackageInfo(GetAppPackageInfoRequest) returns (GetAppPackageInfoResponse); // Retrieves an app's download information. + // + // The following status codes have defined meanings: + // + // - INVALID_ARGUMENT: the request parameters are invalid + // - NOT_FOUND: an app with the provided ID could not be found rpc GetAppDownloadInfo(GetAppDownloadInfoRequest) returns (GetAppDownloadInfoResponse); } From dd9e5b100b754920279e5e516aa2e9e88ba0a974 Mon Sep 17 00:00:00 2001 From: lberrymage Date: Sat, 11 Oct 2025 01:39:03 +0000 Subject: [PATCH 3/5] Use status codes instead of messages for incompatibility errors Semantically, an incompatibility between an app and device is moreso an error than a commonly expected "success" response, so we should represent incompatibilities as error codes instead of wire-protocol messages. If we ever need to provide more information in the error response, we can use gRPC's extended error model. --- accrescent/directory/v1/compatibility.proto | 22 ----------------- .../directory/v1/directory_service.proto | 1 + .../v1/get_app_download_info_response.proto | 24 ++++--------------- 3 files changed, 5 insertions(+), 42 deletions(-) delete mode 100644 accrescent/directory/v1/compatibility.proto diff --git a/accrescent/directory/v1/compatibility.proto b/accrescent/directory/v1/compatibility.proto deleted file mode 100644 index a63d5e2..0000000 --- a/accrescent/directory/v1/compatibility.proto +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2024 Logan Magee -// -// SPDX-License-Identifier: MPL-2.0 - -syntax = "proto3"; - -package accrescent.directory.v1; - -import "buf/validate/validate.proto"; - -option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; - -// Compatibility of an app with a given device specification. -message Compatibility { - // Whether the app is compatible with the provided device attributes. - // - // If the app is compatible, it should install and run successfully. If it is - // not, installation should not be attempted because the app is fundamentally - // incompatible with the provided device attributes in a crucial way. - optional bool compatible = 1 [(buf.validate.field).required = true]; -} diff --git a/accrescent/directory/v1/directory_service.proto b/accrescent/directory/v1/directory_service.proto index c98b141..7809973 100644 --- a/accrescent/directory/v1/directory_service.proto +++ b/accrescent/directory/v1/directory_service.proto @@ -44,5 +44,6 @@ service DirectoryService { // // - INVALID_ARGUMENT: the request parameters are invalid // - NOT_FOUND: an app with the provided ID could not be found + // - FAILED_PRECONDITION: the app is incompatible with the specified device rpc GetAppDownloadInfo(GetAppDownloadInfoRequest) returns (GetAppDownloadInfoResponse); } diff --git a/accrescent/directory/v1/get_app_download_info_response.proto b/accrescent/directory/v1/get_app_download_info_response.proto index eb2838c..c8495c2 100644 --- a/accrescent/directory/v1/get_app_download_info_response.proto +++ b/accrescent/directory/v1/get_app_download_info_response.proto @@ -7,33 +7,17 @@ syntax = "proto3"; package accrescent.directory.v1; import "accrescent/directory/v1/app_download_info.proto"; -import "accrescent/directory/v1/compatibility.proto"; -import "buf/validate/validate.proto"; option java_multiple_files = true; option java_package = "app.accrescent.directory.v1"; // Response to requesting an app's download info. message GetAppDownloadInfoResponse { - // Compatibility information between the app and the device attributes - // specified in the request. - Compatibility compatibility = 1 [(buf.validate.field).required = true]; - - // The app's download info. This field will be populated if and only if all of - // the following statements apply: - // - // 1. The app is compatible with the device specified in the request (as can - // be determined by this message's "compatibility" field). - // 2. If base_version_code was specified in the request, it is lower than the - // latest version code of the app. + // The app's download info. This field will not be populated if + // base_version_code was specified in the request and is lower than the latest + // version code of the app. // // In other words, it will only be populated if there are APKs available for // download which are newer than those specified in the request. - AppDownloadInfo app_download_info = 2; - - option (buf.validate.message).cel = { - id: "app_download_info.not_present_if_incompatible" - message: "app download info must not be present if the app is incompatible" - expression: "this.compatibility.compatible || !has(this.app_download_info)" - }; + AppDownloadInfo app_download_info = 1; } From 06439caf535b7604f0618551e74688c2c387c8d0 Mon Sep 17 00:00:00 2001 From: lberrymage Date: Mon, 13 Oct 2025 17:17:40 +0000 Subject: [PATCH 4/5] Make separate RPC for retrieving app update info While retrieving initial app download info and update info are conceptually similar operations, conflating them causes some API quirks wherein we cannot annotate certain response fields as required (i.e. expected) implicitly based on request parameters. In addition, as we inevitably add more information specific to app updates (e.g., update deltas), the API would become less precise by including update-specific fields in the data types returned to clients requesting only initial download info. This commit splits `GetAppDownloadInfo` into two distinct RPCs - one for initial downloads and one for updates - to resolve these conflation issues. --- accrescent/directory/v1/app_update_info.proto | 19 ++++++++ .../directory/v1/directory_service.proto | 11 +++++ .../v1/get_app_download_info_request.proto | 5 --- .../v1/get_app_download_info_response.proto | 10 ++--- .../v1/get_app_update_info_request.proto | 45 +++++++++++++++++++ .../v1/get_app_update_info_response.proto | 16 +++++++ .../directory/v1/split_update_info.proto | 24 ++++++++++ 7 files changed, 118 insertions(+), 12 deletions(-) create mode 100644 accrescent/directory/v1/app_update_info.proto create mode 100644 accrescent/directory/v1/get_app_update_info_request.proto create mode 100644 accrescent/directory/v1/get_app_update_info_response.proto create mode 100644 accrescent/directory/v1/split_update_info.proto diff --git a/accrescent/directory/v1/app_update_info.proto b/accrescent/directory/v1/app_update_info.proto new file mode 100644 index 0000000..151b696 --- /dev/null +++ b/accrescent/directory/v1/app_update_info.proto @@ -0,0 +1,19 @@ +// Copyright 2025 Logan Magee +// +// SPDX-License-Identifier: MPL-2.0 + +syntax = "proto3"; + +package accrescent.directory.v1; + +import "accrescent/directory/v1/split_update_info.proto"; +import "buf/validate/validate.proto"; + +option java_multiple_files = true; +option java_package = "app.accrescent.directory.v1"; + +// App update information for a given app. +message AppUpdateInfo { + // Update info for each individual split APK. + repeated SplitUpdateInfo split_update_info = 1 [(buf.validate.field).repeated.min_items = 1]; +} diff --git a/accrescent/directory/v1/directory_service.proto b/accrescent/directory/v1/directory_service.proto index 7809973..a47f995 100644 --- a/accrescent/directory/v1/directory_service.proto +++ b/accrescent/directory/v1/directory_service.proto @@ -12,6 +12,8 @@ import "accrescent/directory/v1/get_app_listing_request.proto"; import "accrescent/directory/v1/get_app_listing_response.proto"; import "accrescent/directory/v1/get_app_package_info_request.proto"; import "accrescent/directory/v1/get_app_package_info_response.proto"; +import "accrescent/directory/v1/get_app_update_info_request.proto"; +import "accrescent/directory/v1/get_app_update_info_response.proto"; import "accrescent/directory/v1/list_app_listings_request.proto"; import "accrescent/directory/v1/list_app_listings_response.proto"; @@ -46,4 +48,13 @@ service DirectoryService { // - NOT_FOUND: an app with the provided ID could not be found // - FAILED_PRECONDITION: the app is incompatible with the specified device rpc GetAppDownloadInfo(GetAppDownloadInfoRequest) returns (GetAppDownloadInfoResponse); + + // Retrieves an app's update information. + // + // The following status codes have defined meanings: + // + // - INVALID_ARGUMENT: the request parameters are invalid + // - NOT_FOUND: an app with the provided ID could not be found + // - FAILED_PRECONDITION: the app is incompatible with the specified device + rpc GetAppUpdateInfo(GetAppUpdateInfoRequest) returns (GetAppUpdateInfoResponse); } diff --git a/accrescent/directory/v1/get_app_download_info_request.proto b/accrescent/directory/v1/get_app_download_info_request.proto index bd86876..186dd3c 100644 --- a/accrescent/directory/v1/get_app_download_info_request.proto +++ b/accrescent/directory/v1/get_app_download_info_request.proto @@ -35,9 +35,4 @@ message GetAppDownloadInfoRequest { // The current device's hardware and OS attributes used to determine app // compatibility, download size, etc. DeviceAttributes device_attributes = 2 [(buf.validate.field).required = true]; - - // The base version of the app to get download info from (almost always the - // currently installed version). If unspecified, indicates that this is an - // initial installation instead of an update. - optional uint64 base_version_code = 3 [(buf.validate.field).uint64.gt = 0]; } diff --git a/accrescent/directory/v1/get_app_download_info_response.proto b/accrescent/directory/v1/get_app_download_info_response.proto index c8495c2..e38f968 100644 --- a/accrescent/directory/v1/get_app_download_info_response.proto +++ b/accrescent/directory/v1/get_app_download_info_response.proto @@ -7,17 +7,13 @@ syntax = "proto3"; package accrescent.directory.v1; import "accrescent/directory/v1/app_download_info.proto"; +import "buf/validate/validate.proto"; option java_multiple_files = true; option java_package = "app.accrescent.directory.v1"; // Response to requesting an app's download info. message GetAppDownloadInfoResponse { - // The app's download info. This field will not be populated if - // base_version_code was specified in the request and is lower than the latest - // version code of the app. - // - // In other words, it will only be populated if there are APKs available for - // download which are newer than those specified in the request. - AppDownloadInfo app_download_info = 1; + // The app's download info. + AppDownloadInfo app_download_info = 1 [(buf.validate.field).required = true]; } diff --git a/accrescent/directory/v1/get_app_update_info_request.proto b/accrescent/directory/v1/get_app_update_info_request.proto new file mode 100644 index 0000000..122da53 --- /dev/null +++ b/accrescent/directory/v1/get_app_update_info_request.proto @@ -0,0 +1,45 @@ +// Copyright 2025 Logan Magee +// +// SPDX-License-Identifier: MPL-2.0 + +syntax = "proto3"; + +package accrescent.directory.v1; + +import "accrescent/directory/v1/device_attributes.proto"; +import "buf/validate/validate.proto"; + +option java_multiple_files = true; +option java_package = "app.accrescent.directory.v1"; + +// Request defining parameters to retrieving an app's update info. +message GetAppUpdateInfoRequest { + // The application ID of the update info to retrieve. + optional string app_id = 1 [ + (buf.validate.field).required = true, + // According to + // https://developer.android.com/build/configure-app-module#set-application-id, + // the app ID must conform to the following rules: + // + // 1. It must have at least two segments (one or more dots). + // 2. Each segment must start with a letter. + // 3. All characters must be alphanumeric or an underscore [a-zA-Z0-9_]. + // + // The maximum length is imposed by us to set a reasonable limit. + (buf.validate.field).string = { + pattern: "^([a-zA-Z][a-zA-Z0-9_]*\\.)+[a-zA-Z][a-zA-Z0-9_]*$" + max_bytes: 128 + } + ]; + + // The current device's hardware and OS attributes used to determine app + // compatibility, download size, etc. + DeviceAttributes device_attributes = 2 [(buf.validate.field).required = true]; + + // The base version of the app to get update info from, i.e., the currently + // installed version. + optional uint64 base_version_code = 3 [ + (buf.validate.field).required = true, + (buf.validate.field).uint64.gt = 0 + ]; +} diff --git a/accrescent/directory/v1/get_app_update_info_response.proto b/accrescent/directory/v1/get_app_update_info_response.proto new file mode 100644 index 0000000..2d8222f --- /dev/null +++ b/accrescent/directory/v1/get_app_update_info_response.proto @@ -0,0 +1,16 @@ +// Copyright 2025 Logan Magee +// +// SPDX-License-Identifier: MPL-2.0 + +syntax = "proto3"; + +package accrescent.directory.v1; + +option java_multiple_files = true; +option java_package = "app.accrescent.directory.v1"; + +// Response to requesting an app's update info. +message GetAppUpdateInfoResponse { + // The app's update info. Present if and only if the app is not up-to-date. + AppUpdateInfo app_update_info = 1; +} diff --git a/accrescent/directory/v1/split_update_info.proto b/accrescent/directory/v1/split_update_info.proto new file mode 100644 index 0000000..7fffe35 --- /dev/null +++ b/accrescent/directory/v1/split_update_info.proto @@ -0,0 +1,24 @@ +// Copyright 2025 Logan Magee +// +// SPDX-License-Identifier: MPL-2.0 + +syntax = "proto3"; + +package accrescent.directory.v1; + +import "buf/validate/validate.proto"; + +option java_multiple_files = true; +option java_package = "app.accrescent.directory.v1"; + +// Update info for an individual split APK. +message SplitUpdateInfo { + // The download size in bytes of this individual split APK. + optional uint32 apk_download_size = 1 [(buf.validate.field).required = true]; + + // The URL of the APK which can be retrieved with a simple HTTP GET. + optional string apk_url = 2 [ + (buf.validate.field).required = true, + (buf.validate.field).string.uri = true + ]; +} From c86f289bfd20299a69a82c27ac470960bdbfa9f4 Mon Sep 17 00:00:00 2001 From: lberrymage Date: Mon, 13 Oct 2025 17:36:48 +0000 Subject: [PATCH 5/5] Rename from "directory API" to "app store API" This API name has a much more clear intent on what the API's purpose actually is. --- README.md | 12 ++++---- .../v1/app_download_info.proto | 6 ++-- .../v1/app_listing.proto | 6 ++-- .../v1/app_service.proto} | 30 +++++++++---------- .../v1/app_update_info.proto | 6 ++-- .../v1/device_attributes.proto | 4 +-- .../v1/get_app_download_info_request.proto | 6 ++-- .../v1/get_app_download_info_response.proto | 6 ++-- .../v1/get_app_listing_request.proto | 4 +-- .../v1/get_app_listing_response.proto | 6 ++-- .../v1/get_app_package_info_request.proto | 4 +-- .../v1/get_app_package_info_response.proto | 6 ++-- .../v1/get_app_update_info_request.proto | 6 ++-- .../v1/get_app_update_info_response.proto | 6 ++-- .../{directory => appstore}/v1/image.proto | 4 +-- .../v1/list_app_listings_request.proto | 4 +-- .../v1/list_app_listings_response.proto | 6 ++-- .../v1/package_info.proto | 4 +-- .../v1/split_download_info.proto | 4 +-- .../v1/split_update_info.proto | 4 +-- buf.yaml | 2 +- 21 files changed, 69 insertions(+), 67 deletions(-) rename accrescent/{directory => appstore}/v1/app_download_info.proto (72%) rename accrescent/{directory => appstore}/v1/app_listing.proto (88%) rename accrescent/{directory/v1/directory_service.proto => appstore/v1/app_service.proto} (66%) rename accrescent/{directory => appstore}/v1/app_update_info.proto (72%) rename accrescent/{directory => appstore}/v1/device_attributes.proto (83%) rename accrescent/{directory => appstore}/v1/get_app_download_info_request.proto (89%) rename accrescent/{directory => appstore}/v1/get_app_download_info_response.proto (71%) rename accrescent/{directory => appstore}/v1/get_app_listing_request.proto (92%) rename accrescent/{directory => appstore}/v1/get_app_listing_response.proto (71%) rename accrescent/{directory => appstore}/v1/get_app_package_info_request.proto (91%) rename accrescent/{directory => appstore}/v1/get_app_package_info_response.proto (73%) rename accrescent/{directory => appstore}/v1/get_app_update_info_request.proto (90%) rename accrescent/{directory => appstore}/v1/get_app_update_info_response.proto (70%) rename accrescent/{directory => appstore}/v1/image.proto (83%) rename accrescent/{directory => appstore}/v1/list_app_listings_request.proto (92%) rename accrescent/{directory => appstore}/v1/list_app_listings_response.proto (83%) rename accrescent/{directory => appstore}/v1/package_info.proto (85%) rename accrescent/{directory => appstore}/v1/split_download_info.proto (86%) rename accrescent/{directory => appstore}/v1/split_update_info.proto (86%) diff --git a/README.md b/README.md index d68aaa7..3a71931 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ Copyright 2025 Logan Magee SPDX-License-Identifier: MPL-2.0 --> -# Accrescent Directory API +# Accrescent App Store API -The Accrescent directory API definitions. +The Accrescent app store API definitions. ## About -The directory API is the gRPC API used by Accrescent clients to retrieve information about apps +The app store API is the gRPC API used by Accrescent clients to retrieve information about apps available in the store. Specifically, it allows clients to: - List apps available for installation in the store @@ -20,7 +20,7 @@ available in the store. Specifically, it allows clients to: - Determine whether an app is compatible with a device - ...and more -API definitions are published to [Buf] at the [directory API BSR repository], which also generates +API definitions are published to [Buf] at the [app store API BSR repository], which also generates client SDKs. ## Versioning policy @@ -32,6 +32,6 @@ Semantic Versioning rules; however, server implementers may experience breaking versions. [Buf]: https://buf.build -[Buf-generated SDKs]: https://buf.build/accrescent/directory-api/sdks -[directory API BSR repository]: https://buf.build/accrescent/directory-api +[Buf-generated SDKs]: https://buf.build/accrescent/appstore-api/sdks +[app store API BSR repository]: https://buf.build/accrescent/appstore-api [semantic versioning]: https://semver.org diff --git a/accrescent/directory/v1/app_download_info.proto b/accrescent/appstore/v1/app_download_info.proto similarity index 72% rename from accrescent/directory/v1/app_download_info.proto rename to accrescent/appstore/v1/app_download_info.proto index e1bb951..4b75042 100644 --- a/accrescent/directory/v1/app_download_info.proto +++ b/accrescent/appstore/v1/app_download_info.proto @@ -4,13 +4,13 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; -import "accrescent/directory/v1/split_download_info.proto"; +import "accrescent/appstore/v1/split_download_info.proto"; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // App download information for a given app. message AppDownloadInfo { diff --git a/accrescent/directory/v1/app_listing.proto b/accrescent/appstore/v1/app_listing.proto similarity index 88% rename from accrescent/directory/v1/app_listing.proto rename to accrescent/appstore/v1/app_listing.proto index eaa8e77..129437b 100644 --- a/accrescent/directory/v1/app_listing.proto +++ b/accrescent/appstore/v1/app_listing.proto @@ -4,13 +4,13 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; -import "accrescent/directory/v1/image.proto"; +import "accrescent/appstore/v1/image.proto"; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // A localized store listing for a given app. message AppListing { diff --git a/accrescent/directory/v1/directory_service.proto b/accrescent/appstore/v1/app_service.proto similarity index 66% rename from accrescent/directory/v1/directory_service.proto rename to accrescent/appstore/v1/app_service.proto index a47f995..e61f7c4 100644 --- a/accrescent/directory/v1/directory_service.proto +++ b/accrescent/appstore/v1/app_service.proto @@ -4,24 +4,24 @@ syntax = "proto3"; -package accrescent.directory.v1; - -import "accrescent/directory/v1/get_app_download_info_request.proto"; -import "accrescent/directory/v1/get_app_download_info_response.proto"; -import "accrescent/directory/v1/get_app_listing_request.proto"; -import "accrescent/directory/v1/get_app_listing_response.proto"; -import "accrescent/directory/v1/get_app_package_info_request.proto"; -import "accrescent/directory/v1/get_app_package_info_response.proto"; -import "accrescent/directory/v1/get_app_update_info_request.proto"; -import "accrescent/directory/v1/get_app_update_info_response.proto"; -import "accrescent/directory/v1/list_app_listings_request.proto"; -import "accrescent/directory/v1/list_app_listings_response.proto"; +package accrescent.appstore.v1; + +import "accrescent/appstore/v1/get_app_download_info_request.proto"; +import "accrescent/appstore/v1/get_app_download_info_response.proto"; +import "accrescent/appstore/v1/get_app_listing_request.proto"; +import "accrescent/appstore/v1/get_app_listing_response.proto"; +import "accrescent/appstore/v1/get_app_package_info_request.proto"; +import "accrescent/appstore/v1/get_app_package_info_response.proto"; +import "accrescent/appstore/v1/get_app_update_info_request.proto"; +import "accrescent/appstore/v1/get_app_update_info_response.proto"; +import "accrescent/appstore/v1/list_app_listings_request.proto"; +import "accrescent/appstore/v1/list_app_listings_response.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; -// Service providing a directory of all Accrescent apps. -service DirectoryService { +// Service providing RPCs for querying all Accrescent apps. +service AppService { // Retrieves a single app's listing. // // The following status codes have defined meanings: diff --git a/accrescent/directory/v1/app_update_info.proto b/accrescent/appstore/v1/app_update_info.proto similarity index 72% rename from accrescent/directory/v1/app_update_info.proto rename to accrescent/appstore/v1/app_update_info.proto index 151b696..48589e6 100644 --- a/accrescent/directory/v1/app_update_info.proto +++ b/accrescent/appstore/v1/app_update_info.proto @@ -4,13 +4,13 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; -import "accrescent/directory/v1/split_update_info.proto"; +import "accrescent/appstore/v1/split_update_info.proto"; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // App update information for a given app. message AppUpdateInfo { diff --git a/accrescent/directory/v1/device_attributes.proto b/accrescent/appstore/v1/device_attributes.proto similarity index 83% rename from accrescent/directory/v1/device_attributes.proto rename to accrescent/appstore/v1/device_attributes.proto index bc04bf0..7a5fb83 100644 --- a/accrescent/directory/v1/device_attributes.proto +++ b/accrescent/appstore/v1/device_attributes.proto @@ -4,13 +4,13 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; import "android/bundle/devices.proto"; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // A client device's hardware and OS attributes. message DeviceAttributes { diff --git a/accrescent/directory/v1/get_app_download_info_request.proto b/accrescent/appstore/v1/get_app_download_info_request.proto similarity index 89% rename from accrescent/directory/v1/get_app_download_info_request.proto rename to accrescent/appstore/v1/get_app_download_info_request.proto index 186dd3c..3711e32 100644 --- a/accrescent/directory/v1/get_app_download_info_request.proto +++ b/accrescent/appstore/v1/get_app_download_info_request.proto @@ -4,13 +4,13 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; -import "accrescent/directory/v1/device_attributes.proto"; +import "accrescent/appstore/v1/device_attributes.proto"; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Request defining parameters for retrieving an app's download info. message GetAppDownloadInfoRequest { diff --git a/accrescent/directory/v1/get_app_download_info_response.proto b/accrescent/appstore/v1/get_app_download_info_response.proto similarity index 71% rename from accrescent/directory/v1/get_app_download_info_response.proto rename to accrescent/appstore/v1/get_app_download_info_response.proto index e38f968..75efe53 100644 --- a/accrescent/directory/v1/get_app_download_info_response.proto +++ b/accrescent/appstore/v1/get_app_download_info_response.proto @@ -4,13 +4,13 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; -import "accrescent/directory/v1/app_download_info.proto"; +import "accrescent/appstore/v1/app_download_info.proto"; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Response to requesting an app's download info. message GetAppDownloadInfoResponse { diff --git a/accrescent/directory/v1/get_app_listing_request.proto b/accrescent/appstore/v1/get_app_listing_request.proto similarity index 92% rename from accrescent/directory/v1/get_app_listing_request.proto rename to accrescent/appstore/v1/get_app_listing_request.proto index 6969273..dfbb82c 100644 --- a/accrescent/directory/v1/get_app_listing_request.proto +++ b/accrescent/appstore/v1/get_app_listing_request.proto @@ -4,12 +4,12 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Request defining parameters for retrieving an app listing. message GetAppListingRequest { diff --git a/accrescent/directory/v1/get_app_listing_response.proto b/accrescent/appstore/v1/get_app_listing_response.proto similarity index 71% rename from accrescent/directory/v1/get_app_listing_response.proto rename to accrescent/appstore/v1/get_app_listing_response.proto index c8e6656..f4a72ab 100644 --- a/accrescent/directory/v1/get_app_listing_response.proto +++ b/accrescent/appstore/v1/get_app_listing_response.proto @@ -4,13 +4,13 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; -import "accrescent/directory/v1/app_listing.proto"; +import "accrescent/appstore/v1/app_listing.proto"; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Response to requesting an app listing. message GetAppListingResponse { diff --git a/accrescent/directory/v1/get_app_package_info_request.proto b/accrescent/appstore/v1/get_app_package_info_request.proto similarity index 91% rename from accrescent/directory/v1/get_app_package_info_request.proto rename to accrescent/appstore/v1/get_app_package_info_request.proto index 8cc3972..81ab871 100644 --- a/accrescent/directory/v1/get_app_package_info_request.proto +++ b/accrescent/appstore/v1/get_app_package_info_request.proto @@ -4,12 +4,12 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Request defining parameters for retrieving an app's package info. message GetAppPackageInfoRequest { diff --git a/accrescent/directory/v1/get_app_package_info_response.proto b/accrescent/appstore/v1/get_app_package_info_response.proto similarity index 73% rename from accrescent/directory/v1/get_app_package_info_response.proto rename to accrescent/appstore/v1/get_app_package_info_response.proto index 2dd6c87..8158b8f 100644 --- a/accrescent/directory/v1/get_app_package_info_response.proto +++ b/accrescent/appstore/v1/get_app_package_info_response.proto @@ -4,13 +4,13 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; -import "accrescent/directory/v1/package_info.proto"; +import "accrescent/appstore/v1/package_info.proto"; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Response to requesting an app's package info. message GetAppPackageInfoResponse { diff --git a/accrescent/directory/v1/get_app_update_info_request.proto b/accrescent/appstore/v1/get_app_update_info_request.proto similarity index 90% rename from accrescent/directory/v1/get_app_update_info_request.proto rename to accrescent/appstore/v1/get_app_update_info_request.proto index 122da53..a7f76be 100644 --- a/accrescent/directory/v1/get_app_update_info_request.proto +++ b/accrescent/appstore/v1/get_app_update_info_request.proto @@ -4,13 +4,13 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; -import "accrescent/directory/v1/device_attributes.proto"; +import "accrescent/appstore/v1/device_attributes.proto"; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Request defining parameters to retrieving an app's update info. message GetAppUpdateInfoRequest { diff --git a/accrescent/directory/v1/get_app_update_info_response.proto b/accrescent/appstore/v1/get_app_update_info_response.proto similarity index 70% rename from accrescent/directory/v1/get_app_update_info_response.proto rename to accrescent/appstore/v1/get_app_update_info_response.proto index 2d8222f..cc66e56 100644 --- a/accrescent/directory/v1/get_app_update_info_response.proto +++ b/accrescent/appstore/v1/get_app_update_info_response.proto @@ -4,10 +4,12 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; + +import "accrescent/appstore/v1/app_update_info.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Response to requesting an app's update info. message GetAppUpdateInfoResponse { diff --git a/accrescent/directory/v1/image.proto b/accrescent/appstore/v1/image.proto similarity index 83% rename from accrescent/directory/v1/image.proto rename to accrescent/appstore/v1/image.proto index a1bfc24..7bcd1d9 100644 --- a/accrescent/directory/v1/image.proto +++ b/accrescent/appstore/v1/image.proto @@ -4,12 +4,12 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Graphical image to be displayed in client UI. message Image { diff --git a/accrescent/directory/v1/list_app_listings_request.proto b/accrescent/appstore/v1/list_app_listings_request.proto similarity index 92% rename from accrescent/directory/v1/list_app_listings_request.proto rename to accrescent/appstore/v1/list_app_listings_request.proto index 34329a3..4fbfa07 100644 --- a/accrescent/directory/v1/list_app_listings_request.proto +++ b/accrescent/appstore/v1/list_app_listings_request.proto @@ -4,10 +4,10 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Request defining parameters for retrieving multiple app listings. message ListAppListingsRequest { diff --git a/accrescent/directory/v1/list_app_listings_response.proto b/accrescent/appstore/v1/list_app_listings_response.proto similarity index 83% rename from accrescent/directory/v1/list_app_listings_response.proto rename to accrescent/appstore/v1/list_app_listings_response.proto index 5960b74..c714a6e 100644 --- a/accrescent/directory/v1/list_app_listings_response.proto +++ b/accrescent/appstore/v1/list_app_listings_response.proto @@ -4,13 +4,13 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; -import "accrescent/directory/v1/app_listing.proto"; +import "accrescent/appstore/v1/app_listing.proto"; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Response to requesting a list of app listings. message ListAppListingsResponse { diff --git a/accrescent/directory/v1/package_info.proto b/accrescent/appstore/v1/package_info.proto similarity index 85% rename from accrescent/directory/v1/package_info.proto rename to accrescent/appstore/v1/package_info.proto index afc6918..03e16ac 100644 --- a/accrescent/directory/v1/package_info.proto +++ b/accrescent/appstore/v1/package_info.proto @@ -4,12 +4,12 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Package information for a given app. message PackageInfo { diff --git a/accrescent/directory/v1/split_download_info.proto b/accrescent/appstore/v1/split_download_info.proto similarity index 86% rename from accrescent/directory/v1/split_download_info.proto rename to accrescent/appstore/v1/split_download_info.proto index fd3f9b8..c7bfac3 100644 --- a/accrescent/directory/v1/split_download_info.proto +++ b/accrescent/appstore/v1/split_download_info.proto @@ -4,12 +4,12 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Download info for an individual split APK. message SplitDownloadInfo { diff --git a/accrescent/directory/v1/split_update_info.proto b/accrescent/appstore/v1/split_update_info.proto similarity index 86% rename from accrescent/directory/v1/split_update_info.proto rename to accrescent/appstore/v1/split_update_info.proto index 7fffe35..0db4179 100644 --- a/accrescent/directory/v1/split_update_info.proto +++ b/accrescent/appstore/v1/split_update_info.proto @@ -4,12 +4,12 @@ syntax = "proto3"; -package accrescent.directory.v1; +package accrescent.appstore.v1; import "buf/validate/validate.proto"; option java_multiple_files = true; -option java_package = "app.accrescent.directory.v1"; +option java_package = "app.accrescent.appstore.v1"; // Update info for an individual split APK. message SplitUpdateInfo { diff --git a/buf.yaml b/buf.yaml index 82cb295..2a1a2ab 100644 --- a/buf.yaml +++ b/buf.yaml @@ -5,7 +5,7 @@ version: v2 modules: - path: . - name: buf.build/accrescent/directory-api + name: buf.build/accrescent/appstore-api deps: - buf.build/accrescent/android-bundle:v1.1.0 - buf.build/bufbuild/protovalidate:v1.0.0