Skip to content
ERP Preflight

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 Compatibility

    Endpoint 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 Compatibility

    OData entity type removed

    Remediation: Restore the entity type or introduce a new service version; adapt consumer mappings.

  • API_BREAKING_ENTITYSET_REMOVEDDefault severity: CriticalCategory: API Compatibility

    OData 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 Compatibility

    Property / 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 Compatibility

    OData 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 Compatibility

    Operation removed

    Remediation: Keep the HTTP operation (deprecate first) or version the API; update consumers before removal.

  • API_BREAKING_SECURITY_CHANGEDDefault severity: CriticalCategory: API Compatibility

    Security 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 Compatibility

    Incompatible 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 Compatibility

    Enum values removed

    Remediation: Keep the removed enum values accepted (map them server-side) or version the API.

  • API_BREAKING_FORMAT_CHANGEDDefault severity: MajorCategory: API Compatibility

    Type 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 Compatibility

    Maximum length decreased

    Remediation: Keep the previous MaxLength; shorter limits reject existing consumer data.

  • API_BREAKING_NAVIGATION_REMOVEDDefault severity: MajorCategory: API Compatibility

    OData 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 Compatibility

    Request 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 Compatibility

    Required 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 Compatibility

    Property 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 Compatibility

    New 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 Compatibility

    New required property

    Remediation: Make the property optional (nullable / default value) so existing payloads remain valid.

  • API_BREAKING_RESPONSE_PROPERTY_REMOVEDDefault severity: MajorCategory: API Compatibility

    Response 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 Compatibility

    Response 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 Compatibility

    Registered 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 Compatibility

    Breaking 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 Compatibility

    Element marked deprecated

    Remediation: Plan consumer migration to the successor before the announced removal date.

  • API_SUCCESSOR_AVAILABLEDefault severity: MinorCategory: API Compatibility

    API 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 Compatibility

    Endpoint added

    Remediation: No action for existing consumers; document the new endpoint.

  • API_NON_BREAKING_ENUM_EXPANDEDDefault severity: InfoCategory: API Compatibility

    Enum values added

    Remediation: Verify consumers handle unknown enum values gracefully.

  • API_NON_BREAKING_MAX_LENGTH_INCREASEDDefault severity: InfoCategory: API Compatibility

    Maximum length increased

    Remediation: Check that consumers storing the value have sufficient field length.

  • API_NON_BREAKING_OPERATION_ADDEDDefault severity: InfoCategory: API Compatibility

    Operation added

    Remediation: No action for existing consumers; document the new operation.

  • API_NON_BREAKING_OPTIONAL_PROPERTY_ADDEDDefault severity: InfoCategory: API Compatibility

    Optional property added

    Remediation: No action; consumers must tolerate unknown properties (tolerant reader).

Input validation codes (5)

  • API_ARCHIVE_REJECTEDDefault severity: MajorCategory: INPUT_VALIDATION

    Archive 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_VALIDATION

    Artifact 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_VALIDATION

    Artifact 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_VALIDATION

    Artifact 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_VALIDATION

    Required 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.

Back to the documentation
API Change Guard — ERP Preflight Docs