OpenAPI contract intelligence

SpecSentinel

fixtures/baseline.yaml → fixtures/candidate.yaml
16 findings
criticalPATH_REMOVED

Path '/legacy' was removed.

#/paths/~1legacy
Before / after
{
  "before": {
    "get": {
      "responses": {
        "200": {
          "description": "Legacy status"
        }
      }
    }
  }
}
criticalOPERATION_REMOVED

DELETE /pets was removed.

#/paths/~1pets/delete
Before / after
{
  "before": {
    "operationId": "deleteAllPets",
    "responses": {
      "204": {
        "description": "Deleted"
      }
    }
  }
}
highPARAM_REQUIRED_ADDED

Required query parameter 'cursor' was added.

#/paths/~1pets/get/parameters/query/cursor
Before / after
{
  "after": {
    "name": "cursor",
    "in": "query",
    "required": true,
    "schema": {
      "type": "string"
    }
  }
}
highPARAM_ENUM_NARROWED

Parameter 'limit' no longer accepts all baseline values.

#/paths/~1pets/get/parameters/query/limit/schema/enum
Before / after
{
  "before": [
    10,
    20,
    50
  ],
  "after": [
    10
  ]
}
highPARAM_TYPE_CHANGED

Parameter 'offset' type changed from "integer" to "string".

#/paths/~1pets/get/parameters/query/offset/schema/type
Before / after
{
  "before": "integer",
  "after": "string"
}
highRESPONSE_TYPE_CHANGED

Response schema type changed from "integer" to "string".

#/paths/~1pets/get/responses/200/content/application~1json/schema/properties/items/items/properties/id/type
Before / after
{
  "before": "integer",
  "after": "string"
}
highRESPONSE_PROPERTY_REMOVED

Response property 'tag' was removed.

#/paths/~1pets/get/responses/200/content/application~1json/schema/properties/items/items/properties/tag
Before / after
{
  "before": {
    "type": "string"
  }
}
highRESPONSE_PROPERTY_REMOVED

Response property 'next' was removed.

#/paths/~1pets/get/responses/200/content/application~1json/schema/properties/next
Before / after
{
  "before": {
    "type": "string"
  }
}
highRESPONSE_REMOVED

Response '404' was removed.

#/paths/~1pets/get/responses/404
Before / after
{
  "before": {
    "description": "Tenant not found"
  }
}
highSECURITY_STRENGTHENED

Security requirements became stricter for previously valid requests.

#/paths/~1pets/get/security
Before / after
{
  "before": [
    {},
    {
      "ApiKey": []
    }
  ],
  "after": [
    {
      "ApiKey": [],
      "OAuth2": [
        "read:pets"
      ]
    }
  ]
}
highREQUEST_BODY_REQUIRED

Request body is now required.

#/paths/~1pets/post/requestBody
Before / after
{
  "before": false,
  "after": true
}
highREQUEST_TYPE_CHANGED

Request schema type changed from "string" to "integer".

#/paths/~1pets/post/requestBody/content/application~1json/schema/properties/name/type
Before / after
{
  "before": "string",
  "after": "integer"
}
highREQUEST_PROPERTY_REQUIRED

Request property 'tag' is now required.

#/paths/~1pets/post/requestBody/content/application~1json/schema/properties/tag
Before / after
{
  "before": false,
  "after": true
}
highRESPONSE_TYPE_CHANGED

Response schema type changed from "integer" to "string".

#/paths/~1pets/post/responses/201/content/application~1json/schema/properties/id/type
Before / after
{
  "before": "integer",
  "after": "string"
}
highRESPONSE_PROPERTY_REMOVED

Response property 'tag' was removed.

#/paths/~1pets/post/responses/201/content/application~1json/schema/properties/tag
Before / after
{
  "before": {
    "type": "string"
  }
}
highSECURITY_STRENGTHENED

Security requirements became stricter for previously valid requests.

#/paths/~1pets/post/security
Before / after
{
  "before": [
    {},
    {
      "ApiKey": []
    }
  ],
  "after": [
    {
      "ApiKey": [],
      "OAuth2": [
        "read:pets"
      ]
    }
  ]
}