Align qos-provisioning.yaml with CAMARA Commonalities r4.3 - #580
Conversation
- Add mandatory info.description templates (P-026): authorization-and-authentication, additional-error-responses, request-body-strictness with HTML comment markers - Update x-camara-commonalities to 0.8.0 - Replace x-correlator parameter/header with $refs to CAMARA_common.yaml - Replace Device, DeviceResponse, ErrorInfo with $refs to CAMARA_common.yaml; remove unused local copies of NetworkAccessIdentifier, PhoneNumber, DeviceIpv4Address, SingleIpv4Address, DeviceIpv6Address, Port - Replace SinkCredential and AccessTokenCredential with $refs to CAMARA_event_common.yaml; add PrivateKeyJWTCredential $ref; remove PlainCredential and RefreshTokenCredential (r4.3 deprecation) - Fix CloudEvent: replace inline definition with allOf + $ref to CAMARA_event_common.yaml; add ApiEventType schema (P-020, P-015) - Fix S-030: correct EventStatusChanged.data required array (qosStatus -> status) - Replace Generic4xx/5xx error responses with $refs to CAMARA_common.yaml - Add missing maxLength constraints: AssignmentId (36), sink (2048), startedAt (64) — resolves remaining S-312 warnings
- Operations requiring NOT_FOUND + IDENTIFIER_NOT_FOUND (POST /qos-assignments,
POST /retrieve-qos-assignment) now reference CAMARA_common.yaml#Generic404
directly at the path level, replacing the former GenericDevice404 local alias
- Operations requiring only NOT_FOUND (GET and DELETE /qos-assignments/{assignmentId})
now reference a local NotFound404 response, replacing the former Generic404 alias
- Remove the Generic404 and GenericDevice404 local aliases from components/responses
- Rename DeviceIpv4Addr schema reference to DeviceIpv4Address (createQosAssignment, getQosAssignmentByDevice) - Quote OAuth scope strings in Missing access token scope scenarios (all four files) - Add _400.10_invalid_x-correlator scenario to all four feature files - Add _429.1_too_many_requests scenario to all four feature files - Update createQosAssignment invalid-credential scenario: PLAIN/REFRESHTOKEN removed from SinkCredential enum in r4.3, so expected error code changes from INVALID_CREDENTIAL to INVALID_ARGUMENT; update comment accordingly
|
Reviewed together with #579 (the sibling
Happy to reconcile alternatively in #579 once we agreed on the direction. |
|
@camaraproject/quality-on-demand_codeowners do we know when @jlurien will be back to address the remaining points of this PR? I can offer to take the points and address them with dedicated commits. Regarding the "component reuse" we had agreed to reference the common file already at each use occurrence, not via a local proxy component, right? |
- Rename local CloudEvent schema to QosProvisioningNotificationEvent and ApiEventType to QosProvisioningEventType to eliminate bundler name collision with CAMARA_event_common.yaml envelope - Add CAMARA:MANDATORY:identifying-device-from-access-token:BEGIN/END markers and align prose with canonical template; keep QOS_PROFILE_NOT_APPLICABLE bullet outside the mandatory block - Replace local proxy alias components (Device, DeviceResponse, ErrorInfo, SinkCredential, AccessTokenCredential, PrivateKeyJWTCredential) with direct $ref paths to CAMARA_common.yaml and CAMARA_event_common.yaml at each use-site
|
@hdamker Thanks for the detailed review Already addressed in recent commits on this branch: Issue 3 — PRIVATE_KEY_JWT depth: PRIVATE_KEY_JWT_NOT_CONFIGURED is now documented in the createAssignment 422 response (with a named example), and the info.description prose clarifies that sinkCredential.credentialType MUST be ACCESSTOKEN or PRIVATE_KEY_JWT. Being addressed now: Issue 1 — CloudEvent naming (blocker): Renaming the local event container schema from CloudEvent to QosProvisioningNotificationEvent, and ApiEventType to QosProvisioningEventType, to eliminate the bundler collision. |
|
Sorry, I did not pushed the commit |
hdamker
left a comment
There was a problem hiding this comment.
@jlurien the PR looks good to me now. Below I suggested the four blank line to enable correct rendering in swagger. Beyond that I recognized that you kept some "proxy" components locally, e.g. x-correlator header and parameter which are also defined in CAMARA_common.yaml. That could be intentional, especially to keep local and common error responses in one place, so nothing what I suggest here.
Co-authored-by: Herbert Damker <herbert.damker@telekom.de>
Co-authored-by: Herbert Damker <herbert.damker@telekom.de>
Co-authored-by: Herbert Damker <herbert.damker@telekom.de>
Co-authored-by: Herbert Damker <herbert.damker@telekom.de>
…h use-site Replace every use-site that pointed to a local-proxy component with a direct $ref to the canonical common YAML file, then delete the now-unused proxy definitions: - securitySchemes: openId and notificationsBearerAuth now reference CAMARA_common.yaml and CAMARA_event_common.yaml respectively. - x-correlator parameter and header: all 13 use-sites updated; local parameters.x-correlator, headers.x-correlator, and the headers: section removed. - Generic400/401/410/422/429: all 17 response use-sites updated; the 5 thin-proxy response definitions removed. API-specific responses (CreateAssignment400, PermissionDenied403, NotFound404, AssignmentConflict409, CreateAssignment422) are unchanged.
|
@hdamker, addressed your remaining suggestions from the 2026-07-24 review: All local-proxy components have been removed. Every use-site in
API-specific responses ( |
|
@RandyLevensalor @eric-murray would you (re-)review and approve as well? |
What type of PR is this?
enhancement/feature
What this PR does / why we need it:
Aligns
qos-provisioning.yamlwith CAMARA Commonalities r4.3 (0.8.0).Info description templates (P-026)
info.descriptiontemplate blocks with their HTML comment markers:authorization-and-authentication,additional-error-responses, andrequest-body-strictness(new in r4.3).x-camara-commonalitiesfrom0.6to0.8.0.Schema $ref migration — CAMARA_common.yaml
Device,DeviceResponse, andErrorInfoschemas with$refaliases pointing tocode/common/CAMARA_common.yaml.x-correlatorparameter and header definitions with$refs to the common file.XCorrelator,NetworkAccessIdentifier,PhoneNumber,DeviceIpv4Address,SingleIpv4Address,DeviceIpv6Address, andPort.Generic4xx/5xxerror responses with$refs toCAMARA_common.yaml; API-specific responses (CreateAssignment400,AssignmentConflict409,CreateAssignment422) are retained locally.Schema $ref migration — CAMARA_event_common.yaml (P-020, P-015)
CloudEventdefinition with anallOfcomposition referencingcode/common/CAMARA_event_common.yaml#/components/schemas/CloudEvent, extended with a localApiEventTypeschema (single named enum, as required by P-015).SinkCredentialandAccessTokenCredentialwith$refaliases toCAMARA_event_common.yaml; addsPrivateKeyJWTCredentialas a$refalias.PlainCredentialandRefreshTokenCredential(deprecated/removed in Commonalities r4.3).Bug fix (S-030)
EventStatusChanged.data.required:qosStatus→status, aligning the required array with the actual property name.Schema constraints (S-312, S-311, S-310)
Adds
maxLength: 36toAssignmentId(UUID format).Adds
maxLength: 2048toBaseAssignmentInfo.sink(URI).Adds
maxLength: 64toAssignmentInfo.startedAt(date-time).Remaining S-312/S-311/S-310 warnings on migrated schemas (ErrorInfo, CloudEvent, credential types) are resolved transitively through the common-file $refs.
Test plan updated
Which issue(s) this PR fixes:
Fixes #572
Special notes for reviewers:
{PLAIN, ACCESSTOKEN, REFRESHTOKEN}to{ACCESSTOKEN, PRIVATE_KEY_JWT}as defined inCAMARA_event_common.yamlr4.3. This is a breaking change for consumers usingPLAINorREFRESHTOKENcredential types; those types were already marked "MUST not be used" in the previous version.Changelog input
Additional documentation
This section can be blank.