From 1f66a6a26d06ba7f30c4d97fa01d98f18e1b163e Mon Sep 17 00:00:00 2001 From: Herbert Damker <52109189+hdamker@users.noreply.github.com> Date: Wed, 23 Sep 2026 20:46:11 +0200 Subject: [PATCH 1/8] fix: bump x-camara-commonalities to 0.9.0 and re-sync error-response template --- code/API_definitions/geofencing-subscriptions.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/API_definitions/geofencing-subscriptions.yaml b/code/API_definitions/geofencing-subscriptions.yaml index 573369e9..6f7d2fcc 100644 --- a/code/API_definitions/geofencing-subscriptions.yaml +++ b/code/API_definitions/geofencing-subscriptions.yaml @@ -107,11 +107,12 @@ info: - Check with the API provider whether a unique "secondary" phone number is already associated with each device and use the secondary phone number to identify the intended device if available. + # Additional CAMARA error responses The list of error codes in this API specification is not exhaustive. Therefore the API specification MAY not document some non-mandatory error statuses as indicated in `CAMARA API Design Guide`. - Please refer to the `CAMARA_common.yaml` of the Commonalities Release associated to this API version for a complete list of error responses. The applicable Commonalities Release can be identified in the `API Readiness Checklist` document associated to this API version. + Please refer to the `CAMARA_common.yaml` of the Commonalities Release associated to this API version for a complete list of error responses. The applicable Commonalities Release can be identified from the `x-camara-commonalities` field, the changelog and the metadata of the released API version. As a specific rule, error `501 - NOT_IMPLEMENTED` can be only a possible error response if it is explicitly documented in the API. @@ -130,7 +131,7 @@ info: license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html - x-camara-commonalities: 0.8.0 + x-camara-commonalities: 0.9.0 externalDocs: description: Product documentation at CAMARA url: https://github.com/camaraproject/DeviceLocation From 1f8e7d38ed981c8c0e7c56aef63b4230023cee9a Mon Sep 17 00:00:00 2001 From: Herbert Damker <52109189+hdamker@users.noreply.github.com> Date: Wed, 23 Sep 2026 20:47:30 +0200 Subject: [PATCH 2/8] fix(geofencing-subscriptions): migrate to Commonalities r4.4 catalogue responses --- .../geofencing-subscriptions.yaml | 256 +++--------------- 1 file changed, 35 insertions(+), 221 deletions(-) diff --git a/code/API_definitions/geofencing-subscriptions.yaml b/code/API_definitions/geofencing-subscriptions.yaml index 6f7d2fcc..3d72bcb0 100644 --- a/code/API_definitions/geofencing-subscriptions.yaml +++ b/code/API_definitions/geofencing-subscriptions.yaml @@ -209,15 +209,15 @@ paths: x-correlator: $ref: "../common/CAMARA_common.yaml#/components/headers/x-correlator" "400": - $ref: "#/components/responses/Generic400" + $ref: "../common/CAMARA_common.yaml#/components/responses/BadRequestWithRange400" "401": - $ref: "#/components/responses/Generic401" + $ref: "../common/CAMARA_common.yaml#/components/responses/Unauthenticated401" "403": - $ref: "#/components/responses/Generic403" + $ref: "../common/CAMARA_common.yaml#/components/responses/PermissionDenied403" "410": - $ref: "#/components/responses/Generic410" + $ref: "../common/CAMARA_event_common.yaml#/components/responses/SinkGone410" "429": - $ref: "#/components/responses/Generic429" + $ref: "#/components/responses/TooManyRequestsWithQuota429" security: - notificationsBearerAuth: [] - {} @@ -241,15 +241,15 @@ paths: schema: $ref: "#/components/schemas/SubscriptionAsync" "400": - $ref: "#/components/responses/CreateSubscriptionBadRequest400" + $ref: "../common/CAMARA_event_common.yaml#/components/responses/CreateSubscriptionBadRequest400" "401": - $ref: "#/components/responses/Generic401" + $ref: "../common/CAMARA_common.yaml#/components/responses/Unauthenticated401" "403": $ref: "#/components/responses/SubscriptionPermissionDenied403" "422": - $ref: "#/components/responses/CreateSubscriptionUnprocessableEntity422" + $ref: "#/components/responses/CreateGeofencingSubscriptionDevice422" "429": - $ref: "#/components/responses/Generic429" + $ref: "#/components/responses/TooManyRequestsWithQuota429" get: tags: - Geofencing Subscriptions @@ -276,9 +276,9 @@ paths: items: $ref: "#/components/schemas/Subscription" "400": - $ref: "#/components/responses/Generic400" + $ref: "../common/CAMARA_common.yaml#/components/responses/BadRequestWithRange400" "401": - $ref: "#/components/responses/Generic401" + $ref: "../common/CAMARA_common.yaml#/components/responses/Unauthenticated401" "403": $ref: "#/components/responses/SubscriptionPermissionDenied403" /subscriptions/{subscriptionId}: @@ -305,13 +305,13 @@ paths: schema: $ref: "#/components/schemas/Subscription" "400": - $ref: "#/components/responses/SubscriptionIdRequired" + $ref: "../common/CAMARA_event_common.yaml#/components/responses/SubscriptionIdRequired400" "401": - $ref: "#/components/responses/Generic401" + $ref: "../common/CAMARA_common.yaml#/components/responses/Unauthenticated401" "403": $ref: "#/components/responses/SubscriptionPermissionDenied403" "404": - $ref: "#/components/responses/Generic404" + $ref: "../common/CAMARA_common.yaml#/components/responses/NotFound404" delete: tags: - Geofencing Subscriptions @@ -340,13 +340,13 @@ paths: schema: $ref: "#/components/schemas/SubscriptionAsync" "400": - $ref: "#/components/responses/SubscriptionIdRequired" + $ref: "../common/CAMARA_event_common.yaml#/components/responses/SubscriptionIdRequired400" "401": - $ref: "#/components/responses/Generic401" + $ref: "../common/CAMARA_common.yaml#/components/responses/Unauthenticated401" "403": $ref: "#/components/responses/SubscriptionPermissionDenied403" "404": - $ref: "#/components/responses/Generic404" + $ref: "../common/CAMARA_common.yaml#/components/responses/NotFound404" components: securitySchemes: openId: @@ -879,164 +879,9 @@ components: $ref: "#/components/schemas/HTTPSettings" responses: - CreateSubscriptionBadRequest400: - description: Problem with the client request. - headers: - x-correlator: - $ref: "../common/CAMARA_common.yaml#/components/headers/x-correlator" - content: - application/json: - schema: - allOf: - - $ref: "#/components/schemas/ErrorInfo" - - type: object - properties: - status: - enum: - - 400 - code: - enum: - - INVALID_ARGUMENT - - INVALID_CREDENTIAL - - INVALID_PROTOCOL - - INVALID_TOKEN - - INVALID_SINK - examples: - GENERIC_400_INVALID_ARGUMENT: - value: - status: 400 - code: INVALID_ARGUMENT - message: Client specified an invalid argument, request body or query param. - GENERIC_400_INVALID_PROTOCOL: - value: - status: 400 - code: INVALID_PROTOCOL - message: Only HTTP is supported. - GENERIC_400_INVALID_CREDENTIAL: - value: - status: 400 - code: INVALID_CREDENTIAL - message: Only Access token or Private key JWT are supported - GENERIC_400_INVALID_SINK: - description: Invalid sink value - value: - status: 400 - code: INVALID_SINK - message: sink not valid for the specified protocol - Generic400: - $ref: '../common/CAMARA_common.yaml#/components/responses/Generic400' - SubscriptionIdRequired: - description: Problem with the client request - headers: - x-correlator: - $ref: "../common/CAMARA_common.yaml#/components/headers/x-correlator" - content: - application/json: - schema: - allOf: - - $ref: "#/components/schemas/ErrorInfo" - - type: object - properties: - status: - enum: - - 400 - code: - enum: - - INVALID_ARGUMENT - examples: - GENERIC_400_INVALID_ARGUMENT: - summary: Schema validation failed - value: - status: 400 - code: INVALID_ARGUMENT - message: Client specified an invalid argument, request body or query param. - GENERIC_400_SUBSCRIPTION_ID_REQUIRED: - summary: The subscription id is required - value: - status: 400 - code: INVALID_ARGUMENT - message: "Expected property is missing: subscriptionId" - Generic401: - $ref: '../common/CAMARA_common.yaml#/components/responses/Generic401' SubscriptionPermissionDenied403: $ref: '../common/CAMARA_event_common.yaml#/components/responses/SubscriptionPermissionDenied403' - Generic403: - description: Client does not have sufficient permission - headers: - x-correlator: - $ref: "../common/CAMARA_common.yaml#/components/headers/x-correlator" - content: - application/json: - schema: - allOf: - - $ref: "#/components/schemas/ErrorInfo" - - type: object - properties: - status: - enum: - - 403 - code: - enum: - - PERMISSION_DENIED - examples: - GENERIC_403_PERMISSION_DENIED: - description: Permission denied. OAuth2 token access does not have the required scope or when the user fails operational security - value: - status: 403 - code: PERMISSION_DENIED - message: Client does not have sufficient permissions to perform this action. - Generic404: - description: Not found - headers: - x-correlator: - $ref: "../common/CAMARA_common.yaml#/components/headers/x-correlator" - content: - application/json: - schema: - allOf: - - $ref: "#/components/schemas/ErrorInfo" - - type: object - properties: - status: - enum: - - 404 - code: - enum: - - NOT_FOUND - examples: - GENERIC_404_NOT_FOUND: - description: Resource is not found - value: - status: 404 - code: NOT_FOUND - message: The specified resource is not found. - Generic410: - description: Gone - headers: - x-correlator: - $ref: "../common/CAMARA_common.yaml#/components/headers/x-correlator" - content: - application/json: - schema: - allOf: - - $ref: "#/components/schemas/ErrorInfo" - - type: object - properties: - status: - enum: - - 410 - code: - enum: - - GONE - examples: - GENERIC_410_GONE: - description: Use in notifications flow to allow API Consumer to indicate that its callback is no longer available - value: - status: 410 - code: GONE - message: - Access to the target resource is no longer available. - CreateSubscriptionUnprocessableEntity422: + CreateGeofencingSubscriptionDevice422: description: Unprocessable Entity headers: x-correlator: @@ -1045,7 +890,7 @@ components: application/json: schema: allOf: - - $ref: "#/components/schemas/ErrorInfo" + - $ref: "../common/CAMARA_common.yaml#/components/schemas/ErrorInfo" - type: object properties: status: @@ -1053,50 +898,27 @@ components: - 422 code: enum: + - SERVICE_NOT_APPLICABLE - MISSING_IDENTIFIER + - UNSUPPORTED_IDENTIFIER + - UNNECESSARY_IDENTIFIER - MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED - PRIVATE_KEY_JWT_NOT_CONFIGURED - - SERVICE_NOT_APPLICABLE - - UNNECESSARY_IDENTIFIER - - UNSUPPORTED_IDENTIFIER - GEOFENCING_SUBSCRIPTIONS.AREA_NOT_COVERED - GEOFENCING_SUBSCRIPTIONS.INVALID_AREA examples: GENERIC_422_SERVICE_NOT_APPLICABLE: - description: Service not applicable for the provided identifier - value: - status: 422 - code: SERVICE_NOT_APPLICABLE - message: The service is not available for the provided identifier. - GENERIC_422_MISSING_IDENTIFIER: - description: An identifier is not included in the request and the device or phone number identification cannot be derived from the 3-legged access token - value: - status: 422 - code: MISSING_IDENTIFIER - message: The device cannot be identified. + $ref: "../common/CAMARA_common.yaml#/components/examples/GENERIC_422_SERVICE_NOT_APPLICABLE" + GENERIC_422_MISSING_IDENTIFIER_DEVICE: + $ref: "../common/CAMARA_common.yaml#/components/examples/GENERIC_422_MISSING_IDENTIFIER_DEVICE" + GENERIC_422_UNSUPPORTED_IDENTIFIER_DEVICE: + $ref: "../common/CAMARA_common.yaml#/components/examples/GENERIC_422_UNSUPPORTED_IDENTIFIER_DEVICE" + GENERIC_422_UNNECESSARY_IDENTIFIER_DEVICE: + $ref: "../common/CAMARA_common.yaml#/components/examples/GENERIC_422_UNNECESSARY_IDENTIFIER_DEVICE" GENERIC_422_MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED: - value: - status: 422 - code: MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED - message: Multi event types subscription not managed. + $ref: "../common/CAMARA_event_common.yaml#/components/examples/GENERIC_422_MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED" GENERIC_422_PRIVATE_KEY_JWT_NOT_CONFIGURED: - description: Private key JWT sink credential type is used but no configuration was pre-shared - value: - status: 422 - code: PRIVATE_KEY_JWT_NOT_CONFIGURED - message: No JWK Set configured for PRIVATE_KEY_JWT authentication. - GENERIC_422_UNNECESSARY_IDENTIFIER: - description: An explicit identifier is provided when a device or phone number has already been identified from the access token - value: - status: 422 - code: UNNECESSARY_IDENTIFIER - message: The device is already identified by the access token. - GENERIC_422_UNSUPPORTED_IDENTIFIER: - description: None of the provided identifiers is supported by the implementation - value: - status: 422 - code: UNSUPPORTED_IDENTIFIER - message: The identifier provided is not supported. + $ref: "../common/CAMARA_event_common.yaml#/components/examples/GENERIC_422_PRIVATE_KEY_JWT_NOT_CONFIGURED" GEOFENCING_422_AREA_NOT_COVERED: summary: The area cannot be covered description: The system is not able cover the requested area @@ -1111,7 +933,7 @@ components: status: 422 code: GEOFENCING_SUBSCRIPTIONS.INVALID_AREA message: "The requested area is too small" - Generic429: + TooManyRequestsWithQuota429: description: Too Many Requests headers: x-correlator: @@ -1120,7 +942,7 @@ components: application/json: schema: allOf: - - $ref: "#/components/schemas/ErrorInfo" + - $ref: "../common/CAMARA_common.yaml#/components/schemas/ErrorInfo" - type: object properties: status: @@ -1132,17 +954,9 @@ components: - TOO_MANY_REQUESTS examples: GENERIC_429_QUOTA_EXCEEDED: - description: Request is rejected due to exceeding a business quota limit - value: - status: 429 - code: QUOTA_EXCEEDED - message: Out of resource quota. + $ref: "../common/CAMARA_common.yaml#/components/examples/GENERIC_429_QUOTA_EXCEEDED" GENERIC_429_TOO_MANY_REQUESTS: - description: Access to the API has been temporarily blocked due to rate or spike arrest limits being reached - value: - status: 429 - code: TOO_MANY_REQUESTS - message: Rate limit reached. + $ref: "../common/CAMARA_common.yaml#/components/examples/GENERIC_429_TOO_MANY_REQUESTS" examples: REQUEST_CIRCLE_AREA_ENTERED: description: A sample geofence for entering for a circle area. From a67016084efe40435e007f9e24a8fb1db210a532 Mon Sep 17 00:00:00 2001 From: Herbert Damker <52109189+hdamker@users.noreply.github.com> Date: Wed, 23 Sep 2026 20:47:53 +0200 Subject: [PATCH 3/8] fix(geofencing-subscriptions): widen the create-subscription 422 to the common code set --- code/API_definitions/geofencing-subscriptions.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/API_definitions/geofencing-subscriptions.yaml b/code/API_definitions/geofencing-subscriptions.yaml index 3d72bcb0..1f4ffc61 100644 --- a/code/API_definitions/geofencing-subscriptions.yaml +++ b/code/API_definitions/geofencing-subscriptions.yaml @@ -903,6 +903,7 @@ components: - UNSUPPORTED_IDENTIFIER - UNNECESSARY_IDENTIFIER - MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED + - MULTIEVENT_COMBINATION_TEMPORARILY_NOT_SUPPORTED - PRIVATE_KEY_JWT_NOT_CONFIGURED - GEOFENCING_SUBSCRIPTIONS.AREA_NOT_COVERED - GEOFENCING_SUBSCRIPTIONS.INVALID_AREA @@ -917,6 +918,8 @@ components: $ref: "../common/CAMARA_common.yaml#/components/examples/GENERIC_422_UNNECESSARY_IDENTIFIER_DEVICE" GENERIC_422_MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED: $ref: "../common/CAMARA_event_common.yaml#/components/examples/GENERIC_422_MULTIEVENT_SUBSCRIPTION_NOT_SUPPORTED" + GENERIC_422_MULTIEVENT_COMBINATION_TEMPORARILY_NOT_SUPPORTED: + $ref: "../common/CAMARA_event_common.yaml#/components/examples/GENERIC_422_MULTIEVENT_COMBINATION_TEMPORARILY_NOT_SUPPORTED" GENERIC_422_PRIVATE_KEY_JWT_NOT_CONFIGURED: $ref: "../common/CAMARA_event_common.yaml#/components/examples/GENERIC_422_PRIVATE_KEY_JWT_NOT_CONFIGURED" GEOFENCING_422_AREA_NOT_COVERED: From c9fa7de290e6f9ad2b0c4006b7554126948b4ea7 Mon Sep 17 00:00:00 2001 From: Herbert Damker <52109189+hdamker@users.noreply.github.com> Date: Wed, 23 Sep 2026 20:48:36 +0200 Subject: [PATCH 4/8] fix(geofencing-subscriptions): adopt common ConfigBase, Sink schema and ErrorInfo --- .../geofencing-subscriptions.yaml | 55 +++++-------------- 1 file changed, 15 insertions(+), 40 deletions(-) diff --git a/code/API_definitions/geofencing-subscriptions.yaml b/code/API_definitions/geofencing-subscriptions.yaml index 1f4ffc61..b7365865 100644 --- a/code/API_definitions/geofencing-subscriptions.yaml +++ b/code/API_definitions/geofencing-subscriptions.yaml @@ -364,9 +364,6 @@ components: schema: $ref: "#/components/schemas/SubscriptionId" schemas: - ErrorInfo: - $ref: '../common/CAMARA_common.yaml#/components/schemas/ErrorInfo' - SubscriptionRequest: description: The request for creating an event-type event subscription. type: object @@ -379,12 +376,7 @@ components: protocol: $ref: "#/components/schemas/Protocol" sink: - type: string - format: uri - maxLength: 2048 - pattern: ^https:\/\/.+$ - description: The address to which events shall be delivered using the selected protocol. - example: "https://endpoint.example.com/sink" + $ref: "../common/CAMARA_event_common.yaml#/components/schemas/Sink" sinkCredential: $ref: "#/components/schemas/SinkCredential" types: @@ -408,31 +400,19 @@ components: Config: description: | - Implementation-specific configuration parameters are needed by the subscription manager for acquiring events. - In CAMARA we have predefined attributes like `subscriptionExpireTime`, `subscriptionMaxEvents`, `initialEvent`. - type: object - properties: - subscriptionExpireTime: - type: string - format: date-time - maxLength: 64 - example: "2023-01-17T13:18:23.682Z" - description: The subscription expiration time (in date-time format) requested by the API consumer. It must follow [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and must have time zone. - subscriptionMaxEvents: - type: integer - format: int32 - description: | - Identifies the maximum number of event reports to be generated (>=1) requested by the API consumer - Once this number is reached, the subscription ends. - Note on combined usage of `initialEvent` and `subscriptionMaxEvents`: - If an event is triggered following `initialEvent` set to `true`, this event will be counted towards `subscriptionMaxEvents`. - minimum: 1 - maximum: 1000000 - example: 5 - initialEvent: - type: boolean - description: | - Set to `true` by API consumer if consumer wants to get an event as soon as the subscription is created and current situation reflects event request. - Example: Consumer request area entered event. If consumer sets initialEvent to true and device is already in the geofence, an event is triggered. + Implementation-specific configuration parameters needed by the subscription manager for + acquiring events. Extends `ConfigBase` from `CAMARA_event_common.yaml` with the + predefined, optional `initialEvent` property. + allOf: + - $ref: "../common/CAMARA_event_common.yaml#/components/schemas/ConfigBase" + - type: object + properties: + initialEvent: + type: boolean + description: | + Set to `true` by API consumer if consumer wants to get an event as soon as the subscription is created and current situation reflects event request. + Example: Consumer request area entered event. If consumer sets initialEvent to true and device is already in the geofence, an event is triggered. + An event triggered this way counts towards `subscriptionMaxEvents`. ConfigRequest: description: | @@ -530,12 +510,7 @@ components: protocol: $ref: "#/components/schemas/Protocol" sink: - type: string - format: uri - maxLength: 2048 - pattern: ^https:\/\/.+$ - description: The address to which events shall be delivered using the selected protocol. - example: "https://endpoint.example.com/sink" + $ref: "../common/CAMARA_event_common.yaml#/components/schemas/Sink" types: description: | Camara Event types eligible to be delivered by this subscription. From e7c24311124bb9e69d79831370f9125903aba0aa Mon Sep 17 00:00:00 2001 From: Herbert Damker <52109189+hdamker@users.noreply.github.com> Date: Wed, 23 Sep 2026 20:48:55 +0200 Subject: [PATCH 5/8] fix(geofencing-subscriptions): remove unused schema aliases --- code/API_definitions/geofencing-subscriptions.yaml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/code/API_definitions/geofencing-subscriptions.yaml b/code/API_definitions/geofencing-subscriptions.yaml index b7365865..f061013a 100644 --- a/code/API_definitions/geofencing-subscriptions.yaml +++ b/code/API_definitions/geofencing-subscriptions.yaml @@ -575,18 +575,6 @@ components: Device: $ref: '../common/CAMARA_common.yaml#/components/schemas/Device' - PhoneNumber: - $ref: '../common/CAMARA_common.yaml#/components/schemas/PhoneNumber' - - NetworkAccessIdentifier: - $ref: '../common/CAMARA_common.yaml#/components/schemas/NetworkAccessIdentifier' - - Port: - $ref: '../common/CAMARA_common.yaml#/components/schemas/Port' - - DeviceIpv6Address: - $ref: '../common/CAMARA_common.yaml#/components/schemas/DeviceIpv6Address' - DeviceResponse: $ref: '../common/CAMARA_common.yaml#/components/schemas/DeviceResponse' From 2cb0fe25e25e970f0940dec86e7ed050e2bffe12 Mon Sep 17 00:00:00 2001 From: Herbert Damker <52109189+hdamker@users.noreply.github.com> Date: Wed, 23 Sep 2026 20:49:09 +0200 Subject: [PATCH 6/8] fix: normalize OAS pointer prefixes in geofencing-subscriptions feature file --- .../geofencing-subscriptions.feature | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/Test_definitions/geofencing-subscriptions.feature b/code/Test_definitions/geofencing-subscriptions.feature index 2f694dcd..9a0ccc52 100644 --- a/code/Test_definitions/geofencing-subscriptions.feature +++ b/code/Test_definitions/geofencing-subscriptions.feature @@ -224,11 +224,11 @@ Feature: Camara Geofencing Subscriptions API, vwip - Operations on subscriptions And the response property "$.message" contains a user friendly text Examples: - | device_identifier | oas_spec_schema | - | $.config.subscriptionDetail.device.phoneNumber | /components/schemas/PhoneNumber | - | $.config.subscriptionDetail.device.ipv4Address | /components/schemas/DeviceIpv4Address | - | $.config.subscriptionDetail.device.ipv6Address | /components/schemas/DeviceIpv6Address | - | $.config.subscriptionDetail.device.networkAccessIdentifier | /components/schemas/NetworkAccessIdentifier | + | device_identifier | oas_spec_schema | + | $.config.subscriptionDetail.device.phoneNumber | #/components/schemas/PhoneNumber | + | $.config.subscriptionDetail.device.ipv4Address | #/components/schemas/DeviceIpv4Address | + | $.config.subscriptionDetail.device.ipv6Address | #/components/schemas/DeviceIpv6Address | + | $.config.subscriptionDetail.device.networkAccessIdentifier | #/components/schemas/NetworkAccessIdentifier | # This scenario may happen e.g. with 2-legged access tokens, which do not identify a single device. @geofencing_subscriptions_C01.03_device_not_found @@ -372,7 +372,7 @@ Feature: Camara Geofencing Subscriptions API, vwip - Operations on subscriptions @geofencing_subscriptions_400.8_invalid_x-correlator Scenario: Invalid x-correlator value Given a valid geofencing subscription request body - And the header "x-correlator" does not comply with the OAS schema at "/components/schemas/XCorrelator" + And the header "x-correlator" does not comply with the OAS schema at "#/components/schemas/XCorrelator" When the request "createGeofencingSubscription" is sent Then the response status code is 400 And the response property "$.status" is 400 From ba2090e7d8dae2a3077bacc4fd67a751471eb4e7 Mon Sep 17 00:00:00 2001 From: Herbert Damker <52109189+hdamker@users.noreply.github.com> Date: Thu, 24 Sep 2026 10:08:12 +0200 Subject: [PATCH 7/8] fix(geofencing-subscriptions): use the narrower catalogue responses where extra codes cannot occur --- code/API_definitions/geofencing-subscriptions.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/API_definitions/geofencing-subscriptions.yaml b/code/API_definitions/geofencing-subscriptions.yaml index f061013a..1211ccb9 100644 --- a/code/API_definitions/geofencing-subscriptions.yaml +++ b/code/API_definitions/geofencing-subscriptions.yaml @@ -209,7 +209,7 @@ paths: x-correlator: $ref: "../common/CAMARA_common.yaml#/components/headers/x-correlator" "400": - $ref: "../common/CAMARA_common.yaml#/components/responses/BadRequestWithRange400" + $ref: "../common/CAMARA_common.yaml#/components/responses/BadRequest400" "401": $ref: "../common/CAMARA_common.yaml#/components/responses/Unauthenticated401" "403": @@ -217,7 +217,7 @@ paths: "410": $ref: "../common/CAMARA_event_common.yaml#/components/responses/SinkGone410" "429": - $ref: "#/components/responses/TooManyRequestsWithQuota429" + $ref: "../common/CAMARA_common.yaml#/components/responses/TooManyRequests429" security: - notificationsBearerAuth: [] - {} @@ -276,7 +276,7 @@ paths: items: $ref: "#/components/schemas/Subscription" "400": - $ref: "../common/CAMARA_common.yaml#/components/responses/BadRequestWithRange400" + $ref: "../common/CAMARA_common.yaml#/components/responses/BadRequest400" "401": $ref: "../common/CAMARA_common.yaml#/components/responses/Unauthenticated401" "403": From c08a73df2c4339d3566ec2b0f88a6cb4a2b95bd6 Mon Sep 17 00:00:00 2001 From: Herbert Damker <52109189+hdamker@users.noreply.github.com> Date: Thu, 24 Sep 2026 10:08:12 +0200 Subject: [PATCH 8/8] refactor(geofencing-subscriptions): reference the common SubscriptionPermissionDenied403 directly --- code/API_definitions/geofencing-subscriptions.yaml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/code/API_definitions/geofencing-subscriptions.yaml b/code/API_definitions/geofencing-subscriptions.yaml index 1211ccb9..1312f20c 100644 --- a/code/API_definitions/geofencing-subscriptions.yaml +++ b/code/API_definitions/geofencing-subscriptions.yaml @@ -245,7 +245,7 @@ paths: "401": $ref: "../common/CAMARA_common.yaml#/components/responses/Unauthenticated401" "403": - $ref: "#/components/responses/SubscriptionPermissionDenied403" + $ref: "../common/CAMARA_event_common.yaml#/components/responses/SubscriptionPermissionDenied403" "422": $ref: "#/components/responses/CreateGeofencingSubscriptionDevice422" "429": @@ -280,7 +280,7 @@ paths: "401": $ref: "../common/CAMARA_common.yaml#/components/responses/Unauthenticated401" "403": - $ref: "#/components/responses/SubscriptionPermissionDenied403" + $ref: "../common/CAMARA_event_common.yaml#/components/responses/SubscriptionPermissionDenied403" /subscriptions/{subscriptionId}: get: tags: @@ -309,7 +309,7 @@ paths: "401": $ref: "../common/CAMARA_common.yaml#/components/responses/Unauthenticated401" "403": - $ref: "#/components/responses/SubscriptionPermissionDenied403" + $ref: "../common/CAMARA_event_common.yaml#/components/responses/SubscriptionPermissionDenied403" "404": $ref: "../common/CAMARA_common.yaml#/components/responses/NotFound404" delete: @@ -344,7 +344,7 @@ paths: "401": $ref: "../common/CAMARA_common.yaml#/components/responses/Unauthenticated401" "403": - $ref: "#/components/responses/SubscriptionPermissionDenied403" + $ref: "../common/CAMARA_event_common.yaml#/components/responses/SubscriptionPermissionDenied403" "404": $ref: "../common/CAMARA_common.yaml#/components/responses/NotFound404" components: @@ -842,8 +842,6 @@ components: $ref: "#/components/schemas/HTTPSettings" responses: - SubscriptionPermissionDenied403: - $ref: '../common/CAMARA_event_common.yaml#/components/responses/SubscriptionPermissionDenied403' CreateGeofencingSubscriptionDevice422: description: Unprocessable Entity headers: