addedInput schema / allOf
Added value: +[
+ {
+ "not": {
+ "required": [
+ "city",
+ "latitude"
+ ]
+ }
+ },
+ {
+ "not": {
+ "required": [
+ "city",
+ "longitude"
+ ]
+ }
+ }
+]
addedInput schema / dependencies
Added value: +{
+ "latitude": [
+ "longitude",
+ "timezone"
+ ],
+ "longitude": [
+ "latitude",
+ "timezone"
+ ]
+}
addedInput schema / properties / city
Added value: +{
+ "description": "Supported cities: makkah, madinah, riyadh, cairo, gaza, jerusalem, alquds, ramallah, hebron, nablus, rafah, khanyunis, dubai, abudhabi, kuwait, doha, amman, istanbul, london, paris, newyork, toronto, jakarta, singapore, karachi, kualalumpur, tehran, sydney, tromso. Aliases: gazacity, nyc, kuwaitcity. Case, spaces and punctuation are ignored.",
+ "type": "string"
+}
changedInput schema / properties / timezone / description
Previous value: -"Optional IANA timezone override"New value: +"IANA timezone; required in the same request when latitude/longitude are supplied. Must agree with the city or be compatible with the coordinate timezone lookup."
changedInput schema / properties / userId / description
Previous value: -"Unique user or device ID"New value: +"Nonblank user identifier; at most 256 UTF-8 bytes and 256 characters. Whitespace in nonblank identifiers is preserved."
addedInput schema / properties / userId / maxLength
Added value: +256
addedInput schema / properties / userId / minLength
Added value: +1
addedInput schema / properties / userId / pattern
Added value: +"\\S"
addedOutput schema / properties / authorityNotice / properties / calculationDetails
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "appliedMinuteAdjustments": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "calendarAlignmentAdjusted": {
+ "type": "boolean"
+ },
+ "customMinuteAdjustments": {
+ "additionalProperties": false,
+ "properties": {
+ "asr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "dhuhr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "fajr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "isha": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "maghrib": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "sunrise": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "expectedTimezone": {
+ "description": "Timezone from city registry or approximate coordinate lookup",
+ "type": "string"
+ },
+ "fallbackLocationUsed": {
+ "type": "boolean"
+ },
+ "highLatitudeRuleSource": {
+ "enum": [
+ "stored_preference",
+ "geographic_default"
+ ],
+ "type": "string"
+ },
+ "locationBasis": {
+ "enum": [
+ "explicit_coordinates",
+ "explicit_city",
+ "stored_fixed_coordinates",
+ "stored_fixed_city",
+ "host_coordinates",
+ "host_city",
+ "network_geolocation",
+ "default_location"
+ ],
+ "type": "string"
+ },
+ "locationIsApproximate": {
+ "type": "boolean"
+ },
+ "madhabSource": {
+ "enum": [
+ "explicit_override",
+ "stored_preference",
+ "geographic_default"
+ ],
+ "type": "string"
+ },
+ "methodMinuteAdjustments": {
+ "additionalProperties": false,
+ "properties": {
+ "asr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "dhuhr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "fajr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "isha": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "maghrib": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "sunrise": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "methodSource": {
+ "enum": [
+ "explicit_override",
+ "stored_preference",
+ "geographic_default"
+ ],
+ "type": "string"
+ },
+ "regionalMinuteAdjustments": {
+ "additionalProperties": false,
+ "properties": {
+ "asr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "dhuhr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "fajr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "isha": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "maghrib": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "sunrise": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "timezoneSource": {
+ "description": "Source of the validated timezone or disclosed ocean/pole choice",
+ "enum": [
+ "explicit_override",
+ "stored_preference",
+ "city_default",
+ "host_header"
+ ],
+ "type": "string"
+ },
+ "timezoneValidation": {
+ "description": "Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure",
+ "enum": [
+ "coordinate_lookup",
+ "nearby_boundary",
+ "city_registry",
+ "polar_choice",
+ "ocean_choice"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedOutput schema / properties / authorityNotice / properties / highLatitudeAdjustment
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "adjustedPrayers": {
+ "items": {
+ "enum": [
+ "Fajr",
+ "Sunrise",
+ "Dhuhr",
+ "Asr",
+ "Maghrib",
+ "Isha"
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "applied": {
+ "type": "boolean"
+ },
+ "astronomicalLatitudeClamped": {
+ "type": "boolean"
+ },
+ "effectiveLatitude": {
+ "anyOf": [
+ {
+ "const": 48,
+ "type": "number"
+ },
+ {
+ "const": -48,
+ "type": "number"
+ }
+ ],
+ "description": "Substitute latitude only; never the user coordinate"
+ },
+ "explanation": {
+ "type": "string"
+ },
+ "methodSpecificTwilightRule": {
+ "const": "MoonsightingCommittee",
+ "type": "string"
+ },
+ "rule": {
+ "enum": [
+ "MiddleOfTheNight",
+ "SeventhOfTheNight",
+ "TwilightAngle"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "applied",
+ "rule",
+ "astronomicalLatitudeClamped",
+ "adjustedPrayers",
+ "explanation"
+ ],
+ "type": "object"
+}
addedOutput schema / properties / calculationDetails
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "appliedMinuteAdjustments": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "calendarAlignmentAdjusted": {
+ "type": "boolean"
+ },
+ "customMinuteAdjustments": {
+ "additionalProperties": false,
+ "properties": {
+ "asr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "dhuhr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "fajr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "isha": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "maghrib": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "sunrise": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "expectedTimezone": {
+ "description": "Timezone from city registry or approximate coordinate lookup",
+ "type": "string"
+ },
+ "fallbackLocationUsed": {
+ "type": "boolean"
+ },
+ "highLatitudeRuleSource": {
+ "enum": [
+ "stored_preference",
+ "geographic_default"
+ ],
+ "type": "string"
+ },
+ "locationBasis": {
+ "enum": [
+ "explicit_coordinates",
+ "explicit_city",
+ "stored_fixed_coordinates",
+ "stored_fixed_city",
+ "host_coordinates",
+ "host_city",
+ "network_geolocation",
+ "default_location"
+ ],
+ "type": "string"
+ },
+ "locationIsApproximate": {
+ "type": "boolean"
+ },
+ "madhabSource": {
+ "enum": [
+ "explicit_override",
+ "stored_preference",
+ "geographic_default"
+ ],
+ "type": "string"
+ },
+ "methodMinuteAdjustments": {
+ "additionalProperties": false,
+ "properties": {
+ "asr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "dhuhr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "fajr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "isha": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "maghrib": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "sunrise": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "methodSource": {
+ "enum": [
+ "explicit_override",
+ "stored_preference",
+ "geographic_default"
+ ],
+ "type": "string"
+ },
+ "regionalMinuteAdjustments": {
+ "additionalProperties": false,
+ "properties": {
+ "asr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "dhuhr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "fajr": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "isha": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "maghrib": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ },
+ "sunrise": {
+ "maximum": 60,
+ "minimum": -60,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "timezoneSource": {
+ "description": "Source of the validated timezone or disclosed ocean/pole choice",
+ "enum": [
+ "explicit_override",
+ "stored_preference",
+ "city_default",
+ "host_header"
+ ],
+ "type": "string"
+ },
+ "timezoneValidation": {
+ "description": "Validation basis; ocean locations require the matching nautical timezone or an adjacent coastal civil timezone; mathematical poles allow an explicit civil timezone with disclosure",
+ "enum": [
+ "coordinate_lookup",
+ "nearby_boundary",
+ "city_registry",
+ "polar_choice",
+ "ocean_choice"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedOutput schema / properties / highLatitudeAdjustment
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "adjustedPrayers": {
+ "items": {
+ "enum": [
+ "Fajr",
+ "Sunrise",
+ "Dhuhr",
+ "Asr",
+ "Maghrib",
+ "Isha"
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "applied": {
+ "type": "boolean"
+ },
+ "astronomicalLatitudeClamped": {
+ "type": "boolean"
+ },
+ "effectiveLatitude": {
+ "anyOf": [
+ {
+ "const": 48,
+ "type": "number"
+ },
+ {
+ "const": -48,
+ "type": "number"
+ }
+ ],
+ "description": "Substitute latitude only; never the user coordinate"
+ },
+ "explanation": {
+ "type": "string"
+ },
+ "methodSpecificTwilightRule": {
+ "const": "MoonsightingCommittee",
+ "type": "string"
+ },
+ "rule": {
+ "enum": [
+ "MiddleOfTheNight",
+ "SeventhOfTheNight",
+ "TwilightAngle"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "applied",
+ "rule",
+ "astronomicalLatitudeClamped",
+ "adjustedPrayers",
+ "explanation"
+ ],
+ "type": "object"
+}
removedOutput schema / properties / locationSource
Removed value: -{
- "description": "Source of location resolution",
- "type": "string"
-}
changedOutput schema / required
Previous value: -[
- "currentLocalDate",
- "timezone",
- "nextPrayer",
- "nextPrayerAtUtc",
- "nextPrayerLocalTime",
- "remainingMinutes",
- "calculationMethod",
- "madhab",
- "locationSource"
-]New value: +[
+ "currentLocalDate",
+ "timezone",
+ "nextPrayer",
+ "nextPrayerAtUtc",
+ "nextPrayerLocalTime",
+ "remainingMinutes",
+ "calculationMethod",
+ "madhab"
+]