{"data":[{"id":"chg_ff77a07cdf93b01a25f2342ab8b6c06ff17bcb205375549192fb8bb2a72bf1a2","path":"/v3/schedules/{id}/rotations/{rotation_id}/events/{event_id}","method":"PUT","direction":"request","fieldPath":"event/assignment_strategy","changeType":"request-property-became-required","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"breaking","breakKind":"runtime","summary":"the request property `event/assignment_strategy` became required","reasoning":"request.now_required: request request-property-became-required -> breaking","ruleId":"request.now_required","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[]},{"id":"chg_f5f3ef3ceac1f71f7d64025e7ea2889c8843ee333e76b267e81a9cacd4ad4f81","path":"/v3/schedules/{id}","method":"GET","direction":"request","fieldPath":"items/","changeType":"request-parameter-property-enum-value-added","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"non_breaking","breakKind":null,"summary":"added the enum value `users` to the property `items/` of the `query` request parameter `include[]`","reasoning":"request.enum_added: request request-parameter-property-enum-value-added -> non_breaking","ruleId":"request.enum_added","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[]},{"id":"chg_f2eef320357d5f978e52f30d83050e813f1dc78d7b64c53e0311130881413010","path":"/v3/schedules/{id}/custom_shifts","method":"GET","direction":"request","fieldPath":"offset","changeType":"request-parameter-removed","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"ambiguous","breakKind":null,"summary":"deleted the `query` request parameter `offset`","reasoning":"request.removed_unknown_strictness: request request-parameter-removed -> ambiguous","ruleId":"request.removed_unknown_strictness","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":""},{"kind":"ctx","text":"    **`since` and `until` are required.**"},{"kind":"add","text":""},{"kind":"add","text":"    Returns every custom shift that overlaps the window."},{"kind":"ctx","text":"  operationId: listCustomShifts"},{"kind":"ctx","text":"  parameters:"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"      schema:"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: Start of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        Start of time range (ISO 8601). Can be at most 2 years in the future."},{"kind":"ctx","text":"      example: 2026-06-01T00:00:00Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        format: date-time"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: End of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        End of time range (ISO 8601). Can be at most 2 years and 2 weeks in"},{"kind":"add","text":"        the future."},{"kind":"ctx","text":"      example: 2026-06-28T23:59:59Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        default: false"},{"kind":"ctx","text":"        type: boolean"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: limit"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 25"},{"kind":"del","text":"        maximum: 100"},{"kind":"del","text":"        minimum: 1"},{"kind":"del","text":"        type: integer"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: offset"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 0"},{"kind":"del","text":"        minimum: 0"},{"kind":"del","text":"        type: integer"}]},{"id":"chg_edcd464db7bf7161e7769aae7d3e4390da3ddecdf6ab1369152d1d1ee32eeab3","path":"/v3/schedules/{id}/custom_shifts/{custom_shift_id}","method":"PUT","direction":"request","fieldPath":"custom_shift/end_time","changeType":"request-property-became-required","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"breaking","breakKind":"runtime","summary":"the request property `custom_shift/end_time` became required","reasoning":"request.now_required: request request-property-became-required -> breaking","ruleId":"request.now_required","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":"            end_time: 2025-03-15T18:00:00Z"},{"kind":"ctx","text":"            start_time: 2025-03-15T10:00:00Z"},{"kind":"add","text":"            type: custom_shift"},{"kind":"ctx","text":"        schema:"},{"kind":"ctx","text":"          properties:"},{"kind":"ctx","text":"            custom_shift:"},{"kind":"ctx","text":"              description: |"},{"kind":"add","text":"                The request replaces the full custom shift. Send every required"},{"kind":"add","text":"                field, even the fields that do not change."},{"kind":"add","text":""},{"kind":"ctx","text":"                If the shift has already started,"},{"kind":"ctx","text":"                only `end_time` can be modified."},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"                  format: date-time"},{"kind":"ctx","text":"                  type: string"},{"kind":"add","text":"                type:"},{"kind":"add","text":"                  enum:"},{"kind":"add","text":"                    - custom_shift"},{"kind":"add","text":"                  type: string"},{"kind":"add","text":"              required:"},{"kind":"add","text":"                - type"},{"kind":"add","text":"                - start_time"},{"kind":"add","text":"                - end_time"},{"kind":"add","text":"                - assignments"},{"kind":"ctx","text":"              type: object"},{"kind":"ctx","text":"          required:"},{"kind":"ctx","text":"..."}]},{"id":"chg_e12f9fe5a99ef7fc626ed8ece21183c1bfea02b5750ff3350d92d6168e7f6011","path":"/v3/schedules/{id}/custom_shifts/{custom_shift_id}","method":"PUT","direction":"request","fieldPath":"custom_shift/assignments","changeType":"request-property-became-required","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"breaking","breakKind":"runtime","summary":"the request property `custom_shift/assignments` became required","reasoning":"request.now_required: request request-property-became-required -> breaking","ruleId":"request.now_required","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":"            end_time: 2025-03-15T18:00:00Z"},{"kind":"ctx","text":"            start_time: 2025-03-15T10:00:00Z"},{"kind":"add","text":"            type: custom_shift"},{"kind":"ctx","text":"        schema:"},{"kind":"ctx","text":"          properties:"},{"kind":"ctx","text":"            custom_shift:"},{"kind":"ctx","text":"              description: |"},{"kind":"add","text":"                The request replaces the full custom shift. Send every required"},{"kind":"add","text":"                field, even the fields that do not change."},{"kind":"add","text":""},{"kind":"ctx","text":"                If the shift has already started,"},{"kind":"ctx","text":"                only `end_time` can be modified."},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"                  format: date-time"},{"kind":"ctx","text":"                  type: string"},{"kind":"add","text":"                type:"},{"kind":"add","text":"                  enum:"},{"kind":"add","text":"                    - custom_shift"},{"kind":"add","text":"                  type: string"},{"kind":"add","text":"              required:"},{"kind":"add","text":"                - type"},{"kind":"add","text":"                - start_time"},{"kind":"add","text":"                - end_time"},{"kind":"add","text":"                - assignments"},{"kind":"ctx","text":"              type: object"},{"kind":"ctx","text":"          required:"},{"kind":"ctx","text":"..."}]},{"id":"chg_db843ba3159fb02ed62e5e01d494378b8d0bc90c663d6cf463e5fc3b8fc373b7","path":"/v3/schedules/{id}/custom_shifts","method":"GET","direction":"request","fieldPath":"limit","changeType":"request-parameter-removed","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"ambiguous","breakKind":null,"summary":"deleted the `query` request parameter `limit`","reasoning":"request.removed_unknown_strictness: request request-parameter-removed -> ambiguous","ruleId":"request.removed_unknown_strictness","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":""},{"kind":"ctx","text":"    **`since` and `until` are required.**"},{"kind":"add","text":""},{"kind":"add","text":"    Returns every custom shift that overlaps the window."},{"kind":"ctx","text":"  operationId: listCustomShifts"},{"kind":"ctx","text":"  parameters:"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"      schema:"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: Start of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        Start of time range (ISO 8601). Can be at most 2 years in the future."},{"kind":"ctx","text":"      example: 2026-06-01T00:00:00Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        format: date-time"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: End of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        End of time range (ISO 8601). Can be at most 2 years and 2 weeks in"},{"kind":"add","text":"        the future."},{"kind":"ctx","text":"      example: 2026-06-28T23:59:59Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        default: false"},{"kind":"ctx","text":"        type: boolean"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: limit"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 25"},{"kind":"del","text":"        maximum: 100"},{"kind":"del","text":"        minimum: 1"},{"kind":"del","text":"        type: integer"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: offset"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 0"},{"kind":"del","text":"        minimum: 0"},{"kind":"del","text":"        type: integer"}]},{"id":"chg_d793881a54d1fbf31aea7b7f2ceea4071111652b62601ccfb0adbbfb3e2fc7a9","path":"/v3/schedules/{id}/custom_shifts","method":"GET","direction":"response","fieldPath":"offset","changeType":"response-optional-property-removed","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"breaking","breakKind":"runtime","summary":"removed the optional property `offset` from the response with the `200` status","reasoning":"response.removed: response response-optional-property-removed -> breaking","ruleId":"response.removed","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":""},{"kind":"ctx","text":"    **`since` and `until` are required.**"},{"kind":"add","text":""},{"kind":"add","text":"    Returns every custom shift that overlaps the window."},{"kind":"ctx","text":"  operationId: listCustomShifts"},{"kind":"ctx","text":"  parameters:"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"      schema:"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: Start of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        Start of time range (ISO 8601). Can be at most 2 years in the future."},{"kind":"ctx","text":"      example: 2026-06-01T00:00:00Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        format: date-time"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: End of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        End of time range (ISO 8601). Can be at most 2 years and 2 weeks in"},{"kind":"add","text":"        the future."},{"kind":"ctx","text":"      example: 2026-06-28T23:59:59Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        default: false"},{"kind":"ctx","text":"        type: boolean"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: limit"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 25"},{"kind":"del","text":"        maximum: 100"},{"kind":"del","text":"        minimum: 1"},{"kind":"del","text":"        type: integer"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: offset"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 0"},{"kind":"del","text":"        minimum: 0"},{"kind":"del","text":"        type: integer"}]},{"id":"chg_cff38f49d5aa455e2e67c624020f89e47a118e320baf0d92da31223c4169e9a3","path":"/v3/schedules/{id}","method":"PUT","direction":"request","fieldPath":null,"changeType":"request-schema-acceptance-narrowed","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"breaking","breakKind":"runtime","summary":"Validated schema comparison changed the request accepted instance set.","reasoning":"schema.request_acceptance_narrowed: request request-schema-acceptance-narrowed -> breaking","ruleId":"schema.request_acceptance_narrowed","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[]},{"id":"chg_ce912314a98bf0cba5e1c963090474ca3bdf05a5b5dbbd9e9e435d2255d33b36","path":"/v3/schedules/{id}/custom_shifts/{custom_shift_id}","method":"PUT","direction":"request","fieldPath":null,"changeType":"request-schema-acceptance-narrowed","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"breaking","breakKind":"runtime","summary":"Validated schema comparison changed the request accepted instance set.","reasoning":"schema.request_acceptance_narrowed: request request-schema-acceptance-narrowed -> breaking","ruleId":"schema.request_acceptance_narrowed","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":"            end_time: 2025-03-15T18:00:00Z"},{"kind":"ctx","text":"            start_time: 2025-03-15T10:00:00Z"},{"kind":"add","text":"            type: custom_shift"},{"kind":"ctx","text":"        schema:"},{"kind":"ctx","text":"          properties:"},{"kind":"ctx","text":"            custom_shift:"},{"kind":"ctx","text":"              description: |"},{"kind":"add","text":"                The request replaces the full custom shift. Send every required"},{"kind":"add","text":"                field, even the fields that do not change."},{"kind":"add","text":""},{"kind":"ctx","text":"                If the shift has already started,"},{"kind":"ctx","text":"                only `end_time` can be modified."},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"                  format: date-time"},{"kind":"ctx","text":"                  type: string"},{"kind":"add","text":"                type:"},{"kind":"add","text":"                  enum:"},{"kind":"add","text":"                    - custom_shift"},{"kind":"add","text":"                  type: string"},{"kind":"add","text":"              required:"},{"kind":"add","text":"                - type"},{"kind":"add","text":"                - start_time"},{"kind":"add","text":"                - end_time"},{"kind":"add","text":"                - assignments"},{"kind":"ctx","text":"              type: object"},{"kind":"ctx","text":"          required:"},{"kind":"ctx","text":"..."}]},{"id":"chg_c9b21c91ee7e9c6836ecda183eb8c178d1c1b763a0a3220069abff502762ec4e","path":"/v3/schedules/{id}/custom_shifts","method":"GET","direction":"response","fieldPath":null,"changeType":"response-schema-acceptance-expanded","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"ambiguous","breakKind":null,"summary":"Validated schema comparison changed the response accepted instance set.","reasoning":"schema.response_expansion_consumer_policy: response response-schema-acceptance-expanded -> ambiguous","ruleId":"schema.response_expansion_consumer_policy","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":""},{"kind":"ctx","text":"    **`since` and `until` are required.**"},{"kind":"add","text":""},{"kind":"add","text":"    Returns every custom shift that overlaps the window."},{"kind":"ctx","text":"  operationId: listCustomShifts"},{"kind":"ctx","text":"  parameters:"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"      schema:"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: Start of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        Start of time range (ISO 8601). Can be at most 2 years in the future."},{"kind":"ctx","text":"      example: 2026-06-01T00:00:00Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        format: date-time"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: End of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        End of time range (ISO 8601). Can be at most 2 years and 2 weeks in"},{"kind":"add","text":"        the future."},{"kind":"ctx","text":"      example: 2026-06-28T23:59:59Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        default: false"},{"kind":"ctx","text":"        type: boolean"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: limit"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 25"},{"kind":"del","text":"        maximum: 100"},{"kind":"del","text":"        minimum: 1"},{"kind":"del","text":"        type: integer"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: offset"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 0"},{"kind":"del","text":"        minimum: 0"},{"kind":"del","text":"        type: integer"}]},{"id":"chg_b84965bb13e48b9e2d97a9f78c07ea074b876c27f0a120acb07cbbacac18dc57","path":"/v3/schedules/{id}/overrides","method":"GET","direction":"response","fieldPath":null,"changeType":"response-schema-acceptance-expanded","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"ambiguous","breakKind":null,"summary":"Validated schema comparison changed the response accepted instance set.","reasoning":"schema.response_expansion_consumer_policy: response response-schema-acceptance-expanded -> ambiguous","ruleId":"schema.response_expansion_consumer_policy","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":""},{"kind":"ctx","text":"    **`since` and `until` are required.**"},{"kind":"add","text":""},{"kind":"add","text":"    Returns every override that overlaps the window."},{"kind":"ctx","text":"  operationId: listOverrides"},{"kind":"ctx","text":"  parameters:"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"      schema:"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: Start of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        Start of time range (ISO 8601). Can be at most 2 years in the future."},{"kind":"ctx","text":"      example: 2026-06-01T00:00:00Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        format: date-time"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: End of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        End of time range (ISO 8601). Can be at most 2 years and 2 weeks in"},{"kind":"add","text":"        the future."},{"kind":"ctx","text":"      example: 2026-06-28T23:59:59Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        default: false"},{"kind":"ctx","text":"        type: boolean"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: limit"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 25"},{"kind":"del","text":"        maximum: 100"},{"kind":"del","text":"        minimum: 1"},{"kind":"del","text":"        type: integer"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: offset"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 0"},{"kind":"del","text":"        minimum: 0"},{"kind":"del","text":"        type: integer"}]},{"id":"chg_b83810971efe5c583fa187b1e39d525a0c3262a32f3cf2025afd0685538946fd","path":"/v3/schedules/{id}/rotations/{rotation_id}/events/{event_id}","method":"GET","direction":"request","fieldPath":"until","changeType":"request-parameter-removed","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"ambiguous","breakKind":null,"summary":"deleted the `query` request parameter `until`","reasoning":"request.removed_unknown_strictness: request request-parameter-removed -> ambiguous","ruleId":"request.removed_unknown_strictness","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[]},{"id":"chg_b6ec35f19302655884821bdeae3d9f18052f929789c4defc4a4eda3b740fd9ea","path":"/v3/schedules/{id}/rotations/{rotation_id}/events/{event_id}","method":"PUT","direction":"request","fieldPath":"event/effective_since","changeType":"request-property-became-required","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"breaking","breakKind":"runtime","summary":"the request property `event/effective_since` became required","reasoning":"request.now_required: request request-property-became-required -> breaking","ruleId":"request.now_required","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[]},{"id":"chg_b1036539b68b6806919b63ce45f47a584d4323dc5e86ef45a757ec46dd75b3dc","path":"/v3/schedules/{id}/rotations/{rotation_id}/events","method":"POST","direction":"request","fieldPath":"/requestBody/content/application~1json/schema/properties/event/properties/assignment_strategy/properties/members","changeType":"request-maxItems-relaxed","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"non_breaking","breakKind":null,"summary":"/requestBody/content/application~1json/schema/properties/event/properties/assignment_strategy/properties/members: 20 -> 60","reasoning":"level.info: request request-maxItems-relaxed -> non_breaking","ruleId":"level.info","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[]},{"id":"chg_a40c86be7786b5ac053c4da0d4aea8b7742bddbacc1783806fb6d660e44370ce","path":"/v3/schedules/{id}/rotations","method":"GET","direction":"response","fieldPath":"/responses/200/content/application~1json/schema/properties/rotations/items/properties/events/items/properties/assignment_strategy/properties/members","changeType":"response-maxItems-relaxed","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"breaking","breakKind":"runtime","summary":"/responses/200/content/application~1json/schema/properties/rotations/items/properties/events/items/properties/assignment_strategy/properties/members: 20 -> 60","reasoning":"level.error: response response-maxItems-relaxed -> breaking","ruleId":"level.error","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":"      schema:"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - in: query"},{"kind":"add","text":"    - description: Maximum number of items to return"},{"kind":"add","text":"      in: query"},{"kind":"ctx","text":"      name: limit"},{"kind":"ctx","text":"      schema:"},{"kind":"del","text":"        default: 25"},{"kind":"del","text":"        maximum: 100"},{"kind":"add","text":"        default: 100"},{"kind":"add","text":"        maximum: 1000"},{"kind":"ctx","text":"        minimum: 1"},{"kind":"ctx","text":"        type: integer"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"                                    - type"},{"kind":"ctx","text":"                                  type: object"},{"kind":"del","text":"                                maxItems: 20"},{"kind":"add","text":"                                maxItems: 60"},{"kind":"ctx","text":"                                minItems: 1"},{"kind":"ctx","text":"                                type: array"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":""},{"kind":"ctx","text":""},{"kind":"add","text":"                                  Must be omitted (or null) for"},{"kind":"add","text":"                                  `every_member_assignment_strategy`."},{"kind":"add","text":""},{"kind":"add","text":""},{"kind":"ctx","text":"                                  **UI editor constraint:** When `recurrence`"},{"kind":"ctx","text":"                                  uses `FREQ=WEEKLY`,"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"                                  - type"},{"kind":"ctx","text":"                                type: object"},{"kind":"del","text":"                              maxItems: 20"},{"kind":"add","text":"                              maxItems: 60"},{"kind":"ctx","text":"                              minItems: 1"},{"kind":"ctx","text":"                              type: array"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":""},{"kind":"ctx","text":""}]},{"id":"chg_9d7ec4f82fdd410a99acb4f837e4b91f51c03db01541d574af005c2de4c39c3f","path":"/v3/schedules/{id}/custom_shifts","method":"GET","direction":"response","fieldPath":"more","changeType":"response-optional-property-removed","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"breaking","breakKind":"runtime","summary":"removed the optional property `more` from the response with the `200` status","reasoning":"response.removed: response response-optional-property-removed -> breaking","ruleId":"response.removed","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":""},{"kind":"ctx","text":"    **`since` and `until` are required.**"},{"kind":"add","text":""},{"kind":"add","text":"    Returns every custom shift that overlaps the window."},{"kind":"ctx","text":"  operationId: listCustomShifts"},{"kind":"ctx","text":"  parameters:"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"      schema:"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: Start of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        Start of time range (ISO 8601). Can be at most 2 years in the future."},{"kind":"ctx","text":"      example: 2026-06-01T00:00:00Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        format: date-time"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: End of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        End of time range (ISO 8601). Can be at most 2 years and 2 weeks in"},{"kind":"add","text":"        the future."},{"kind":"ctx","text":"      example: 2026-06-28T23:59:59Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        default: false"},{"kind":"ctx","text":"        type: boolean"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: limit"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 25"},{"kind":"del","text":"        maximum: 100"},{"kind":"del","text":"        minimum: 1"},{"kind":"del","text":"        type: integer"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: offset"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 0"},{"kind":"del","text":"        minimum: 0"},{"kind":"del","text":"        type: integer"}]},{"id":"chg_97e2e1f4acd5a578aa8c3bc1eba9e7490529c4bc6d718d84181cbe4de4edfdc1","path":"/v3/schedules/{id}/overrides/{override_id}","method":"PUT","direction":"request","fieldPath":"override/type","changeType":"new-required-request-property","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"breaking","breakKind":"runtime","summary":"added the new required request property `override/type`","reasoning":"request.now_required: request new-required-request-property -> breaking","ruleId":"request.now_required","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":""},{"kind":"ctx","text":"    Update an existing override."},{"kind":"add","text":""},{"kind":"add","text":"    Once the override has started, only `end_time` can be changed."},{"kind":"ctx","text":"  operationId: updateOverride"},{"kind":"ctx","text":"  parameters:"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"          override:"},{"kind":"ctx","text":"            end_time: 2025-03-15T18:00:00Z"},{"kind":"add","text":"            overridden_member:"},{"kind":"add","text":"              type: user_member"},{"kind":"add","text":"              user_id: PUSER123"},{"kind":"ctx","text":"            overriding_member:"},{"kind":"ctx","text":"              type: user_member"},{"kind":"ctx","text":"              user_id: PUSER789"},{"kind":"ctx","text":"            start_time: 2025-03-15T10:00:00Z"},{"kind":"add","text":"            type: override_shift"},{"kind":"ctx","text":"        schema:"},{"kind":"add","text":"          description: |"},{"kind":"add","text":"            The request replaces the full override. Send every required field,"},{"kind":"add","text":"            even the fields that do not change. An omitted `overridden_member`"},{"kind":"add","text":"            is cleared."},{"kind":"ctx","text":"          properties:"},{"kind":"ctx","text":"            override:"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"                  format: date-time"},{"kind":"ctx","text":"                  type: string"},{"kind":"add","text":"                overridden_member:"},{"kind":"add","text":"                  description: A member (user) assigned to a shift or rotation slot"},{"kind":"add","text":"                  properties:"},{"kind":"add","text":"                    type:"},{"kind":"add","text":"                      description: |"},{"kind":"add","text":"                        `user_member` — a specific user is assigned."},{"kind":"add","text":"                        `empty_member` — the slot is intentionally unassigned."},{"kind":"add","text":"                      enum:"},{"kind":"add","text":"                        - user_member"},{"kind":"add","text":"                        - empty_member"},{"kind":"add","text":"                      type: string"},{"kind":"add","text":"                    user_id:"}]},{"id":"chg_8f44606decfdcda42f8b936f2fe11a45a58148e3f1c0d65bd5d25e52c9b9b77e","path":"/v3/schedules/{id}/custom_shifts","method":"GET","direction":"response","fieldPath":"limit","changeType":"response-optional-property-removed","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"breaking","breakKind":"runtime","summary":"removed the optional property `limit` from the response with the `200` status","reasoning":"response.removed: response response-optional-property-removed -> breaking","ruleId":"response.removed","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":""},{"kind":"ctx","text":"    **`since` and `until` are required.**"},{"kind":"add","text":""},{"kind":"add","text":"    Returns every custom shift that overlaps the window."},{"kind":"ctx","text":"  operationId: listCustomShifts"},{"kind":"ctx","text":"  parameters:"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"      schema:"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: Start of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        Start of time range (ISO 8601). Can be at most 2 years in the future."},{"kind":"ctx","text":"      example: 2026-06-01T00:00:00Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        format: date-time"},{"kind":"ctx","text":"        type: string"},{"kind":"del","text":"    - description: End of time range (ISO 8601)"},{"kind":"add","text":"    - description: |"},{"kind":"add","text":"        End of time range (ISO 8601). Can be at most 2 years and 2 weeks in"},{"kind":"add","text":"        the future."},{"kind":"ctx","text":"      example: 2026-06-28T23:59:59Z"},{"kind":"ctx","text":"      in: query"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"        default: false"},{"kind":"ctx","text":"        type: boolean"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: limit"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 25"},{"kind":"del","text":"        maximum: 100"},{"kind":"del","text":"        minimum: 1"},{"kind":"del","text":"        type: integer"},{"kind":"del","text":"    - in: query"},{"kind":"del","text":"      name: offset"},{"kind":"del","text":"      schema:"},{"kind":"del","text":"        default: 0"},{"kind":"del","text":"        minimum: 0"},{"kind":"del","text":"        type: integer"}]},{"id":"chg_83e5cc5233eca743fcfbb28504e0442db0a11ec09e44a849e588e628272c4313","path":"/v3/schedules/{id}/overrides/{override_id}","method":"PUT","direction":"request","fieldPath":null,"changeType":"request-schema-acceptance-narrowed","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"breaking","breakKind":"runtime","summary":"Validated schema comparison changed the request accepted instance set.","reasoning":"schema.request_acceptance_narrowed: request request-schema-acceptance-narrowed -> breaking","ruleId":"schema.request_acceptance_narrowed","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":""},{"kind":"ctx","text":"    Update an existing override."},{"kind":"add","text":""},{"kind":"add","text":"    Once the override has started, only `end_time` can be changed."},{"kind":"ctx","text":"  operationId: updateOverride"},{"kind":"ctx","text":"  parameters:"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"          override:"},{"kind":"ctx","text":"            end_time: 2025-03-15T18:00:00Z"},{"kind":"add","text":"            overridden_member:"},{"kind":"add","text":"              type: user_member"},{"kind":"add","text":"              user_id: PUSER123"},{"kind":"ctx","text":"            overriding_member:"},{"kind":"ctx","text":"              type: user_member"},{"kind":"ctx","text":"              user_id: PUSER789"},{"kind":"ctx","text":"            start_time: 2025-03-15T10:00:00Z"},{"kind":"add","text":"            type: override_shift"},{"kind":"ctx","text":"        schema:"},{"kind":"add","text":"          description: |"},{"kind":"add","text":"            The request replaces the full override. Send every required field,"},{"kind":"add","text":"            even the fields that do not change. An omitted `overridden_member`"},{"kind":"add","text":"            is cleared."},{"kind":"ctx","text":"          properties:"},{"kind":"ctx","text":"            override:"},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"                  format: date-time"},{"kind":"ctx","text":"                  type: string"},{"kind":"add","text":"                overridden_member:"},{"kind":"add","text":"                  description: A member (user) assigned to a shift or rotation slot"},{"kind":"add","text":"                  properties:"},{"kind":"add","text":"                    type:"},{"kind":"add","text":"                      description: |"},{"kind":"add","text":"                        `user_member` — a specific user is assigned."},{"kind":"add","text":"                        `empty_member` — the slot is intentionally unassigned."},{"kind":"add","text":"                      enum:"},{"kind":"add","text":"                        - user_member"},{"kind":"add","text":"                        - empty_member"},{"kind":"add","text":"                      type: string"},{"kind":"add","text":"                    user_id:"}]},{"id":"chg_82f18adfaf8969c0e909f1d451af170675eb593c785df5ba48b67b74f1a37240","path":"/v3/schedules/{id}/custom_shifts/{custom_shift_id}","method":"PUT","direction":"request","fieldPath":"custom_shift/start_time","changeType":"request-property-became-required","detectedAt":"2026-10-31T04:33:19.637076+00:00","classification":"breaking","breakKind":"runtime","summary":"the request property `custom_shift/start_time` became required","reasoning":"request.now_required: request request-property-became-required -> breaking","ruleId":"request.now_required","classifierVersion":"2026-10-15.2","evidenceStrength":"spec_only","detectionMethod":"openapi_diff","fragment":[{"kind":"ctx","text":"..."},{"kind":"ctx","text":"            end_time: 2025-03-15T18:00:00Z"},{"kind":"ctx","text":"            start_time: 2025-03-15T10:00:00Z"},{"kind":"add","text":"            type: custom_shift"},{"kind":"ctx","text":"        schema:"},{"kind":"ctx","text":"          properties:"},{"kind":"ctx","text":"            custom_shift:"},{"kind":"ctx","text":"              description: |"},{"kind":"add","text":"                The request replaces the full custom shift. Send every required"},{"kind":"add","text":"                field, even the fields that do not change."},{"kind":"add","text":""},{"kind":"ctx","text":"                If the shift has already started,"},{"kind":"ctx","text":"                only `end_time` can be modified."},{"kind":"ctx","text":"..."},{"kind":"ctx","text":"                  format: date-time"},{"kind":"ctx","text":"                  type: string"},{"kind":"add","text":"                type:"},{"kind":"add","text":"                  enum:"},{"kind":"add","text":"                    - custom_shift"},{"kind":"add","text":"                  type: string"},{"kind":"add","text":"              required:"},{"kind":"add","text":"                - type"},{"kind":"add","text":"                - start_time"},{"kind":"add","text":"                - end_time"},{"kind":"add","text":"                - assignments"},{"kind":"ctx","text":"              type: object"},{"kind":"ctx","text":"          required:"},{"kind":"ctx","text":"..."}]}],"nextCursor":"eyJzY29wZSI6IltcIltcXFwicGFnZXJkdXR5XFxcIixcXFwicmVsX2QwOTVkYzBmNDMyN2ZkNWVlNTMwNzc0YzJhNmY0YzY0MjIzZDYwMzI2NmMzNGM1NTMyMzNiMGI4MmQxMTk2N2NcXFwiXVwiLFwiY2hhbmdlc1wiLG51bGwsbnVsbCxudWxsLG51bGxdIiwia2V5IjpbIjIwMjYtMTAtMzFUMDQ6MzM6MTkuNjM3MDc2KzAwOjAwIiwiY2hnXzgyZjE4YWRmYWY4OTY5YzBlOTA5ZjFkNDUxYWYxNzA2NzVlYjU5M2M3ODVkZjViYTQ4YjY3Yjc0ZjFhMzcyNDAiXX0"}