API Change Guard
OData / OpenAPI compatibility, consumer impact, migration readiness and successor guidance
Content reviewed September 26, 2026
- Engine
- API_CHANGE_GUARD
- Domain
- Integration
- Version
- 2.2.0
- Target releases
- S4H_2022, S4H_2023, S4HANA_CLOUD_2402, S4HANA_CLOUD_2408
- Accepted formats
- JSON, XML, TEXT
Input contract
Two API specifications of the same service — baseline (current) and candidate (target release): OpenAPI 2/3 (JSON or YAML) or OData EDMX V2/V4 XML — supplied as {'baseline': …, 'candidate': …} in raw_content / configuration or as artifacts named *baseline* / *candidate*; optional 'integrations' registry for consumer impact.
Required input
- baseline specification
- candidate specification
Finding codes
Finding codes (28)
API_BREAKING_ENDPOINT_REMOVEDDefault severity: CriticalCategory: API CompatibilityEndpoint removed
Remediation: Restore the path or publish a new major API version; migrate every consumer in the integration registry before retiring the old path.
API_BREAKING_ENTITY_REMOVEDDefault severity: CriticalCategory: API CompatibilityOData entity type removed
Remediation: Restore the entity type or introduce a new service version; adapt consumer mappings.
API_BREAKING_ENTITYSET_REMOVEDDefault severity: CriticalCategory: API CompatibilityOData entity set removed
Remediation: Re-expose the entity set in the service definition / binding or version the OData service.
API_BREAKING_FIELD_REMOVEDDefault severity: CriticalCategory: API CompatibilityProperty / field removed
Remediation: Keep the property (mark deprecated) until all consumers stop reading it, or version the API.
API_BREAKING_KEY_CHANGEDDefault severity: CriticalCategory: API CompatibilityOData entity key changed
Remediation: Keep the entity key stable; a key change breaks every key-based read/update URL. Introduce a new entity type / service version instead.
API_BREAKING_OPERATION_REMOVEDDefault severity: CriticalCategory: API CompatibilityOperation removed
Remediation: Keep the HTTP operation (deprecate first) or version the API; update consumers before removal.
API_BREAKING_SECURITY_CHANGEDDefault severity: CriticalCategory: API CompatibilitySecurity scheme or requirement changed
Remediation: Keep the previous authentication scheme / scopes available in parallel, update the Communication Arrangement / OAuth clients of every consumer before switching, then retire the old scheme.
API_BREAKING_TYPE_CHANGEDDefault severity: CriticalCategory: API CompatibilityIncompatible type change
Remediation: Revert to the previous type or add a new property with the new type; incompatible conversions break deserialisation in consumers.
API_BREAKING_ENUM_RESTRICTEDDefault severity: MajorCategory: API CompatibilityEnum values removed
Remediation: Keep the removed enum values accepted (map them server-side) or version the API.
API_BREAKING_FORMAT_CHANGEDDefault severity: MajorCategory: API CompatibilityType format changed
Remediation: Keep the previous format (e.g. date vs date-time, int32 vs int64) or introduce a new parameter / property; consumers serialise and validate against the old format.
API_BREAKING_MAX_LENGTH_DECREASEDDefault severity: MajorCategory: API CompatibilityMaximum length decreased
Remediation: Keep the previous MaxLength; shorter limits reject existing consumer data.
API_BREAKING_NAVIGATION_REMOVEDDefault severity: MajorCategory: API CompatibilityOData navigation property removed
Remediation: Restore the navigation property (association) or version the service; consumers using $expand or navigation paths fail.
API_BREAKING_PARAM_REMOVEDDefault severity: MajorCategory: API CompatibilityRequest parameter removed
Remediation: Keep accepting the parameter (ignore it server-side) until every consumer stopped sending it, or version the operation; path parameters change the URL template.
API_BREAKING_PARAM_RENAMEDDefault severity: MajorCategory: API CompatibilityRequired request parameter renamed
Remediation: Accept the old parameter name as an alias (or keep both) and deprecate it before removal; consumers still send the previous name.
API_BREAKING_PROPERTY_RENAMEDDefault severity: MajorCategory: API CompatibilityProperty renamed
Remediation: Keep the previous property name available (alias / computed field) until every consumer mapping uses the new name, or version the API; consumers still read and write the old name.
API_BREAKING_REQUIRED_PARAM_ADDEDDefault severity: MajorCategory: API CompatibilityNew required parameter
Remediation: Make the new parameter optional with a server-side default, or version the operation.
API_BREAKING_REQUIRED_PROPERTY_ADDEDDefault severity: MajorCategory: API CompatibilityNew required property
Remediation: Make the property optional (nullable / default value) so existing payloads remain valid.
API_BREAKING_RESPONSE_PROPERTY_REMOVEDDefault severity: MajorCategory: API CompatibilityResponse property removed
Remediation: Keep returning the property (mark it deprecated) until consumers no longer read it, or version the response.
API_BREAKING_RESPONSE_STATUS_REMOVEDDefault severity: MajorCategory: API CompatibilityResponse status code removed
Remediation: Keep the documented status code or version the operation; consumers branch on the success status.
API_COVERAGE_GAP_UNRESOLVED_CONSUMPTIONDefault severity: MajorCategory: API CompatibilityRegistered consumption not defined in the baseline specification
Remediation: Correct the integration registry entry (endpoint, entity set, field or operation) or compare against the baseline specification that defines it; consumption the baseline does not define cannot be assessed for breaking impact.
API_COVERAGE_GAP_UNTESTED_IMPACTDefault severity: MajorCategory: API CompatibilityBreaking impact on an integration without a covering client test
Remediation: Register a client / integration test that exercises the broken elements for the affected integration and run it against the candidate before the release; untested breaking impact cannot be verified.
API_DEPRECATION_WARNINGDefault severity: MinorCategory: API CompatibilityElement marked deprecated
Remediation: Plan consumer migration to the successor before the announced removal date.
API_SUCCESSOR_AVAILABLEDefault severity: MinorCategory: API CompatibilityAPI retired in the knowledge snapshot — successor available
Remediation: Plan the migration of every registered consumer to the successor API named in the finding (knowledge snapshot) instead of adapting consumers to the retired API.
API_NON_BREAKING_ENDPOINT_ADDEDDefault severity: InfoCategory: API CompatibilityEndpoint added
Remediation: No action for existing consumers; document the new endpoint.
API_NON_BREAKING_ENUM_EXPANDEDDefault severity: InfoCategory: API CompatibilityEnum values added
Remediation: Verify consumers handle unknown enum values gracefully.
API_NON_BREAKING_MAX_LENGTH_INCREASEDDefault severity: InfoCategory: API CompatibilityMaximum length increased
Remediation: Check that consumers storing the value have sufficient field length.
API_NON_BREAKING_OPERATION_ADDEDDefault severity: InfoCategory: API CompatibilityOperation added
Remediation: No action for existing consumers; document the new operation.
API_NON_BREAKING_OPTIONAL_PROPERTY_ADDEDDefault severity: InfoCategory: API CompatibilityOptional property added
Remediation: No action; consumers must tolerate unknown properties (tolerant reader).
Input validation codes (5)
API_ARCHIVE_REJECTEDDefault severity: MajorCategory: INPUT_VALIDATIONArchive rejected by ingestion safety limits
Remediation: The archive exceeded the 100:1 expansion ratio, 500 MB total size, entry-count or 2-level nesting limit, or contained path traversal / encrypted members. Upload a flat, unencrypted archive of the export files. No verdict was produced. Re-export the artifact in one of the formats accepted by API Change Guard (JSON, XML, TEXT) and re-run the analysis.
API_INVALID_INPUTDefault severity: MajorCategory: INPUT_VALIDATIONArtifact does not match the engine input contract
Remediation: Provide the artifact type documented for this engine; unrelated or structurally invalid documents are rejected. No verdict was produced. Re-export the artifact in one of the formats accepted by API Change Guard (JSON, XML, TEXT) and re-run the analysis.
API_PARSE_ERRORDefault severity: MajorCategory: INPUT_VALIDATIONArtifact could not be parsed
Remediation: Fix the syntax error at the reported line/column (or re-export the file unmodified from SAP). No verdict was produced. Re-export the artifact in one of the formats accepted by API Change Guard (JSON, XML, TEXT) and re-run the analysis.
API_PAYLOAD_TOO_LARGEDefault severity: MajorCategory: INPUT_VALIDATIONArtifact exceeds the size limit
Remediation: Split the export (e.g. per package, company code or date range) so each upload stays under the service payload limit. No verdict was produced. Re-export the artifact in one of the formats accepted by API Change Guard (JSON, XML, TEXT) and re-run the analysis.
API_INSUFFICIENT_INPUTDefault severity: InfoCategory: INPUT_VALIDATIONRequired input missing
Remediation: Supply every input the engine's contract marks as required (see the engine catalog entry). No verdict was produced. Re-export the artifact in one of the formats accepted by API Change Guard (JSON, XML, TEXT) and re-run the analysis.