Repository navigation
Sync Commonalities to r4.4 (0.9.0) - #86
Merged
Merged
Conversation
Bumps this API's Commonalities target from r4.3 (0.8.0) to r4.4 (0.9.0): - Resynced code/common/CAMARA_common.yaml, CAMARA_event_common.yaml and info-description-templates.yaml to their r4.4 content, updating .sync-manifest.yaml with the corresponding blob hashes. - Bumped info.x-camara-commonalities to 0.9.0. - Updated the "Additional CAMARA error responses" mandatory info.description text to r4.4's wording (points to x-camara-commonalities/changelog/release metadata instead of the removed "API Readiness Checklist" document reference). - Replaced every $ref to the deprecated Generic400/401/403/404 responses with the new named catalogue from CAMARA_common.yaml: BadRequest400, Unauthenticated401, PermissionDenied403, NotFound404. - Removed this API's local Generic400/403/404 overrides from components/responses: they existed only to work around a P-040 bundling name collision (introduced for issue camaraproject#72), which no longer applies now that the shared catalogue responses already carry exactly the same restricted code set this API needs. - Locally-defined 409 responses (ALREADY_EXISTS/INCOMPATIBLE_STATE) now use the CAMARA_common.yaml Track-2 template (ErrorInfo allOf'd with a local status/code enum restriction) instead of a bare ErrorInfo $ref, matching the r4.4 Design Guide's required pattern for locally-defined error responses. Local duplication of SinkCredential/AccessTokenCredential/sink/ SubscriptionConfig against the r4.4 CAMARA_event_common.yaml equivalents (Sink, SinkCredential w/ PRIVATE_KEY_JWT, ConfigBase) is tracked separately and not addressed in this commit.
…OT_SUPPORTED Continues the Commonalities r4.4 migration for the implicit subscription model used by createAppInstance/createAppDeployment: - SubscriptionRequest.sink now $refs the shared Sink schema in CAMARA_event_common.yaml instead of duplicating its string/format/pattern/maxLength definition locally. - SinkCredential no longer duplicates AccessTokenCredential's fields from scratch; it now allOf's the common AccessTokenCredential and locally restricts credentialType to ACCESSTOKEN only (PRIVATE_KEY_JWT, newly supported by Commonalities r4.4, is intentionally not offered by this API). The local AccessTokenCredential schema was removed as it's no longer needed. - Added the new 422 EVENT_NOTIFICATIONS_NOT_SUPPORTED response (components/responses/EventNotificationsNotSupported422, referencing the shared example in CAMARA_event_common.yaml) to both createAppInstance and createAppDeployment, and documented in their descriptions that providing subscriptionRequest.sink when the Edge Cloud Platform cannot deliver notifications results in this error without creating the resource. Echoing `sink` back in AppInstanceInfo/AppDeploymentInfo on success, as newly recommended by the Guide, is a separate schema change and is not part of this commit.
Applies the two remaining recommended (SHOULD) items from the r4.4 Design Guide's Appendix B / request body strictness guidance: - additionalProperties: false added to every request body schema (and inline request body) with no composition at its own top level: SubscriptionRequest, AppInstanceZoneRequest, AppInstanceClusterRequest, AppDeploymentZoneRequest, AppDeploymentClusterRequest, and the 4 inline bodies of addEdgeCloudZone/removeEdgeCloudZone/ addKubernetesCluster/removeKubernetesCluster. AppManifest is deliberately excluded: it's allOf'd into AppManifestInfo (adding the appId property), and additionalProperties: false on AppManifest itself would make that allOf combination invalid under standard JSON Schema semantics (the appId property, valid per the sibling allOf branch, would violate AppManifest's own restriction) - exactly the composition pitfall the Guide's "does not propagate through allOf" caveat warns about, just manifesting as a hard conflict rather than a silent no-op here. - Reformatted enum descriptions that either had no per-value meaning, or had it as unstructured prose, into markdown bullet lists (one per Appendix B.3): SubscriptionEventType, AppInstanceInfo.status, AppManifest.packageType/appRepo.type/appRepo.authType, networkInterfaces.protocol/visibilityType, EdgeCloudZoneStatus, K8sAddons items, K8sNetworking.additionalNetworks.interfaceType, OperatingSystem.architecture/family/version/license, and the getEdgeCloudZones `status` query parameter. Left the ALREADY_EXISTS/INCOMPATIBLE_STATE code enums on the addEdgeCloudZone/addKubernetesCluster 409 responses as-is: their per-value meaning is already documented via the existing `examples[].description` entries, so a bullet list on the `code` property itself would just duplicate that.
# Conflicts: # code/API_definitions/edge-application-management.yaml
DLondonoD
requested review from
FabrizioMoggio,
JoseMConde,
Kevsy,
maheshc01 and
seralogar
as code owners
September 23, 2026 15:34
seralogar
reviewed
Sep 23, 2026
…llision The local SinkCredential (allOf over common AccessTokenCredential, restricted to ACCESSTOKEN) collides during bundling with the common SinkCredential pulled in transitively via AccessTokenCredential's own $ref, since both share the same name but different content. Renaming the API-specific schema avoids the collision without touching the shared Commonalities definitions. Generated with aXet.code Assisted-by: Claude Sonnet 5 via aXet.code <noreply@axetcode.local>
Co-authored-by: Sergi <sergialonsogarcia@gmail.com>
- Restore the implicit-subscription accessTokenExpiresUtc wording on AppEventSinkCredential, lost when it stopped duplicating AccessTokenCredential from scratch: the common schema only carries the explicit-subscription text (Event Guide §3.4, Note 3). - Add locally-scoped CreateAppInstanceBadRequest400 / CreateAppDeploymentBadRequest400 responses (following the r4.4 sample-implicit-events.yaml template) so createAppInstance and createAppDeployment's 400 also cover INVALID_SINK, INVALID_CREDENTIAL and INVALID_TOKEN, with an inline INVALID_CREDENTIAL example since this API only supports ACCESSTOKEN. - Reference the shared AlreadyExists409 catalogue response instead of redefining an identical ALREADY_EXISTS-only 409 locally in submitApp, createAppInstance and createAppDeployment. - Echo sink back on AppInstanceInfo/AppDeploymentInfo when event delivery is accepted, per the r4.4 Event Guide §2.1 "Sink delivery behaviour" MUST rule that comes with targeting Commonalities 0.9.0. Generated with aXet.code Assisted-by: Claude Sonnet 5 via aXet.code <noreply@axetcode.local>
# Conflicts: # code/API_definitions/edge-application-management.yaml
seralogar
approved these changes
Sep 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What type of PR is this?
What this PR does / why we need it:
Bumps this API's Commonalities target from r4.3 (0.8.0) to r4.4 (0.9.0) and adopts the resulting Design Guide changes:
code/common/CAMARA_common.yaml,CAMARA_event_common.yamlandinfo-description-templates.yamlto their r4.4 content, updating.sync-manifest.yamlwith the corresponding blob hashes, and bumpedinfo.x-camara-commonalitiesto0.9.0.info.descriptiontext to r4.4's wording (points tox-camara-commonalities/changelog/release metadata instead of the removed "API Readiness Checklist" document reference).$refto the deprecatedGeneric400/401/403/404responses with the new named catalogue fromCAMARA_common.yaml(BadRequest400,Unauthenticated401,PermissionDenied403,NotFound404), and removed this API's localGeneric400/403/404overrides, which existed only to work around a P-040 bundling name collision that no longer applies.ALREADY_EXISTS/INCOMPATIBLE_STATE) to theCAMARA_common.yamlTrack-2 template (ErrorInfoallOf'd with a local status/code enum restriction), matching the r4.4 Design Guide's required pattern for locally-defined error responses.SubscriptionRequest.sinknow$refs the sharedSinkschema inCAMARA_event_common.yamlinstead of duplicating its string/format/pattern/maxLength definition locally.SinkCredentialnowallOf's the commonAccessTokenCredentialand locally restrictscredentialTypetoACCESSTOKENonly (PRIVATE_KEY_JWT, newly supported by Commonalities r4.4, is intentionally not offered by this API); the localAccessTokenCredentialschema was removed as it's no longer needed.EVENT_NOTIFICATIONS_NOT_SUPPORTEDresponse (components/responses/EventNotificationsNotSupported422) to bothcreateAppInstanceandcreateAppDeployment, documenting that providingsubscriptionRequest.sinkwhen the Edge Cloud Platform cannot deliver notifications results in this error without creating the resource.additionalProperties: falseto every request body schema (and inline request body) with no composition at its own top level, per the r4.4 Design Guide's Appendix B strictness guidance.Which issue(s) this PR fixes:
Fixes #
Special notes for reviewers:
Not addressed in this PR (tracked separately):
SinkCredential/AccessTokenCredential/sink/SubscriptionConfigagainst the r4.4CAMARA_event_common.yamlequivalents (Sink,SinkCredentialw/PRIVATE_KEY_JWT,ConfigBase) is only partially resolved here.sinkback inAppInstanceInfo/AppDeploymentInfoon success, as newly recommended by the Guide, is a separate schema change and is not part of this PR.AppManifestis deliberately excluded from theadditionalProperties: falsechange: it'sallOf'd intoAppManifestInfo(adding theappIdproperty), and restricting it directly would make thatallOfcombination invalid under standard JSON Schema semantics.Changelog input
Additional documentation