openapi: 3.0.3
info:
  title: 'MDO API Documentation'
  description: 'Official API documentation for the public API v1 endpoints. Use these endpoints to integrate location services and other features into your applications.'
  version: 1.0.0
servers:
  -
    url: 'https://mdo.on-forge.com'
tags:
  -
    name: Calendar
    description: ''
  -
    name: Deprecated
    description: ''
  -
    name: Locations
    description: ''
  -
    name: Salaat
    description: ''
paths:
  '/api/v1/calendar/{date}':
    get:
      summary: 'Get Hijri Calendar'
      operationId: getHijriCalendar
      description: 'Get the Hijri calendar for a specific date. Returns all days of the Hijri month along with miqaat events in that month.'
      parameters:
        -
          in: query
          name: greg
          description: 'If true or 1, the date parameter is treated as a Gregorian date. If false, 0, or absent, treated as a Hijri date.'
          example: 'true'
          required: false
          schema:
            type: string
            description: 'If true or 1, the date parameter is treated as a Gregorian date. If false, 0, or absent, treated as a Hijri date.'
            example: 'true'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  hijri_date: '1447-07-11'
                  gregorian_date: '2025-12-30'
                  hijri_month_name_full: 'Rajab al-Asab'
                  hijri_month_name_short: Rajab
                  hijri_month: '07'
                  hijri_year: '1447'
                  hijri_year_arabic: ١٤٤٧
                  hijri_month_arabic: ٠٧
                  days:
                    -
                      hijri_date: '1447-07-01'
                      gregorian_date: '2025-12-20'
                      hijri_day_arabic: ١
                      gregorian_human_readable_date: 'Dec 20'
                      gregorian_human_readable_date_long: '20th Dec 2025'
                      gregorian_day: '20'
                      weekday: saturday
                      date_formatted: '20th Rajab, 1447H'
                      date_formatted_long: '20th Rajab al-Asab, 1447H'
                    -
                      hijri_date: '1447-07-02'
                      gregorian_date: '2025-12-21'
                      hijri_day_arabic: ٢
                      gregorian_human_readable_date: 'Dec 21'
                      gregorian_human_readable_date_long: '21st Dec 2025'
                      gregorian_day: '21'
                      weekday: sunday
                      date_formatted: '21st Rajab, 1447H'
                      date_formatted_long: '21st Rajab al-Asab, 1447H'
                    -
                      hijri_date: '1447-07-11'
                      gregorian_date: '2025-12-30'
                      hijri_day_arabic: ١١
                      gregorian_human_readable_date: 'Dec 30'
                      gregorian_human_readable_date_long: '30th Dec 2025'
                      gregorian_day: '30'
                      weekday: tuesday
                      date_formatted: '30th Rajab, 1447H'
                      date_formatted_long: '30th Rajab al-Asab, 1447H'
                  miqats:
                    -
                      name: 'Test Miqaat Recurring'
                      month: '7'
                      day: '1'
                      hijri_day: ١
                      year: null
                      hijri_date: '1447-07-01'
                      gregorian_date: '2025-12-20'
                      gregorian_day: '20'
                      gregorian_month: Dec
                      type:
                        name: Urus
                      location: null
                      link_type: Video
                      local_link: 'https://example.com/local'
                      external_link: 'https://example.com/external'
                    -
                      name: 'Test Miqaat One Time'
                      month: '7'
                      day: '15'
                      hijri_day: ١٥
                      year: '1447'
                      hijri_date: '1447-07-15'
                      gregorian_date: '2026-01-03'
                      gregorian_day: '3'
                      gregorian_month: Jan
                      type:
                        name: Urus
                      location: null
                      link_type: Essay
                      local_link: 'https://example.com/local'
                      external_link: 'https://example.com/external'
                properties:
                  hijri_date:
                    type: string
                    example: '1447-07-11'
                  gregorian_date:
                    type: string
                    example: '2025-12-30'
                  hijri_month_name_full:
                    type: string
                    example: 'Rajab al-Asab'
                  hijri_month_name_short:
                    type: string
                    example: Rajab
                  hijri_month:
                    type: string
                    example: '07'
                  hijri_year:
                    type: string
                    example: '1447'
                  hijri_year_arabic:
                    type: string
                    example: ١٤٤٧
                  hijri_month_arabic:
                    type: string
                    example: ٠٧
                  days:
                    type: array
                    example:
                      -
                        hijri_date: '1447-07-01'
                        gregorian_date: '2025-12-20'
                        hijri_day_arabic: ١
                        gregorian_human_readable_date: 'Dec 20'
                        gregorian_human_readable_date_long: '20th Dec 2025'
                        gregorian_day: '20'
                        weekday: saturday
                        date_formatted: '20th Rajab, 1447H'
                        date_formatted_long: '20th Rajab al-Asab, 1447H'
                      -
                        hijri_date: '1447-07-02'
                        gregorian_date: '2025-12-21'
                        hijri_day_arabic: ٢
                        gregorian_human_readable_date: 'Dec 21'
                        gregorian_human_readable_date_long: '21st Dec 2025'
                        gregorian_day: '21'
                        weekday: sunday
                        date_formatted: '21st Rajab, 1447H'
                        date_formatted_long: '21st Rajab al-Asab, 1447H'
                      -
                        hijri_date: '1447-07-11'
                        gregorian_date: '2025-12-30'
                        hijri_day_arabic: ١١
                        gregorian_human_readable_date: 'Dec 30'
                        gregorian_human_readable_date_long: '30th Dec 2025'
                        gregorian_day: '30'
                        weekday: tuesday
                        date_formatted: '30th Rajab, 1447H'
                        date_formatted_long: '30th Rajab al-Asab, 1447H'
                    items:
                      type: object
                      properties:
                        hijri_date:
                          type: string
                          example: '1447-07-01'
                        gregorian_date:
                          type: string
                          example: '2025-12-20'
                        hijri_day_arabic:
                          type: string
                          example: ١
                        gregorian_human_readable_date:
                          type: string
                          example: 'Dec 20'
                        gregorian_human_readable_date_long:
                          type: string
                          example: '20th Dec 2025'
                        gregorian_day:
                          type: string
                          example: '20'
                        weekday:
                          type: string
                          example: saturday
                        date_formatted:
                          type: string
                          example: '20th Rajab, 1447H'
                        date_formatted_long:
                          type: string
                          example: '20th Rajab al-Asab, 1447H'
                  miqats:
                    type: array
                    example:
                      -
                        name: 'Test Miqaat Recurring'
                        month: '7'
                        day: '1'
                        hijri_day: ١
                        year: null
                        hijri_date: '1447-07-01'
                        gregorian_date: '2025-12-20'
                        gregorian_day: '20'
                        gregorian_month: Dec
                        type:
                          name: Urus
                        location: null
                        link_type: Video
                        local_link: 'https://example.com/local'
                        external_link: 'https://example.com/external'
                      -
                        name: 'Test Miqaat One Time'
                        month: '7'
                        day: '15'
                        hijri_day: ١٥
                        year: '1447'
                        hijri_date: '1447-07-15'
                        gregorian_date: '2026-01-03'
                        gregorian_day: '3'
                        gregorian_month: Jan
                        type:
                          name: Urus
                        location: null
                        link_type: Essay
                        local_link: 'https://example.com/local'
                        external_link: 'https://example.com/external'
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          example: 'Test Miqaat Recurring'
                        month:
                          type: string
                          example: '7'
                        day:
                          type: string
                          example: '1'
                        hijri_day:
                          type: string
                          example: ١
                        year:
                          type: string
                          example: null
                        hijri_date:
                          type: string
                          example: '1447-07-01'
                        gregorian_date:
                          type: string
                          example: '2025-12-20'
                        gregorian_day:
                          type: string
                          example: '20'
                        gregorian_month:
                          type: string
                          example: Dec
                        type:
                          type: object
                          properties:
                            name:
                              type: string
                              example: Urus
                        location:
                          type: string
                          example: null
                        link_type:
                          type: string
                          example: Video
                        local_link:
                          type: string
                          example: 'https://example.com/local'
                        external_link:
                          type: string
                          example: 'https://example.com/external'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The date field is required.'
                  errors:
                    date:
                      - 'The date field is required.'
                properties:
                  message:
                    type: string
                    example: 'The date field is required.'
                  errors:
                    type: object
                    properties:
                      date:
                        type: array
                        example:
                          - 'The date field is required.'
                        items:
                          type: string
      tags:
        - Calendar
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-02-19T05:00:14'
                greg:
                  type: string
                  description: ''
                  example: '1'
                  enum:
                    - 'true'
                    - '1'
                    - 'false'
                    - '0'
                    - 'true'
                    - '1'
                    - 'false'
                    - '0'
              required:
                - date
      security: []
    parameters:
      -
        in: path
        name: date
        description: 'The date in Y-m-d format.'
        example: '1447-07-11'
        required: true
        schema:
          type: string
  '/api/v1/convert/to-hijri/{date}':
    get:
      summary: 'Convert Gregorian to Hijri'
      operationId: convertGregorianToHijri
      description: 'Converts a Gregorian date to Hijri date.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    date: '1447-07-11'
                    date_formatted: '11th Rajab, 1447H'
                    date_formatted_long: '11th Rajab al-Asab, 1447H'
                properties:
                  data:
                    type: object
                    properties:
                      date:
                        type: string
                        example: '1447-07-11'
                      date_formatted:
                        type: string
                        example: '11th Rajab, 1447H'
                      date_formatted_long:
                        type: string
                        example: '11th Rajab al-Asab, 1447H'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The date field is required.'
                  errors:
                    date:
                      - 'The date field is required.'
                properties:
                  message:
                    type: string
                    example: 'The date field is required.'
                  errors:
                    type: object
                    properties:
                      date:
                        type: array
                        example:
                          - 'The date field is required.'
                        items:
                          type: string
      tags:
        - Calendar
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-02-19T05:00:14'
              required:
                - date
      security: []
    parameters:
      -
        in: path
        name: date
        description: 'The Gregorian date in Y-m-d format.'
        example: '2025-12-30'
        required: true
        schema:
          type: string
  '/api/v1/convert/to-gregorian/{date}':
    get:
      summary: 'Convert Hijri to Gregorian'
      operationId: convertHijriToGregorian
      description: 'Converts a Hijri date to Gregorian date.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    date: '2025-12-30'
                    date_formatted: '30th Dec, 2025'
                    date_formatted_long: '30th December, 2025'
                properties:
                  data:
                    type: object
                    properties:
                      date:
                        type: string
                        example: '2025-12-30'
                      date_formatted:
                        type: string
                        example: '30th Dec, 2025'
                      date_formatted_long:
                        type: string
                        example: '30th December, 2025'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The date field is required.'
                  errors:
                    date:
                      - 'The date field is required.'
                properties:
                  message:
                    type: string
                    example: 'The date field is required.'
                  errors:
                    type: object
                    properties:
                      date:
                        type: array
                        example:
                          - 'The date field is required.'
                        items:
                          type: string
      tags:
        - Calendar
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-02-19T05:00:14'
              required:
                - date
      security: []
    parameters:
      -
        in: path
        name: date
        description: 'The Hijri date in Y-m-d format.'
        example: '1447-07-11'
        required: true
        schema:
          type: string
  '/api/v1/calendar/{date}/miqaat':
    get:
      summary: 'Get Month Miqaat'
      operationId: getMonthMiqaat
      description: 'Get all miqaat events for a specific Hijri month. If no date is provided, uses current Hijri month.'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    -
                      name: 'Test Miqaat Recurring'
                      month: '1'
                      day: '1'
                      hijri_day: ١
                      year: null
                      hijri_date: '1448-01-1'
                      gregorian_date: '2026-06-15'
                      gregorian_day: '15'
                      gregorian_month: Jun
                      type:
                        name: Urus
                      location: null
                      link_type: ''
                      local_link: ''
                      external_link: ''
                    -
                      name: 'Test Miqaat One Time'
                      month: '1'
                      day: '2'
                      hijri_day: ٢
                      year: '1448'
                      hijri_date: '1448-01-2'
                      gregorian_date: '2026-06-16'
                      gregorian_day: '16'
                      gregorian_month: Jun
                      type:
                        name: Urus
                      location: null
                      link_type: ''
                      local_link: ''
                      external_link: ''
                properties:
                  data:
                    type: array
                    example:
                      -
                        name: 'Test Miqaat Recurring'
                        month: '1'
                        day: '1'
                        hijri_day: ١
                        year: null
                        hijri_date: '1448-01-1'
                        gregorian_date: '2026-06-15'
                        gregorian_day: '15'
                        gregorian_month: Jun
                        type:
                          name: Urus
                        location: null
                        link_type: ''
                        local_link: ''
                        external_link: ''
                      -
                        name: 'Test Miqaat One Time'
                        month: '1'
                        day: '2'
                        hijri_day: ٢
                        year: '1448'
                        hijri_date: '1448-01-2'
                        gregorian_date: '2026-06-16'
                        gregorian_day: '16'
                        gregorian_month: Jun
                        type:
                          name: Urus
                        location: null
                        link_type: ''
                        local_link: ''
                        external_link: ''
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          example: 'Test Miqaat Recurring'
                        month:
                          type: string
                          example: '1'
                        day:
                          type: string
                          example: '1'
                        hijri_day:
                          type: string
                          example: ١
                        year:
                          type: string
                          example: null
                        hijri_date:
                          type: string
                          example: '1448-01-1'
                        gregorian_date:
                          type: string
                          example: '2026-06-15'
                        gregorian_day:
                          type: string
                          example: '15'
                        gregorian_month:
                          type: string
                          example: Jun
                        type:
                          type: object
                          properties:
                            name:
                              type: string
                              example: Urus
                        location:
                          type: string
                          example: null
                        link_type:
                          type: string
                          example: ''
                        local_link:
                          type: string
                          example: ''
                        external_link:
                          type: string
                          example: ''
      tags:
        - Calendar
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-02-19T05:00:14'
      security: []
    parameters:
      -
        in: path
        name: date
        description: 'Optional parameter. The Hijri date in Y-m-d format (e.g., 1448-01-05). If not provided, uses current Hijri date.'
        required: true
        schema:
          type: string
        examples:
          omitted:
            summary: 'When the value is omitted'
            value: ''
          present:
            summary: 'When the value is present'
            value: '1448-01-05'
  '/api/v1/hijri/calendar/{date}':
    get:
      summary: 'Get Hijri Calendar (Deprecated - Old Endpoint)'
      operationId: getHijriCalendarDeprecatedOldEndpoint
      description: ''
      parameters:
        -
          in: query
          name: greg
          description: 'If true or 1, the date parameter is treated as a Gregorian date. If false, 0, or absent, treated as a Hijri date.'
          example: 'true'
          required: false
          schema:
            type: string
            description: 'If true or 1, the date parameter is treated as a Gregorian date. If false, 0, or absent, treated as a Hijri date.'
            example: 'true'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  hijri_date: '1447-07-11'
                  gregorian_date: '2025-12-30'
                  hijri_month_name_full: 'Rajab al-Asab'
                  hijri_month_name_short: Rajab
                  hijri_month: '07'
                  hijri_year: '1447'
                  hijri_year_arabic: ١٤٤٧
                  hijri_month_arabic: ٠٧
                  days:
                    -
                      hijri_date: '1447-07-01'
                      gregorian_date: '2025-12-20'
                      hijri_day_arabic: ١
                      gregorian_human_readable_date: 'Dec 20'
                      gregorian_human_readable_date_long: '20th Dec 2025'
                      gregorian_day: '20'
                      weekday: saturday
                      date_formatted: '20th Rajab, 1447H'
                      date_formatted_long: '20th Rajab al-Asab, 1447H'
                    -
                      hijri_date: '1447-07-02'
                      gregorian_date: '2025-12-21'
                      hijri_day_arabic: ٢
                      gregorian_human_readable_date: 'Dec 21'
                      gregorian_human_readable_date_long: '21st Dec 2025'
                      gregorian_day: '21'
                      weekday: sunday
                      date_formatted: '21st Rajab, 1447H'
                      date_formatted_long: '21st Rajab al-Asab, 1447H'
                    -
                      hijri_date: '1447-07-11'
                      gregorian_date: '2025-12-30'
                      hijri_day_arabic: ١١
                      gregorian_human_readable_date: 'Dec 30'
                      gregorian_human_readable_date_long: '30th Dec 2025'
                      gregorian_day: '30'
                      weekday: tuesday
                      date_formatted: '30th Rajab, 1447H'
                      date_formatted_long: '30th Rajab al-Asab, 1447H'
                  miqats:
                    -
                      name: 'Test Miqaat Recurring'
                      month: '7'
                      day: '1'
                      hijri_day: ١
                      year: null
                      hijri_date: '1447-07-01'
                      gregorian_date: '2025-12-20'
                      gregorian_day: '20'
                      gregorian_month: Dec
                      type:
                        name: Urus
                      location: null
                      link_type: Video
                      local_link: 'https://example.com/local'
                      external_link: 'https://example.com/external'
                    -
                      name: 'Test Miqaat One Time'
                      month: '7'
                      day: '15'
                      hijri_day: ١٥
                      year: '1447'
                      hijri_date: '1447-07-15'
                      gregorian_date: '2026-01-03'
                      gregorian_day: '3'
                      gregorian_month: Jan
                      type:
                        name: Urus
                      location: null
                      link_type: Essay
                      local_link: 'https://example.com/local'
                      external_link: 'https://example.com/external'
                properties:
                  hijri_date:
                    type: string
                    example: '1447-07-11'
                  gregorian_date:
                    type: string
                    example: '2025-12-30'
                  hijri_month_name_full:
                    type: string
                    example: 'Rajab al-Asab'
                  hijri_month_name_short:
                    type: string
                    example: Rajab
                  hijri_month:
                    type: string
                    example: '07'
                  hijri_year:
                    type: string
                    example: '1447'
                  hijri_year_arabic:
                    type: string
                    example: ١٤٤٧
                  hijri_month_arabic:
                    type: string
                    example: ٠٧
                  days:
                    type: array
                    example:
                      -
                        hijri_date: '1447-07-01'
                        gregorian_date: '2025-12-20'
                        hijri_day_arabic: ١
                        gregorian_human_readable_date: 'Dec 20'
                        gregorian_human_readable_date_long: '20th Dec 2025'
                        gregorian_day: '20'
                        weekday: saturday
                        date_formatted: '20th Rajab, 1447H'
                        date_formatted_long: '20th Rajab al-Asab, 1447H'
                      -
                        hijri_date: '1447-07-02'
                        gregorian_date: '2025-12-21'
                        hijri_day_arabic: ٢
                        gregorian_human_readable_date: 'Dec 21'
                        gregorian_human_readable_date_long: '21st Dec 2025'
                        gregorian_day: '21'
                        weekday: sunday
                        date_formatted: '21st Rajab, 1447H'
                        date_formatted_long: '21st Rajab al-Asab, 1447H'
                      -
                        hijri_date: '1447-07-11'
                        gregorian_date: '2025-12-30'
                        hijri_day_arabic: ١١
                        gregorian_human_readable_date: 'Dec 30'
                        gregorian_human_readable_date_long: '30th Dec 2025'
                        gregorian_day: '30'
                        weekday: tuesday
                        date_formatted: '30th Rajab, 1447H'
                        date_formatted_long: '30th Rajab al-Asab, 1447H'
                    items:
                      type: object
                      properties:
                        hijri_date:
                          type: string
                          example: '1447-07-01'
                        gregorian_date:
                          type: string
                          example: '2025-12-20'
                        hijri_day_arabic:
                          type: string
                          example: ١
                        gregorian_human_readable_date:
                          type: string
                          example: 'Dec 20'
                        gregorian_human_readable_date_long:
                          type: string
                          example: '20th Dec 2025'
                        gregorian_day:
                          type: string
                          example: '20'
                        weekday:
                          type: string
                          example: saturday
                        date_formatted:
                          type: string
                          example: '20th Rajab, 1447H'
                        date_formatted_long:
                          type: string
                          example: '20th Rajab al-Asab, 1447H'
                  miqats:
                    type: array
                    example:
                      -
                        name: 'Test Miqaat Recurring'
                        month: '7'
                        day: '1'
                        hijri_day: ١
                        year: null
                        hijri_date: '1447-07-01'
                        gregorian_date: '2025-12-20'
                        gregorian_day: '20'
                        gregorian_month: Dec
                        type:
                          name: Urus
                        location: null
                        link_type: Video
                        local_link: 'https://example.com/local'
                        external_link: 'https://example.com/external'
                      -
                        name: 'Test Miqaat One Time'
                        month: '7'
                        day: '15'
                        hijri_day: ١٥
                        year: '1447'
                        hijri_date: '1447-07-15'
                        gregorian_date: '2026-01-03'
                        gregorian_day: '3'
                        gregorian_month: Jan
                        type:
                          name: Urus
                        location: null
                        link_type: Essay
                        local_link: 'https://example.com/local'
                        external_link: 'https://example.com/external'
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          example: 'Test Miqaat Recurring'
                        month:
                          type: string
                          example: '7'
                        day:
                          type: string
                          example: '1'
                        hijri_day:
                          type: string
                          example: ١
                        year:
                          type: string
                          example: null
                        hijri_date:
                          type: string
                          example: '1447-07-01'
                        gregorian_date:
                          type: string
                          example: '2025-12-20'
                        gregorian_day:
                          type: string
                          example: '20'
                        gregorian_month:
                          type: string
                          example: Dec
                        type:
                          type: object
                          properties:
                            name:
                              type: string
                              example: Urus
                        location:
                          type: string
                          example: null
                        link_type:
                          type: string
                          example: Video
                        local_link:
                          type: string
                          example: 'https://example.com/local'
                        external_link:
                          type: string
                          example: 'https://example.com/external'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The date field is required.'
                  errors:
                    date:
                      - 'The date field is required.'
                properties:
                  message:
                    type: string
                    example: 'The date field is required.'
                  errors:
                    type: object
                    properties:
                      date:
                        type: array
                        example:
                          - 'The date field is required.'
                        items:
                          type: string
      tags:
        - Deprecated
      deprecated: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-02-19T05:00:14'
                greg:
                  type: string
                  description: ''
                  example: 'false'
                  enum:
                    - 'true'
                    - '1'
                    - 'false'
                    - '0'
                    - 'true'
                    - '1'
                    - 'false'
                    - '0'
              required:
                - date
      security: []
    parameters:
      -
        in: path
        name: date
        description: 'The date in Y-m-d format.'
        example: '1447-07-11'
        required: true
        schema:
          type: string
  '/api/v1/hijri/greg-to-hijri/{date}':
    get:
      summary: 'Convert Gregorian to Hijri (Deprecated - Old Endpoint)'
      operationId: convertGregorianToHijriDeprecatedOldEndpoint
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    date: '1447-07-11'
                    date_formatted: '11th Rajab, 1447H'
                    date_formatted_long: '11th Rajab al-Asab, 1447H'
                properties:
                  data:
                    type: object
                    properties:
                      date:
                        type: string
                        example: '1447-07-11'
                      date_formatted:
                        type: string
                        example: '11th Rajab, 1447H'
                      date_formatted_long:
                        type: string
                        example: '11th Rajab al-Asab, 1447H'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The date field is required.'
                  errors:
                    date:
                      - 'The date field is required.'
                properties:
                  message:
                    type: string
                    example: 'The date field is required.'
                  errors:
                    type: object
                    properties:
                      date:
                        type: array
                        example:
                          - 'The date field is required.'
                        items:
                          type: string
      tags:
        - Deprecated
      deprecated: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-02-19T05:00:14'
              required:
                - date
      security: []
    parameters:
      -
        in: path
        name: date
        description: 'The Gregorian date in Y-m-d format.'
        example: '2025-12-30'
        required: true
        schema:
          type: string
  '/api/v1/get-month-miqats/{date}':
    get:
      summary: 'Get Month Miqaat (Deprecated - Old Endpoint)'
      operationId: getMonthMiqaatDeprecatedOldEndpoint
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      example: 'Test Miqaat Recurring'
                    month:
                      type: string
                      example: '1'
                    day:
                      type: string
                      example: '1'
                    hijri_day:
                      type: string
                      example: ١
                    year:
                      type: string
                      example: null
                    hijri_date:
                      type: string
                      example: '1448-01-1'
                    gregorian_date:
                      type: string
                      example: '2026-06-15'
                    gregorian_day:
                      type: string
                      example: '15'
                    gregorian_month:
                      type: string
                      example: Jun
                    type:
                      type: object
                      properties:
                        name:
                          type: string
                          example: Urus
                    location:
                      type: string
                      example: null
                    link_type:
                      type: string
                      example: ''
                    local_link:
                      type: string
                      example: ''
                    external_link:
                      type: string
                      example: ''
                example:
                  -
                    name: 'Test Miqaat Recurring'
                    month: '1'
                    day: '1'
                    hijri_day: ١
                    year: null
                    hijri_date: '1448-01-1'
                    gregorian_date: '2026-06-15'
                    gregorian_day: '15'
                    gregorian_month: Jun
                    type:
                      name: Urus
                    location: null
                    link_type: ''
                    local_link: ''
                    external_link: ''
                  -
                    name: 'Test Miqaat One Time'
                    month: '1'
                    day: '2'
                    hijri_day: ٢
                    year: '1448'
                    hijri_date: '1448-01-2'
                    gregorian_date: '2026-06-16'
                    gregorian_day: '16'
                    gregorian_month: Jun
                    type:
                      name: Urus
                    location: null
                    link_type: ''
                    local_link: ''
                    external_link: ''
      tags:
        - Deprecated
      deprecated: true
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-02-19T05:00:14'
      security: []
    parameters:
      -
        in: path
        name: date
        description: 'Optional parameter. The Hijri date in Y-m-d format (e.g., 1448-01-05). If not provided, uses current Hijri date.'
        required: true
        schema:
          type: string
        examples:
          omitted:
            summary: 'When the value is omitted'
            value: ''
          present:
            summary: 'When the value is present'
            value: '1448-01-05'
  /api/v1/location/all:
    get:
      summary: 'Get All Locations'
      operationId: getAllLocations
      description: 'Returns a paginated list of all locations in the database. This endpoint does not accept any search parameters.'
      parameters:
        -
          in: query
          name: page
          description: 'The page number for pagination.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'The page number for pagination.'
            example: 1
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    -
                      id: 498
                      type: city
                      parent_id: null
                      slug: ahmednagar
                      name: Ahmednagar
                      state: Maharashtra
                      country_id: '72'
                      latitude: 19.096335
                      longitude: 74.740012
                      altitude: null
                      timezone: Asia/Kolkata
                      created_at: '2020-05-12T14:26:50.000000Z'
                      updated_at: '2020-05-12T14:26:50.000000Z'
                      country: India
                    -
                      id: 267
                      type: city
                      parent_id: null
                      slug: nagpur
                      name: Nagpur
                      state: null
                      country_id: '72'
                      latitude: 21.155403
                      longitude: 79.108348
                      altitude: null
                      timezone: Asia/Kolkata
                      created_at: '2020-05-12T14:26:50.000000Z'
                      updated_at: '2020-05-12T14:26:50.000000Z'
                      country: India
                  links:
                    first: 'https://mumineen.org/api/v1/location?page=1'
                    last: 'https://mumineen.org/api/v1/location?page=1'
                    prev: null
                    next: null
                  meta:
                    current_page: 1
                    from: 1
                    last_page: 1
                    links:
                      -
                        url: null
                        label: '&laquo; Previous'
                        active: false
                      -
                        url: 'https://mumineen.org/api/v1/location?page=1'
                        label: '1'
                        active: true
                      -
                        url: null
                        label: 'Next &raquo;'
                        active: false
                    path: 'https://mumineen.org/api/v1/location'
                    per_page: 15
                    to: 2
                    total: 2
                properties:
                  data:
                    type: array
                    example:
                      -
                        id: 498
                        type: city
                        parent_id: null
                        slug: ahmednagar
                        name: Ahmednagar
                        state: Maharashtra
                        country_id: '72'
                        latitude: 19.096335
                        longitude: 74.740012
                        altitude: null
                        timezone: Asia/Kolkata
                        created_at: '2020-05-12T14:26:50.000000Z'
                        updated_at: '2020-05-12T14:26:50.000000Z'
                        country: India
                      -
                        id: 267
                        type: city
                        parent_id: null
                        slug: nagpur
                        name: Nagpur
                        state: null
                        country_id: '72'
                        latitude: 21.155403
                        longitude: 79.108348
                        altitude: null
                        timezone: Asia/Kolkata
                        created_at: '2020-05-12T14:26:50.000000Z'
                        updated_at: '2020-05-12T14:26:50.000000Z'
                        country: India
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 498
                        type:
                          type: string
                          example: city
                        parent_id:
                          type: string
                          example: null
                        slug:
                          type: string
                          example: ahmednagar
                        name:
                          type: string
                          example: Ahmednagar
                        state:
                          type: string
                          example: Maharashtra
                        country_id:
                          type: string
                          example: '72'
                        latitude:
                          type: number
                          example: 19.096335
                        longitude:
                          type: number
                          example: 74.740012
                        altitude:
                          type: string
                          example: null
                        timezone:
                          type: string
                          example: Asia/Kolkata
                        created_at:
                          type: string
                          example: '2020-05-12T14:26:50.000000Z'
                        updated_at:
                          type: string
                          example: '2020-05-12T14:26:50.000000Z'
                        country:
                          type: string
                          example: India
                  links:
                    type: object
                    properties:
                      first:
                        type: string
                        example: 'https://mumineen.org/api/v1/location?page=1'
                      last:
                        type: string
                        example: 'https://mumineen.org/api/v1/location?page=1'
                      prev:
                        type: string
                        example: null
                      next:
                        type: string
                        example: null
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        example: 1
                      from:
                        type: integer
                        example: 1
                      last_page:
                        type: integer
                        example: 1
                      links:
                        type: array
                        example:
                          -
                            url: null
                            label: '&laquo; Previous'
                            active: false
                          -
                            url: 'https://mumineen.org/api/v1/location?page=1'
                            label: '1'
                            active: true
                          -
                            url: null
                            label: 'Next &raquo;'
                            active: false
                        items:
                          type: object
                          properties:
                            url:
                              type: string
                              example: null
                            label:
                              type: string
                              example: '&laquo; Previous'
                            active:
                              type: boolean
                              example: false
                      path:
                        type: string
                        example: 'https://mumineen.org/api/v1/location'
                      per_page:
                        type: integer
                        example: 15
                      to:
                        type: integer
                        example: 2
                      total:
                        type: integer
                        example: 2
      tags:
        - Locations
      security: []
  /api/v1/location:
    get:
      summary: 'Search Locations'
      operationId: searchLocations
      description: 'Search for locations by name. Optionally provide a search query to filter results. Returns paginated list of locations matching the criteria.'
      parameters:
        -
          in: query
          name: query
          description: 'Optional search query to filter locations by name. Minimum 2 characters. If not provided, returns all locations.'
          example: nag
          required: false
          schema:
            type: string
            description: 'Optional search query to filter locations by name. Minimum 2 characters. If not provided, returns all locations.'
            example: nag
        -
          in: query
          name: page
          description: 'The page number for pagination.'
          example: 1
          required: false
          schema:
            type: integer
            description: 'The page number for pagination.'
            example: 1
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    -
                      id: 498
                      type: city
                      parent_id: null
                      slug: ahmednagar
                      name: Ahmednagar
                      state: Maharashtra
                      country_id: '72'
                      latitude: 19.096335
                      longitude: 74.740012
                      altitude: null
                      timezone: Asia/Kolkata
                      created_at: '2020-05-12T14:26:50.000000Z'
                      updated_at: '2020-05-12T14:26:50.000000Z'
                      country: India
                    -
                      id: 267
                      type: city
                      parent_id: null
                      slug: nagpur
                      name: Nagpur
                      state: null
                      country_id: '72'
                      latitude: 21.155403
                      longitude: 79.108348
                      altitude: null
                      timezone: Asia/Kolkata
                      created_at: '2020-05-12T14:26:50.000000Z'
                      updated_at: '2020-05-12T14:26:50.000000Z'
                      country: India
                  links:
                    first: 'https://mumineen.org/api/v1/location?page=1'
                    last: 'https://mumineen.org/api/v1/location?page=1'
                    prev: null
                    next: null
                  meta:
                    current_page: 1
                    from: 1
                    last_page: 1
                    links:
                      -
                        url: null
                        label: '&laquo; Previous'
                        active: false
                      -
                        url: 'https://mumineen.org/api/v1/location?page=1'
                        label: '1'
                        active: true
                      -
                        url: null
                        label: 'Next &raquo;'
                        active: false
                    path: 'https://mumineen.org/api/v1/location'
                    per_page: 15
                    to: 2
                    total: 2
                properties:
                  data:
                    type: array
                    example:
                      -
                        id: 498
                        type: city
                        parent_id: null
                        slug: ahmednagar
                        name: Ahmednagar
                        state: Maharashtra
                        country_id: '72'
                        latitude: 19.096335
                        longitude: 74.740012
                        altitude: null
                        timezone: Asia/Kolkata
                        created_at: '2020-05-12T14:26:50.000000Z'
                        updated_at: '2020-05-12T14:26:50.000000Z'
                        country: India
                      -
                        id: 267
                        type: city
                        parent_id: null
                        slug: nagpur
                        name: Nagpur
                        state: null
                        country_id: '72'
                        latitude: 21.155403
                        longitude: 79.108348
                        altitude: null
                        timezone: Asia/Kolkata
                        created_at: '2020-05-12T14:26:50.000000Z'
                        updated_at: '2020-05-12T14:26:50.000000Z'
                        country: India
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 498
                        type:
                          type: string
                          example: city
                        parent_id:
                          type: string
                          example: null
                        slug:
                          type: string
                          example: ahmednagar
                        name:
                          type: string
                          example: Ahmednagar
                        state:
                          type: string
                          example: Maharashtra
                        country_id:
                          type: string
                          example: '72'
                        latitude:
                          type: number
                          example: 19.096335
                        longitude:
                          type: number
                          example: 74.740012
                        altitude:
                          type: string
                          example: null
                        timezone:
                          type: string
                          example: Asia/Kolkata
                        created_at:
                          type: string
                          example: '2020-05-12T14:26:50.000000Z'
                        updated_at:
                          type: string
                          example: '2020-05-12T14:26:50.000000Z'
                        country:
                          type: string
                          example: India
                  links:
                    type: object
                    properties:
                      first:
                        type: string
                        example: 'https://mumineen.org/api/v1/location?page=1'
                      last:
                        type: string
                        example: 'https://mumineen.org/api/v1/location?page=1'
                      prev:
                        type: string
                        example: null
                      next:
                        type: string
                        example: null
                  meta:
                    type: object
                    properties:
                      current_page:
                        type: integer
                        example: 1
                      from:
                        type: integer
                        example: 1
                      last_page:
                        type: integer
                        example: 1
                      links:
                        type: array
                        example:
                          -
                            url: null
                            label: '&laquo; Previous'
                            active: false
                          -
                            url: 'https://mumineen.org/api/v1/location?page=1'
                            label: '1'
                            active: true
                          -
                            url: null
                            label: 'Next &raquo;'
                            active: false
                        items:
                          type: object
                          properties:
                            url:
                              type: string
                              example: null
                            label:
                              type: string
                              example: '&laquo; Previous'
                            active:
                              type: boolean
                              example: false
                      path:
                        type: string
                        example: 'https://mumineen.org/api/v1/location'
                      per_page:
                        type: integer
                        example: 15
                      to:
                        type: integer
                        example: 2
                      total:
                        type: integer
                        example: 2
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The query field must be at least 2 characters.'
                  errors:
                    query:
                      - 'The query field must be at least 2 characters.'
                properties:
                  message:
                    type: string
                    example: 'The query field must be at least 2 characters.'
                  errors:
                    type: object
                    properties:
                      query:
                        type: array
                        example:
                          - 'The query field must be at least 2 characters.'
                        items:
                          type: string
      tags:
        - Locations
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: 'Must be at least 2 characters.'
                  example: bngz
                  nullable: true
      security: []
  /api/v1/location/nearest:
    get:
      summary: 'Find Nearest Location'
      operationId: findNearestLocation
      description: 'Find the nearest location to the given coordinates. This endpoint searches for the closest location in the database and returns its details along with the calculated distance.'
      parameters:
        -
          in: query
          name: latitude
          description: 'The latitude coordinate. Must be between -90 and 90.'
          example: 21.145066
          required: true
          schema:
            type: number
            description: 'The latitude coordinate. Must be between -90 and 90.'
            example: 21.145066
        -
          in: query
          name: longitude
          description: 'The longitude coordinate. Must be between -180 and 180.'
          example: 79.060033
          required: true
          schema:
            type: number
            description: 'The longitude coordinate. Must be between -180 and 180.'
            example: 79.060033
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    id: 267
                    type: city
                    parent_id: null
                    slug: nagpur
                    name: Nagpur
                    state: null
                    country_id: '72'
                    latitude: 21.155403
                    longitude: 79.108348
                    altitude: null
                    timezone: Asia/Kolkata
                    created_at: '2020-05-12T14:26:50.000000Z'
                    updated_at: '2020-05-12T14:26:50.000000Z'
                    distance: 3.1944586063055
                    country: India
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 267
                      type:
                        type: string
                        example: city
                      parent_id:
                        type: string
                        example: null
                      slug:
                        type: string
                        example: nagpur
                      name:
                        type: string
                        example: Nagpur
                      state:
                        type: string
                        example: null
                      country_id:
                        type: string
                        example: '72'
                      latitude:
                        type: number
                        example: 21.155403
                      longitude:
                        type: number
                        example: 79.108348
                      altitude:
                        type: string
                        example: null
                      timezone:
                        type: string
                        example: Asia/Kolkata
                      created_at:
                        type: string
                        example: '2020-05-12T14:26:50.000000Z'
                      updated_at:
                        type: string
                        example: '2020-05-12T14:26:50.000000Z'
                      distance:
                        type: number
                        example: 3.1944586063055
                      country:
                        type: string
                        example: India
        404:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'No locations found'
                properties:
                  message:
                    type: string
                    example: 'No locations found'
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The latitude field is required. (and 1 more error)'
                  errors:
                    latitude:
                      - 'The latitude field is required.'
                    longitude:
                      - 'The longitude field is required.'
                properties:
                  message:
                    type: string
                    example: 'The latitude field is required. (and 1 more error)'
                  errors:
                    type: object
                    properties:
                      latitude:
                        type: array
                        example:
                          - 'The latitude field is required.'
                        items:
                          type: string
                      longitude:
                        type: array
                        example:
                          - 'The longitude field is required.'
                        items:
                          type: string
      tags:
        - Locations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                latitude:
                  type: number
                  description: 'Must be between -90 and 90.'
                  example: -89
                longitude:
                  type: number
                  description: 'Must be between -180 and 180.'
                  example: -179
              required:
                - latitude
                - longitude
      security: []
  /api/v1/salaat:
    get:
      summary: 'Get Salaat Times'
      operationId: getSalaatTimes
      description: 'Get daily prayer (salaat) times for a specific date or date range. Returns all five daily prayers along with additional times like sihori, sunrise, zawaal, and nisful layl.'
      parameters:
        -
          in: query
          name: start
          description: 'The start date in any parseable format (e.g., Y-m-d, m/d/Y).'
          example: '2025-12-29'
          required: true
          schema:
            type: string
            description: 'The start date in any parseable format (e.g., Y-m-d, m/d/Y).'
            example: '2025-12-29'
        -
          in: query
          name: end
          description: 'optional The end date in any parseable format. If not provided, only the start date is returned. Must be within 1 year of start date.'
          example: '2025-12-31'
          required: false
          schema:
            type: string
            description: 'optional The end date in any parseable format. If not provided, only the start date is returned. Must be within 1 year of start date.'
            example: '2025-12-31'
        -
          in: query
          name: latitude
          description: 'The latitude coordinate. Must be between -90 and 90.'
          example: 21.155403
          required: true
          schema:
            type: number
            description: 'The latitude coordinate. Must be between -90 and 90.'
            example: 21.155403
        -
          in: query
          name: longitude
          description: 'The longitude coordinate. Must be between -180 and 180.'
          example: 79.108348
          required: true
          schema:
            type: number
            description: 'The longitude coordinate. Must be between -180 and 180.'
            example: 79.108348
        -
          in: query
          name: timezone
          description: 'optional The PHP timezone identifier (e.g., Asia/Kolkata, America/New_York). Defaults to UTC.'
          example: Asia/Kolkata
          required: false
          schema:
            type: string
            description: 'optional The PHP timezone identifier (e.g., Asia/Kolkata, America/New_York). Defaults to UTC.'
            example: Asia/Kolkata
        -
          in: query
          name: altitude
          description: 'numeric optional The altitude in meters. Defaults to 0.'
          example: '500'
          required: false
          schema:
            type: string
            description: 'numeric optional The altitude in meters. Defaults to 0.'
            example: '500'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    '2025-12-29':
                      sihori: '2025-12-29 05:33:00'
                      fajr: '2025-12-29 06:12:00'
                      sunrise: '2025-12-29 06:48:00'
                      zawaal: '2025-12-29 12:16:00'
                      zohr_end: '2025-12-29 14:03:00'
                      asr_end: '2025-12-29 15:52:00'
                      maghrib: '2025-12-29 17:42:00'
                      maghrib_end: '2025-12-29 17:51:43'
                      nisful_layl: '2025-12-30 00:16:00'
                      nisful_layl_end: '2025-12-30 01:20:00'
                  meta:
                    timezone: Asia/Kolkata
                    timezone_offset: 19800
                    timezone_offset_string: '+05:30'
                    start: '2025-12-29'
                    end: '2025-12-29'
                    latitude: '21.155403'
                    longitude: '79.108348'
                    altitude: 0
                properties:
                  data:
                    type: object
                    properties:
                      '2025-12-29':
                        type: object
                        properties:
                          sihori:
                            type: string
                            example: '2025-12-29 05:33:00'
                          fajr:
                            type: string
                            example: '2025-12-29 06:12:00'
                          sunrise:
                            type: string
                            example: '2025-12-29 06:48:00'
                          zawaal:
                            type: string
                            example: '2025-12-29 12:16:00'
                          zohr_end:
                            type: string
                            example: '2025-12-29 14:03:00'
                          asr_end:
                            type: string
                            example: '2025-12-29 15:52:00'
                          maghrib:
                            type: string
                            example: '2025-12-29 17:42:00'
                          maghrib_end:
                            type: string
                            example: '2025-12-29 17:51:43'
                          nisful_layl:
                            type: string
                            example: '2025-12-30 00:16:00'
                          nisful_layl_end:
                            type: string
                            example: '2025-12-30 01:20:00'
                  meta:
                    type: object
                    properties:
                      timezone:
                        type: string
                        example: Asia/Kolkata
                      timezone_offset:
                        type: integer
                        example: 19800
                      timezone_offset_string:
                        type: string
                        example: '+05:30'
                      start:
                        type: string
                        example: '2025-12-29'
                      end:
                        type: string
                        example: '2025-12-29'
                      latitude:
                        type: string
                        example: '21.155403'
                      longitude:
                        type: string
                        example: '79.108348'
                      altitude:
                        type: integer
                        example: 0
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The start field is required.'
                  errors:
                    start:
                      - 'The start field is required.'
                properties:
                  message:
                    type: string
                    example: 'The start field is required.'
                  errors:
                    type: object
                    properties:
                      start:
                        type: array
                        example:
                          - 'The start field is required.'
                        items:
                          type: string
      tags:
        - Salaat
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                start:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-02-19T05:00:14'
                end:
                  type: string
                  description: 'Must be a valid date. Must be a date after or equal to <code>start</code>.'
                  example: '2052-03-14'
                  nullable: true
                latitude:
                  type: number
                  description: 'Must be between -90 and 90.'
                  example: -89
                longitude:
                  type: number
                  description: 'Must be between -180 and 180.'
                  example: -180
                timezone:
                  type: string
                  description: 'Must be a valid time zone, such as <code>Africa/Accra</code>.'
                  example: America/Bahia_Banderas
                  nullable: true
                altitude:
                  type: number
                  description: ''
                  example: 4326.41688
                  nullable: true
              required:
                - start
                - latitude
                - longitude
      security: []
  /api/v1/hijri/salaat:
    get:
      summary: 'Get Salaat Times (Hijri)'
      operationId: getSalaatTimesHijri
      description: 'Get daily prayer (salaat) times for a specific Hijri date or date range. Input dates should be in Hijri calendar (Y-m-d format). Returns prayer times with Hijri date keys in the response.'
      parameters:
        -
          in: query
          name: start
          description: 'The start Hijri date in Y-m-d format (e.g., 1446-06-07).'
          example: '1446-06-07'
          required: true
          schema:
            type: string
            description: 'The start Hijri date in Y-m-d format (e.g., 1446-06-07).'
            example: '1446-06-07'
        -
          in: query
          name: end
          description: 'optional The end Hijri date in Y-m-d format. If not provided, only the start date is returned. Must be within 1 year of start date.'
          example: '1446-06-09'
          required: false
          schema:
            type: string
            description: 'optional The end Hijri date in Y-m-d format. If not provided, only the start date is returned. Must be within 1 year of start date.'
            example: '1446-06-09'
        -
          in: query
          name: latitude
          description: 'The latitude coordinate. Must be between -90 and 90.'
          example: 21.155403
          required: true
          schema:
            type: number
            description: 'The latitude coordinate. Must be between -90 and 90.'
            example: 21.155403
        -
          in: query
          name: longitude
          description: 'The longitude coordinate. Must be between -180 and 180.'
          example: 79.108348
          required: true
          schema:
            type: number
            description: 'The longitude coordinate. Must be between -180 and 180.'
            example: 79.108348
        -
          in: query
          name: timezone
          description: 'optional The PHP timezone identifier (e.g., Asia/Kolkata, America/New_York). Defaults to UTC.'
          example: Asia/Kolkata
          required: false
          schema:
            type: string
            description: 'optional The PHP timezone identifier (e.g., Asia/Kolkata, America/New_York). Defaults to UTC.'
            example: Asia/Kolkata
        -
          in: query
          name: altitude
          description: 'numeric optional The altitude in meters. Defaults to 0.'
          example: '500'
          required: false
          schema:
            type: string
            description: 'numeric optional The altitude in meters. Defaults to 0.'
            example: '500'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    '1447-07-10':
                      sihori: '1447-07-10 05:33:00'
                      fajr: '1447-07-10 06:12:00'
                      sunrise: '1447-07-10 06:48:00'
                      zawaal: '1447-07-10 12:16:00'
                      zohr_end: '1447-07-10 14:03:00'
                      asr_end: '1447-07-10 15:52:00'
                      maghrib: '1447-07-10 17:42:00'
                      maghrib_end: '1447-07-11 17:51:43'
                      nisful_layl: '1447-07-11 00:16:00'
                      nisful_layl_end: '1447-07-11 01:20:00'
                  meta:
                    timezone: Asia/Kolkata
                    timezone_offset: 19800
                    timezone_offset_string: '+05:30'
                    start: '1447-07-10'
                    end: '1447-07-10'
                    latitude: '21.155403'
                    longitude: '79.108348'
                    altitude: 0
                properties:
                  data:
                    type: object
                    properties:
                      '1447-07-10':
                        type: object
                        properties:
                          sihori:
                            type: string
                            example: '1447-07-10 05:33:00'
                          fajr:
                            type: string
                            example: '1447-07-10 06:12:00'
                          sunrise:
                            type: string
                            example: '1447-07-10 06:48:00'
                          zawaal:
                            type: string
                            example: '1447-07-10 12:16:00'
                          zohr_end:
                            type: string
                            example: '1447-07-10 14:03:00'
                          asr_end:
                            type: string
                            example: '1447-07-10 15:52:00'
                          maghrib:
                            type: string
                            example: '1447-07-10 17:42:00'
                          maghrib_end:
                            type: string
                            example: '1447-07-11 17:51:43'
                          nisful_layl:
                            type: string
                            example: '1447-07-11 00:16:00'
                          nisful_layl_end:
                            type: string
                            example: '1447-07-11 01:20:00'
                  meta:
                    type: object
                    properties:
                      timezone:
                        type: string
                        example: Asia/Kolkata
                      timezone_offset:
                        type: integer
                        example: 19800
                      timezone_offset_string:
                        type: string
                        example: '+05:30'
                      start:
                        type: string
                        example: '1447-07-10'
                      end:
                        type: string
                        example: '1447-07-10'
                      latitude:
                        type: string
                        example: '21.155403'
                      longitude:
                        type: string
                        example: '79.108348'
                      altitude:
                        type: integer
                        example: 0
        422:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The start field is required.'
                  errors:
                    start:
                      - 'The start field is required.'
                properties:
                  message:
                    type: string
                    example: 'The start field is required.'
                  errors:
                    type: object
                    properties:
                      start:
                        type: array
                        example:
                          - 'The start field is required.'
                        items:
                          type: string
      tags:
        - Salaat
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                start:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-02-19T05:00:14'
                end:
                  type: string
                  description: 'Must be a valid date. Must be a date after or equal to <code>start</code>.'
                  example: '2052-03-14'
                  nullable: true
                latitude:
                  type: number
                  description: 'Must be between -90 and 90.'
                  example: -89
                longitude:
                  type: number
                  description: 'Must be between -180 and 180.'
                  example: -180
                timezone:
                  type: string
                  description: 'Must be a valid time zone, such as <code>Africa/Accra</code>.'
                  example: America/Bahia_Banderas
                  nullable: true
                altitude:
                  type: number
                  description: ''
                  example: 4326.41688
                  nullable: true
              required:
                - start
                - latitude
                - longitude
      security: []
