swagger: '2.0'
info:
  title: Ward Club API
  description: Membership, billing, content, notifications, staff, and auth endpoints.
  termsOfService: https://www.google.com/policies/terms/
  contact:
    email: support@example.com
  license:
    name: Proprietary
  version: v1
host: backapi.gwscegypt.com
schemes:
- https
basePath: /api/v1
consumes:
- application/json
produces:
- application/json
securityDefinitions:
  Basic:
    type: basic
security:
- Basic: []
paths:
  /activity-logs/:
    get:
      operationId: activity-logs_list
      description: ''
      parameters:
      - name: actor
        in: query
        description: ''
        required: false
        type: string
      - name: action
        in: query
        description: ''
        required: false
        type: string
      - name: status
        in: query
        description: ''
        required: false
        type: string
      - name: target_app
        in: query
        description: ''
        required: false
        type: string
      - name: target_model
        in: query
        description: ''
        required: false
        type: string
      - name: target_id
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: ordering
        in: query
        description: أي حقل يجب استخدامه عند ترتيب النتائج.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/ActivityLog'
      tags:
      - activity-logs
    parameters: []
  /activity-logs/bulk-delete/:
    post:
      operationId: activity-logs_bulk_delete
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ActivityLog'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/ActivityLog'
      tags:
      - activity-logs
    parameters: []
  /activity-logs/clear-all/:
    post:
      operationId: activity-logs_clear_all
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ActivityLog'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/ActivityLog'
      tags:
      - activity-logs
    parameters: []
  /activity-logs/{id}/:
    get:
      operationId: activity-logs_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ActivityLog'
      tags:
      - activity-logs
    delete:
      operationId: activity-logs_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - activity-logs
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا activity log.
      required: true
      type: integer
  /areas/:
    get:
      operationId: areas_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/Area'
      tags:
      - areas
    post:
      operationId: areas_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Area'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Area'
      tags:
      - areas
    parameters: []
  /areas/{id}/:
    get:
      operationId: areas_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Area'
      tags:
      - areas
    put:
      operationId: areas_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Area'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Area'
      tags:
      - areas
    patch:
      operationId: areas_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Area'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Area'
      tags:
      - areas
    delete:
      operationId: areas_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - areas
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا منطقة.
      required: true
      type: integer
  /auth/change-password/:
    post:
      operationId: auth_change-password_create
      summary: Change password (authenticated; current password required)
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ChangePassword'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ChangePasswordResponse'
        '400':
          description: Validation error
        '401':
          description: Not authenticated
      tags:
      - auth
    parameters: []
  /auth/consumer/login/:
    post:
      operationId: auth_consumer_login_create
      summary: Consumer phone login (member app + website; members + applicants)
      description: 'Public login: skip JWT parsing so invalid/expired Bearer tokens
        do not return 401.'
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ConsumerLogin'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ConsumerAuthTokenResponse'
        '400':
          description: Invalid credentials or wrong account type
      tags:
      - auth
    parameters: []
  /auth/consumer/register/:
    post:
      operationId: auth_consumer_register_create
      summary: Register consumer account (SMS OTP; official website + member app)
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ConsumerRegister'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/ConsumerRegisterPendingResponse'
        '400':
          description: Validation error
        '429':
          description: OTP send cooldown
      tags:
      - auth
    parameters: []
  /auth/consumer/register/send-otp/:
    post:
      operationId: auth_consumer_register_send-otp_create
      summary: Resend consumer registration SMS (OTP; max once per 3 minutes per phone)
      description: Resend SMS OTP for a pending consumer registration (website + member
        app).
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ConsumerRegisterSendOtp'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ConsumerRegisterSendOtpResponse'
        '400':
          description: Validation error
        '429':
          description: OTP resend cooldown (Retry-After)
        '503':
          description: SMS provider unavailable
      tags:
      - auth
    parameters: []
  /auth/consumer/register/verify-otp/:
    post:
      operationId: auth_consumer_register_verify-otp_create
      summary: Verify consumer registration OTP (website + member app)
      description: Activate pending consumer account after SMS OTP (returns JWT).
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ConsumerRegisterVerifyOtp'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ConsumerAuthTokenResponse'
        '400':
          description: Validation error
      tags:
      - auth
    parameters: []
  /auth/forgot-password/reset/:
    post:
      operationId: auth_forgot-password_reset_create
      summary: Forgot password — set new password
      description: 'Step 3: set new password using reset token from verify step.'
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ForgotPasswordReset'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ForgotPasswordResetResponse'
        '400':
          description: Validation error
      tags:
      - auth
    parameters: []
  /auth/forgot-password/send-otp/:
    post:
      operationId: auth_forgot-password_send-otp_create
      summary: Forgot password — send SMS OTP
      description: 'Step 1: request SMS OTP for password reset (staff, members, applicants).'
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ForgotPasswordSendOtp'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ForgotPasswordSendOtpResponse'
        '400':
          description: Validation error
        '429':
          description: Cooldown
        '503':
          description: SMS unavailable
      tags:
      - auth
    parameters: []
  /auth/forgot-password/verify-otp/:
    post:
      operationId: auth_forgot-password_verify-otp_create
      summary: Forgot password — verify OTP
      description: 'Step 2: verify SMS OTP and receive a short-lived reset token.'
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ForgotPasswordVerifyOtp'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ForgotPasswordVerifyOtpResponse'
        '400':
          description: Invalid OTP
      tags:
      - auth
    parameters: []
  /auth/login/:
    post:
      operationId: auth_login_create
      description: ''
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - auth
    parameters: []
  /auth/me/:
    get:
      operationId: auth_me_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - auth
    patch:
      operationId: auth_me_partial_update
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - auth
    parameters: []
  /auth/mobile/login/:
    post:
      operationId: auth_mobile_login_create
      summary: Consumer phone login (member app + website; members + applicants)
      description: 'Public login: skip JWT parsing so invalid/expired Bearer tokens
        do not return 401.'
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ConsumerLogin'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ConsumerAuthTokenResponse'
        '400':
          description: Invalid credentials or wrong account type
      tags:
      - auth
    parameters: []
  /auth/mobile/register/:
    post:
      operationId: auth_mobile_register_create
      summary: Register consumer account (SMS OTP; official website + member app)
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ConsumerRegister'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/ConsumerRegisterPendingResponse'
        '400':
          description: Validation error
        '429':
          description: OTP send cooldown
      tags:
      - auth
    parameters: []
  /auth/mobile/register/send-otp/:
    post:
      operationId: auth_mobile_register_send-otp_create
      summary: Resend consumer registration SMS (OTP; max once per 3 minutes per phone)
      description: Resend SMS OTP for a pending consumer registration (website + member
        app).
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ConsumerRegisterSendOtp'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ConsumerRegisterSendOtpResponse'
        '400':
          description: Validation error
        '429':
          description: OTP resend cooldown (Retry-After)
        '503':
          description: SMS provider unavailable
      tags:
      - auth
    parameters: []
  /auth/mobile/register/verify-otp/:
    post:
      operationId: auth_mobile_register_verify-otp_create
      summary: Verify consumer registration OTP (website + member app)
      description: Activate pending consumer account after SMS OTP (returns JWT).
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ConsumerRegisterVerifyOtp'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ConsumerAuthTokenResponse'
        '400':
          description: Validation error
      tags:
      - auth
    parameters: []
  /auth/pre-member/login/:
    post:
      operationId: auth_pre-member_login_create
      summary: Consumer phone login (member app + website; members + applicants)
      description: 'Public login: skip JWT parsing so invalid/expired Bearer tokens
        do not return 401.'
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ConsumerLogin'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ConsumerAuthTokenResponse'
        '400':
          description: Invalid credentials or wrong account type
      tags:
      - auth
    parameters: []
  /auth/pre-member/register/:
    post:
      operationId: auth_pre-member_register_create
      summary: Register consumer account (SMS OTP; official website + member app)
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ConsumerRegister'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/ConsumerRegisterPendingResponse'
        '400':
          description: Validation error
        '429':
          description: OTP send cooldown
      tags:
      - auth
    parameters: []
  /auth/pre-member/register/send-otp/:
    post:
      operationId: auth_pre-member_register_send-otp_create
      summary: Resend consumer registration SMS (OTP; max once per 3 minutes per phone)
      description: Resend SMS OTP for a pending consumer registration (website + member
        app).
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ConsumerRegisterSendOtp'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ConsumerRegisterSendOtpResponse'
        '400':
          description: Validation error
        '429':
          description: OTP resend cooldown (Retry-After)
        '503':
          description: SMS provider unavailable
      tags:
      - auth
    parameters: []
  /auth/pre-member/register/verify-otp/:
    post:
      operationId: auth_pre-member_register_verify-otp_create
      summary: Verify consumer registration OTP (website + member app)
      description: Activate pending consumer account after SMS OTP (returns JWT).
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ConsumerRegisterVerifyOtp'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ConsumerAuthTokenResponse'
        '400':
          description: Validation error
      tags:
      - auth
    parameters: []
  /auth/token/refresh/:
    post:
      operationId: auth_token_refresh_create
      description: |-
        Takes a refresh type JSON web token and returns an access type JSON web
        token if the refresh token is valid.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/TokenRefresh'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/TokenRefresh'
      tags:
      - auth
    parameters: []
  /billing/excluded-dependent-invoices/:
    get:
      operationId: billing_excluded-dependent-invoices_list
      summary: 'Excluded Invoices tab: dependents withheld from a primary invoice.'
      description: Use ``POST …/{id}/issue-invoice/`` to bill the dependent separately
        under the primary member.
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/DependentInvoiceExclusion'
      tags:
      - billing
    parameters: []
  /billing/excluded-dependent-invoices/{id}/:
    get:
      operationId: billing_excluded-dependent-invoices_read
      summary: 'Excluded Invoices tab: dependents withheld from a primary invoice.'
      description: Use ``POST …/{id}/issue-invoice/`` to bill the dependent separately
        under the primary member.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/DependentInvoiceExclusion'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا استبعاد تابع من فاتورة.
      required: true
      type: integer
  /billing/excluded-dependent-invoices/{id}/issue-invoice/:
    post:
      operationId: billing_excluded-dependent-invoices_issue_invoice
      summary: 'Excluded Invoices tab: dependents withheld from a primary invoice.'
      description: Use ``POST …/{id}/issue-invoice/`` to bill the dependent separately
        under the primary member.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/DependentInvoiceExclusion'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/DependentInvoiceExclusion'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا استبعاد تابع من فاتورة.
      required: true
      type: integer
  /billing/invoices/:
    get:
      operationId: billing_invoices_list
      description: ''
      parameters:
      - name: member
        in: query
        description: ''
        required: false
        type: string
      - name: invoice_year
        in: query
        description: ''
        required: false
        type: string
      - name: payment_status
        in: query
        description: ''
        required: false
        type: string
      - name: invoice_kind
        in: query
        description: ''
        required: false
        type: string
      - name: invoice_status
        in: query
        description: ''
        required: false
        type: string
      - name: invoice_number
        in: query
        description: ''
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/AnnualInvoiceList'
      tags:
      - billing
    parameters: []
  /billing/invoices/export-csv/:
    get:
      operationId: billing_invoices_export_csv
      description: ''
      parameters:
      - name: member
        in: query
        description: ''
        required: false
        type: string
      - name: invoice_year
        in: query
        description: ''
        required: false
        type: string
      - name: payment_status
        in: query
        description: ''
        required: false
        type: string
      - name: invoice_kind
        in: query
        description: ''
        required: false
        type: string
      - name: invoice_status
        in: query
        description: ''
        required: false
        type: string
      - name: invoice_number
        in: query
        description: ''
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters: []
  /billing/invoices/import-csv/:
    post:
      operationId: billing_invoices_import_csv
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AnnualInvoice'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters: []
  /billing/invoices/import-template/:
    get:
      operationId: billing_invoices_download_csv_import_template
      description: ''
      parameters:
      - name: member
        in: query
        description: ''
        required: false
        type: string
      - name: invoice_year
        in: query
        description: ''
        required: false
        type: string
      - name: payment_status
        in: query
        description: ''
        required: false
        type: string
      - name: invoice_kind
        in: query
        description: ''
        required: false
        type: string
      - name: invoice_status
        in: query
        description: ''
        required: false
        type: string
      - name: invoice_number
        in: query
        description: ''
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters: []
  /billing/invoices/issue-cumulative/:
    post:
      operationId: billing_invoices_issue_cumulative
      description: Alias of ``issue``; kept for backwards-compatible URLs.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AnnualInvoice'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters: []
  /billing/invoices/issue-establishment-aid/:
    post:
      operationId: billing_invoices_issue_establishment_aid
      description: Issue establishment aid + 14% VAT receivable for a ``pending_activation``
        member.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AnnualInvoice'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters: []
  /billing/invoices/issue/:
    post:
      operationId: billing_invoices_issue
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AnnualInvoice'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters: []
  /billing/invoices/prepare-renewal-draft/:
    post:
      operationId: billing_invoices_prepare_renewal_draft
      description: Create a draft renewal invoice for staff review before final issue.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AnnualInvoice'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters: []
  /billing/invoices/preview-renewal/:
    post:
      operationId: billing_invoices_preview_renewal
      description: Read-only preview of the next renewal invoice (no DB writes).
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AnnualInvoice'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters: []
  /billing/invoices/{id}/:
    get:
      operationId: billing_invoices_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا فاتورة سنوية.
      required: true
      type: integer
  /billing/invoices/{id}/abandon/:
    post:
      operationId: billing_invoices_abandon
      description: Cancel an unpaid staff renewal draft (member may be re-issued later).
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AnnualInvoice'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا فاتورة سنوية.
      required: true
      type: integer
  /billing/invoices/{id}/confirm-issue/:
    post:
      operationId: billing_invoices_confirm_issue
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AnnualInvoice'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا فاتورة سنوية.
      required: true
      type: integer
  /billing/invoices/{id}/draft-lines/:
    post:
      operationId: billing_invoices_add_draft_line
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AnnualInvoice'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا فاتورة سنوية.
      required: true
      type: integer
  /billing/invoices/{id}/draft-lines/{line_pk}/:
    patch:
      operationId: billing_invoices_draft-lines_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AnnualInvoice'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    delete:
      operationId: billing_invoices_draft-lines_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا فاتورة سنوية.
      required: true
      type: integer
    - name: line_pk
      in: path
      required: true
      type: string
  /billing/invoices/{id}/manual-adjustment/:
    post:
      operationId: billing_invoices_manual_adjustment
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AnnualInvoice'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا فاتورة سنوية.
      required: true
      type: integer
  /billing/invoices/{id}/pay/:
    post:
      operationId: billing_invoices_pay_create
      summary: Initiate a Fawry payment session for an existing AnnualInvoice.
      description: |-
        POST /api/v1/billing/invoices/{id}/pay/

        Request body: ``{}``  (the invoice is identified by the URL PK)
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا فاتورة سنوية.
      required: true
      type: integer
  /billing/invoices/{id}/pay/sdk/:
    post:
      operationId: billing_invoices_pay_sdk_create
      summary: Return the signed Fawry request body for **mobile SDK** (Flutter /
        native).
      description: |-
        POST /api/v1/billing/invoices/{id}/pay/sdk/

        Same eligibility as hosted pay (unpaid or partially paid annual invoice).
        Response ``fawry_launch`` matches the JSON body Fawry expects for checkout
        (same fields as ``POST {FAWRY_BASE_URL}/fawrypay-api/api/payments/init``).

        After payment, Fawry calls ``POST /api/v1/payment/fawry/callback/``; the
        invoice is marked paid and a ``MembershipRenewal`` is created when fully paid.
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا فاتورة سنوية.
      required: true
      type: integer
  /billing/invoices/{id}/pay/stripe/:
    post:
      operationId: billing_invoices_pay_stripe_create
      description: 'POST /api/v1/billing/invoices/{id}/pay/stripe/ → ``{"checkout_url":
        "..."}``.'
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا فاتورة سنوية.
      required: true
      type: integer
  /billing/invoices/{id}/pay/stripe/sdk/:
    post:
      operationId: billing_invoices_pay_stripe_sdk_create
      description: POST /api/v1/billing/invoices/{id}/pay/stripe/sdk/ — PaymentIntent
        for mobile.
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا فاتورة سنوية.
      required: true
      type: integer
  /billing/invoices/{id}/record-payment/:
    post:
      operationId: billing_invoices_record_payment
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AnnualInvoice'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا فاتورة سنوية.
      required: true
      type: integer
  /billing/invoices/{id}/replace-draft-lines/:
    post:
      operationId: billing_invoices_replace_draft_lines
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AnnualInvoice'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/AnnualInvoice'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا فاتورة سنوية.
      required: true
      type: integer
  /billing/my-activation-invoice/:
    get:
      operationId: billing_my-activation-invoice_list
      summary: GET unpaid activation annual invoice for the logged-in member (mobile).
      description: |-
        GET /api/v1/billing/my-activation-invoice/

        Matches ``AnnualInvoice.snapshot_payload.invoice_purpose == "activation"``.
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-activation-invoice/pay/:
    post:
      operationId: billing_my-activation-invoice_pay_create
      summary: Hosted Fawry URL for activation invoice payment.
      description: POST /api/v1/billing/my-activation-invoice/pay/
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-activation-invoice/pay/sdk/:
    post:
      operationId: billing_my-activation-invoice_pay_sdk_create
      summary: Fawry mobile SDK checkout for GET my-activation-invoice.
      description: POST /api/v1/billing/my-activation-invoice/pay/sdk/
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-activation-invoice/pay/stripe/:
    post:
      operationId: billing_my-activation-invoice_pay_stripe_create
      description: POST /api/v1/billing/my-activation-invoice/pay/stripe/
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-activation-invoice/pay/stripe/sdk/:
    post:
      operationId: billing_my-activation-invoice_pay_stripe_sdk_create
      description: POST /api/v1/billing/my-activation-invoice/pay/stripe/sdk/
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-establishment-aid/:
    get:
      operationId: billing_my-establishment-aid_list
      summary: GET establishment aid + VAT due for a member pending activation (before
        annual activation invoice).
      description: GET /api/v1/billing/my-establishment-aid/
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-establishment-aid/pay/:
    post:
      operationId: billing_my-establishment-aid_pay_create
      summary: POST hosted Fawry URL for establishment aid + VAT.
      description: POST /api/v1/billing/my-establishment-aid/pay/
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-establishment-aid/pay/sdk/:
    post:
      operationId: billing_my-establishment-aid_pay_sdk_create
      summary: POST Fawry SDK payload for establishment aid + VAT (pending_activation
        only).
      description: POST /api/v1/billing/my-establishment-aid/pay/sdk/
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-establishment-aid/pay/stripe/:
    post:
      operationId: billing_my-establishment-aid_pay_stripe_create
      description: POST /api/v1/billing/my-establishment-aid/pay/stripe/
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-establishment-aid/pay/stripe/sdk/:
    post:
      operationId: billing_my-establishment-aid_pay_stripe_sdk_create
      description: POST /api/v1/billing/my-establishment-aid/pay/stripe/sdk/
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-invoices/:
    get:
      operationId: billing_my-invoices_list
      summary: Annual invoices for the **logged-in** user’s linked ``Member`` (consumer
        app).
      description: |-
        GET /api/v1/billing/my-invoices/

        Optional query: ``payment_status`` — e.g. ``issued``, ``partially_paid``, ``paid`` (see ``InvoicePaymentStatus``).

        Each row includes ``lines_summary`` (``count``, ``total_amount``, readable ``lines`` with
        ``unit_amount`` / ``total_amount`` per row).

        Includes member invoices and **application-fee** invoices for requests the user
        submitted (or that match their email / phone). Does **not** require
        ``billing.view_annualinvoice``; uses ``IsAuthenticated`` only.

        Returns a **JSON array** (no pagination wrapper).
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/MyAnnualInvoice'
      tags:
      - billing
    parameters: []
  /billing/my-invoices/{id}/:
    get:
      operationId: billing_my-invoices_read
      summary: Single invoice for the logged-in member (portal / mobile).
      description: |-
        GET /api/v1/billing/my-invoices/<id>/

        Same ownership rules as the list. Adds invoice number, amount breakdown, and
        ``late_penalties_by_year`` for cumulative renewals.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MyAnnualInvoiceDetail'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /billing/my-membership-renewal/:
    get:
      operationId: billing_my-membership-renewal_list
      summary: GET open renewal invoices + metadata (does **not** issue invoices).
      description: |-
        GET /api/v1/billing/my-membership-renewal/

        Use ``POST …/my-membership-renewal/issue/`` to create a renewal invoice when
        ``can_issue_renewal`` is true. Pay endpoints require an existing open invoice.
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-membership-renewal/issue/:
    post:
      operationId: billing_my-membership-renewal_issue_create
      summary: Issue renewal invoice on demand (portal «إصدار فاتورة للدفع»).
      description: POST /api/v1/billing/my-membership-renewal/issue/
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-membership-renewal/pay/:
    post:
      operationId: billing_my-membership-renewal_pay_create
      summary: Hosted Fawry checkout URL for the combined renewal bundle.
      description: POST /api/v1/billing/my-membership-renewal/pay/
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-membership-renewal/pay/sdk/:
    post:
      operationId: billing_my-membership-renewal_pay_sdk_create
      summary: Start Fawry mobile SDK checkout for the combined renewal bundle (GET
        response).
      description: POST /api/v1/billing/my-membership-renewal/pay/sdk/
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-membership-renewal/pay/stripe/:
    post:
      operationId: billing_my-membership-renewal_pay_stripe_create
      description: POST /api/v1/billing/my-membership-renewal/pay/stripe/
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/my-membership-renewal/pay/stripe/sdk/:
    post:
      operationId: billing_my-membership-renewal_pay_stripe_sdk_create
      description: POST /api/v1/billing/my-membership-renewal/pay/stripe/sdk/
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/overdue-members/:
    get:
      operationId: billing_overdue-members_list
      summary: Overdue member liability report backed by a Redis cache snapshot.
      description: '``list`` reads the on-demand cache. ``retrieve`` computes live
        totals for vouchers.'
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/OverdueMemberPreview'
      tags:
      - billing
    parameters: []
  /billing/overdue-members/rebuild-meta/:
    get:
      operationId: billing_overdue-members_rebuild_meta
      description: Lightweight rebuild state for dashboard progress UI (incl. Celery
        Beat jobs).
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/OverdueMemberPreview'
      tags:
      - billing
    parameters: []
  /billing/overdue-members/rebuild/:
    post:
      operationId: billing_overdue-members_rebuild
      summary: Overdue member liability report backed by a Redis cache snapshot.
      description: '``list`` reads the on-demand cache. ``retrieve`` computes live
        totals for vouchers.'
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/OverdueMemberPreview'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/OverdueMemberPreview'
      tags:
      - billing
    parameters: []
  /billing/overdue-members/rebuild/{task_id}/status/:
    get:
      operationId: billing_overdue-members_rebuild_rebuild_status
      summary: Overdue member liability report backed by a Redis cache snapshot.
      description: '``list`` reads the on-demand cache. ``retrieve`` computes live
        totals for vouchers.'
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/OverdueMemberPreview'
      tags:
      - billing
    parameters:
    - name: task_id
      in: path
      required: true
      type: string
  /billing/overdue-members/{id}/:
    get:
      operationId: billing_overdue-members_read
      summary: Overdue member liability report backed by a Redis cache snapshot.
      description: '``list`` reads the on-demand cache. ``retrieve`` computes live
        totals for vouchers.'
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/OverdueMemberPreview'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /billing/overdue-members/{id}/refresh/:
    post:
      operationId: billing_overdue-members_refresh_member
      summary: Overdue member liability report backed by a Redis cache snapshot.
      description: '``list`` reads the on-demand cache. ``retrieve`` computes live
        totals for vouchers.'
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/OverdueMemberPreview'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/OverdueMemberPreview'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /billing/penalty-transactions/:
    get:
      operationId: billing_penalty-transactions_list
      description: ''
      parameters:
      - name: member
        in: query
        description: ''
        required: false
        type: string
      - name: annual_invoice
        in: query
        description: ''
        required: false
        type: string
      - name: penalty_type
        in: query
        description: ''
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/PenaltyTransaction'
      tags:
      - billing
    parameters: []
  /billing/penalty-transactions/{id}/:
    get:
      operationId: billing_penalty-transactions_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/PenaltyTransaction'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا معاملة غرامة.
      required: true
      type: integer
  /billing/penalty-transactions/{id}/reverse/:
    post:
      operationId: billing_penalty-transactions_reverse
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/PenaltyTransaction'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/PenaltyTransaction'
      tags:
      - billing
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا معاملة غرامة.
      required: true
      type: integer
  /billing/preview/:
    get:
      operationId: billing_preview_list
      summary: Public billing configuration for website and mobile (JSON only).
      description: |-
        GET /api/v1/billing/preview/

        Returns ``billing_settings``, ``years_late_penalty_schedule``, ``dependent_and_join_fees``.
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
      tags:
      - billing
    parameters: []
  /billing/settings/:
    get:
      operationId: billing_settings_read
      description: GET/PATCH singleton billing configuration at ``/billing/settings/``.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/BillingSettings'
      tags:
      - billing
    patch:
      operationId: billing_settings_partial_update
      description: GET/PATCH singleton billing configuration at ``/billing/settings/``.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/BillingSettings'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/BillingSettings'
      tags:
      - billing
    parameters: []
  /billing/subscription-ledger/:
    get:
      operationId: billing_subscription-ledger_list
      summary: GET /api/v1/billing/subscription-ledger/
      description: Paginates members who **paid** the requested season (paid invoice
        or renewal for that year).
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/_SubscriptionLedgerBlock'
      tags:
      - billing
    parameters: []
  /billing/subscription-ledger/list-statistics/:
    get:
      operationId: billing_subscription-ledger_list-statistics_list
      summary: GET /api/v1/billing/subscription-ledger/list-statistics/
      description: Count of members who paid the season (``paid_count``; same search
        filter as list).
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
      tags:
      - billing
    parameters: []
  /combined-statistics/:
    get:
      operationId: combined-statistics_list
      description: Single endpoint for admin dashboard aggregates.
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - combined-statistics
    parameters: []
  /content/activities/:
    get:
      operationId: content_activities_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/ActivityMobile'
      tags:
      - content
    parameters: []
  /content/activities/{id}/:
    get:
      operationId: content_activities_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ActivityMobile'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا النشاط.
      required: true
      type: integer
  /content/activity-types/:
    get:
      operationId: content_activity-types_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/ActivityTypeMobile'
      tags:
      - content
    parameters: []
  /content/activity-types/{id}/:
    get:
      operationId: content_activity-types_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ActivityTypeMobile'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا نوع النشاط.
      required: true
      type: integer
  /content/ads/:
    get:
      operationId: content_ads_list
      description: ''
      parameters:
      - name: is_active
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/AdMobile'
      tags:
      - content
    parameters: []
  /content/ads/{id}/:
    get:
      operationId: content_ads_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/AdMobile'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا إعلان.
      required: true
      type: integer
  /content/board-members/:
    get:
      operationId: content_board-members_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/BoardMemberMobile'
      tags:
      - content
    parameters: []
  /content/board-members/{id}/:
    get:
      operationId: content_board-members_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/BoardMemberMobile'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو مجلس الإدارة.
      required: true
      type: integer
  /content/club-settings/:
    get:
      operationId: content_club-settings_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - content
    parameters: []
  /content/email-smtp-defaults/:
    get:
      operationId: content_email-smtp-defaults_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - content
    patch:
      operationId: content_email-smtp-defaults_partial_update
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - content
    parameters: []
  /content/events/:
    get:
      operationId: content_events_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/EventMobile'
      tags:
      - content
    parameters: []
  /content/events/{id}/:
    get:
      operationId: content_events_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/EventMobile'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا الفعالية.
      required: true
      type: integer
  /content/facilities/:
    get:
      operationId: content_facilities_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/FacilityMobile'
      tags:
      - content
    parameters: []
  /content/facilities/{id}/:
    get:
      operationId: content_facilities_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/FacilityMobile'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا المرفق.
      required: true
      type: integer
  /content/gallery/:
    get:
      operationId: content_gallery_list
      description: ''
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/GalleryImageMobile'
      tags:
      - content
    parameters: []
  /content/gallery/{id}/:
    get:
      operationId: content_gallery_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GalleryImageMobile'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا صورة المعرض.
      required: true
      type: integer
  /content/home-banners/:
    get:
      operationId: content_home-banners_list
      description: ''
      parameters:
      - name: is_active
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/HomeBannerMobile'
      tags:
      - content
    parameters: []
  /content/home-banners/{id}/:
    get:
      operationId: content_home-banners_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/HomeBannerMobile'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا بانر الرئيسية.
      required: true
      type: integer
  /content/manage/activities/:
    get:
      operationId: content_manage_activities_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/ActivityManagement'
      tags:
      - content
    post:
      operationId: content_manage_activities_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ActivityManagement'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/ActivityManagement'
      tags:
      - content
    parameters: []
  /content/manage/activities/{id}/:
    get:
      operationId: content_manage_activities_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ActivityManagement'
      tags:
      - content
    put:
      operationId: content_manage_activities_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ActivityManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ActivityManagement'
      tags:
      - content
    patch:
      operationId: content_manage_activities_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ActivityManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ActivityManagement'
      tags:
      - content
    delete:
      operationId: content_manage_activities_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا النشاط.
      required: true
      type: integer
  /content/manage/activity-types/:
    get:
      operationId: content_manage_activity-types_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/ActivityTypeManagement'
      tags:
      - content
    post:
      operationId: content_manage_activity-types_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ActivityTypeManagement'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/ActivityTypeManagement'
      tags:
      - content
    parameters: []
  /content/manage/activity-types/{id}/:
    get:
      operationId: content_manage_activity-types_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ActivityTypeManagement'
      tags:
      - content
    put:
      operationId: content_manage_activity-types_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ActivityTypeManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ActivityTypeManagement'
      tags:
      - content
    patch:
      operationId: content_manage_activity-types_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/ActivityTypeManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ActivityTypeManagement'
      tags:
      - content
    delete:
      operationId: content_manage_activity-types_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا نوع النشاط.
      required: true
      type: integer
  /content/manage/ads/:
    get:
      operationId: content_manage_ads_list
      description: ''
      parameters:
      - name: is_active
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/AdManagement'
      tags:
      - content
    post:
      operationId: content_manage_ads_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AdManagement'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/AdManagement'
      tags:
      - content
    parameters: []
  /content/manage/ads/{id}/:
    get:
      operationId: content_manage_ads_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/AdManagement'
      tags:
      - content
    put:
      operationId: content_manage_ads_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AdManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/AdManagement'
      tags:
      - content
    patch:
      operationId: content_manage_ads_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/AdManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/AdManagement'
      tags:
      - content
    delete:
      operationId: content_manage_ads_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا إعلان.
      required: true
      type: integer
  /content/manage/board-members/:
    get:
      operationId: content_manage_board-members_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/BoardMemberManagement'
      tags:
      - content
    post:
      operationId: content_manage_board-members_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/BoardMemberManagement'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/BoardMemberManagement'
      tags:
      - content
    parameters: []
  /content/manage/board-members/{id}/:
    get:
      operationId: content_manage_board-members_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/BoardMemberManagement'
      tags:
      - content
    put:
      operationId: content_manage_board-members_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/BoardMemberManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/BoardMemberManagement'
      tags:
      - content
    patch:
      operationId: content_manage_board-members_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/BoardMemberManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/BoardMemberManagement'
      tags:
      - content
    delete:
      operationId: content_manage_board-members_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو مجلس الإدارة.
      required: true
      type: integer
  /content/manage/club-settings/:
    get:
      operationId: content_manage_club-settings_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - content
    post:
      operationId: content_manage_club-settings_create
      description: ''
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - content
    patch:
      operationId: content_manage_club-settings_partial_update
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - content
    parameters: []
  /content/manage/events/:
    get:
      operationId: content_manage_events_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/EventManagement'
      tags:
      - content
    post:
      operationId: content_manage_events_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/EventManagement'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/EventManagement'
      tags:
      - content
    parameters: []
  /content/manage/events/{id}/:
    get:
      operationId: content_manage_events_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/EventManagement'
      tags:
      - content
    put:
      operationId: content_manage_events_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/EventManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/EventManagement'
      tags:
      - content
    patch:
      operationId: content_manage_events_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/EventManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/EventManagement'
      tags:
      - content
    delete:
      operationId: content_manage_events_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا الفعالية.
      required: true
      type: integer
  /content/manage/facilities/:
    get:
      operationId: content_manage_facilities_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/FacilityManagement'
      tags:
      - content
    post:
      operationId: content_manage_facilities_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/FacilityManagement'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/FacilityManagement'
      tags:
      - content
    parameters: []
  /content/manage/facilities/{id}/:
    get:
      operationId: content_manage_facilities_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/FacilityManagement'
      tags:
      - content
    put:
      operationId: content_manage_facilities_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/FacilityManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/FacilityManagement'
      tags:
      - content
    patch:
      operationId: content_manage_facilities_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/FacilityManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/FacilityManagement'
      tags:
      - content
    delete:
      operationId: content_manage_facilities_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا المرفق.
      required: true
      type: integer
  /content/manage/gallery/:
    get:
      operationId: content_manage_gallery_list
      description: ''
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/GalleryImageManagement'
      tags:
      - content
    post:
      operationId: content_manage_gallery_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/GalleryImageManagement'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/GalleryImageManagement'
      tags:
      - content
    parameters: []
  /content/manage/gallery/{id}/:
    get:
      operationId: content_manage_gallery_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GalleryImageManagement'
      tags:
      - content
    put:
      operationId: content_manage_gallery_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/GalleryImageManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GalleryImageManagement'
      tags:
      - content
    patch:
      operationId: content_manage_gallery_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/GalleryImageManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GalleryImageManagement'
      tags:
      - content
    delete:
      operationId: content_manage_gallery_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا صورة المعرض.
      required: true
      type: integer
  /content/manage/home-banners/:
    get:
      operationId: content_manage_home-banners_list
      description: ''
      parameters:
      - name: is_active
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/HomeBannerManagement'
      tags:
      - content
    post:
      operationId: content_manage_home-banners_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/HomeBannerManagement'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/HomeBannerManagement'
      tags:
      - content
    parameters: []
  /content/manage/home-banners/{id}/:
    get:
      operationId: content_manage_home-banners_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/HomeBannerManagement'
      tags:
      - content
    put:
      operationId: content_manage_home-banners_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/HomeBannerManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/HomeBannerManagement'
      tags:
      - content
    patch:
      operationId: content_manage_home-banners_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/HomeBannerManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/HomeBannerManagement'
      tags:
      - content
    delete:
      operationId: content_manage_home-banners_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا بانر الرئيسية.
      required: true
      type: integer
  /content/manage/news/:
    get:
      operationId: content_manage_news_list
      description: ''
      parameters:
      - name: news_type
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/NewsManagement'
      tags:
      - content
    post:
      operationId: content_manage_news_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/NewsManagement'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/NewsManagement'
      tags:
      - content
    parameters: []
  /content/manage/news/{id}/:
    get:
      operationId: content_manage_news_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/NewsManagement'
      tags:
      - content
    put:
      operationId: content_manage_news_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/NewsManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/NewsManagement'
      tags:
      - content
    patch:
      operationId: content_manage_news_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/NewsManagement'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/NewsManagement'
      tags:
      - content
    delete:
      operationId: content_manage_news_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا خبر.
      required: true
      type: integer
  /content/news/:
    get:
      operationId: content_news_list
      description: ''
      parameters:
      - name: news_type
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/NewsMobile'
      tags:
      - content
    parameters: []
  /content/news/{id}/:
    get:
      operationId: content_news_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/NewsMobile'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا خبر.
      required: true
      type: integer
  /content/website/activities/:
    get:
      operationId: content_website_activities_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/ActivityWebsite'
      tags:
      - content
    parameters: []
  /content/website/activities/{id}/:
    get:
      operationId: content_website_activities_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ActivityWebsite'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا النشاط.
      required: true
      type: integer
  /content/website/activity-types/:
    get:
      operationId: content_website_activity-types_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/ActivityTypeWebsite'
      tags:
      - content
    parameters: []
  /content/website/activity-types/{id}/:
    get:
      operationId: content_website_activity-types_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/ActivityTypeWebsite'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا نوع النشاط.
      required: true
      type: integer
  /content/website/ads/:
    get:
      operationId: content_website_ads_list
      description: ''
      parameters:
      - name: is_active
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/AdWebsite'
      tags:
      - content
    parameters: []
  /content/website/ads/{id}/:
    get:
      operationId: content_website_ads_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/AdWebsite'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا إعلان.
      required: true
      type: integer
  /content/website/board-members/:
    get:
      operationId: content_website_board-members_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/BoardMemberWebsite'
      tags:
      - content
    parameters: []
  /content/website/board-members/{id}/:
    get:
      operationId: content_website_board-members_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/BoardMemberWebsite'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو مجلس الإدارة.
      required: true
      type: integer
  /content/website/club-settings/:
    get:
      operationId: content_website_club-settings_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - content
    parameters: []
  /content/website/events/:
    get:
      operationId: content_website_events_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/EventWebsite'
      tags:
      - content
    parameters: []
  /content/website/events/{id}/:
    get:
      operationId: content_website_events_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/EventWebsite'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا الفعالية.
      required: true
      type: integer
  /content/website/facilities/:
    get:
      operationId: content_website_facilities_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/FacilityWebsite'
      tags:
      - content
    parameters: []
  /content/website/facilities/{id}/:
    get:
      operationId: content_website_facilities_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/FacilityWebsite'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا المرفق.
      required: true
      type: integer
  /content/website/gallery/:
    get:
      operationId: content_website_gallery_list
      description: ''
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/GalleryImageWebsite'
      tags:
      - content
    parameters: []
  /content/website/gallery/{id}/:
    get:
      operationId: content_website_gallery_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GalleryImageWebsite'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا صورة المعرض.
      required: true
      type: integer
  /content/website/home-banners/:
    get:
      operationId: content_website_home-banners_list
      description: ''
      parameters:
      - name: is_active
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/HomeBannerWebsite'
      tags:
      - content
    parameters: []
  /content/website/home-banners/{id}/:
    get:
      operationId: content_website_home-banners_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/HomeBannerWebsite'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا بانر الرئيسية.
      required: true
      type: integer
  /content/website/news/:
    get:
      operationId: content_website_news_list
      description: ''
      parameters:
      - name: news_type
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/NewsWebsite'
      tags:
      - content
    parameters: []
  /content/website/news/{id}/:
    get:
      operationId: content_website_news_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/NewsWebsite'
      tags:
      - content
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا خبر.
      required: true
      type: integer
  /data-exports/{task_id}/download/:
    get:
      operationId: data-exports_download_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - data-exports
    parameters:
    - name: task_id
      in: path
      required: true
      type: string
  /data-exports/{task_id}/status/:
    get:
      operationId: data-exports_status_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - data-exports
    parameters:
    - name: task_id
      in: path
      required: true
      type: string
  /dependent-member-requests/:
    get:
      operationId: dependent-member-requests_list
      description: Primary members create pending requests; staff approve/reject.
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/DependentMemberRequest'
      tags:
      - dependent-member-requests
    post:
      operationId: dependent-member-requests_create
      description: Primary members create pending requests; staff approve/reject.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/DependentMemberRequestCreate'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/DependentMemberRequestCreate'
      tags:
      - dependent-member-requests
    parameters: []
  /dependent-member-requests/export-csv/:
    get:
      operationId: dependent-member-requests_export_csv
      description: Primary members create pending requests; staff approve/reject.
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/DependentMemberRequest'
      tags:
      - dependent-member-requests
    parameters: []
  /dependent-member-requests/import-csv/:
    post:
      operationId: dependent-member-requests_import_csv
      description: Primary members create pending requests; staff approve/reject.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/DependentMemberRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/DependentMemberRequest'
      tags:
      - dependent-member-requests
    parameters: []
  /dependent-member-requests/import-template/:
    get:
      operationId: dependent-member-requests_download_csv_import_template
      description: Primary members create pending requests; staff approve/reject.
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/DependentMemberRequest'
      tags:
      - dependent-member-requests
    parameters: []
  /dependent-member-requests/{id}/:
    get:
      operationId: dependent-member-requests_read
      description: Primary members create pending requests; staff approve/reject.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/DependentMemberRequest'
      tags:
      - dependent-member-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب إضافة تابع.
      required: true
      type: integer
  /dependent-member-requests/{id}/approve/:
    post:
      operationId: dependent-member-requests_approve
      description: Primary members create pending requests; staff approve/reject.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/DependentMemberRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/DependentMemberRequest'
      tags:
      - dependent-member-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب إضافة تابع.
      required: true
      type: integer
  /dependent-member-requests/{id}/reject/:
    post:
      operationId: dependent-member-requests_reject
      description: Primary members create pending requests; staff approve/reject.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/DependentMemberRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/DependentMemberRequest'
      tags:
      - dependent-member-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب إضافة تابع.
      required: true
      type: integer
  /dependent-member-requests/{id}/schedule-interview/:
    post:
      operationId: dependent-member-requests_schedule_interview
      description: Primary members create pending requests; staff approve/reject.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/DependentMemberRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/DependentMemberRequest'
      tags:
      - dependent-member-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب إضافة تابع.
      required: true
      type: integer
  /family-registry-submissions/:
    get:
      operationId: family-registry-submissions_list
      description: ''
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/SisterFamilyRegistrySubmission'
      tags:
      - family-registry-submissions
    post:
      operationId: family-registry-submissions_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/SisterFamilyRegistrySubmission'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/SisterFamilyRegistrySubmission'
      tags:
      - family-registry-submissions
    parameters: []
  /family-registry-submissions/{id}/:
    get:
      operationId: family-registry-submissions_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/SisterFamilyRegistrySubmission'
      tags:
      - family-registry-submissions
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /family-registry-submissions/{id}/approve/:
    post:
      operationId: family-registry-submissions_approve
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/SisterFamilyRegistrySubmission'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/SisterFamilyRegistrySubmission'
      tags:
      - family-registry-submissions
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /family-registry-submissions/{id}/reject/:
    post:
      operationId: family-registry-submissions_reject
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/SisterFamilyRegistrySubmission'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/SisterFamilyRegistrySubmission'
      tags:
      - family-registry-submissions
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /genders/:
    get:
      operationId: genders_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - genders
    parameters: []
  /general-assembly-meetings/:
    get:
      operationId: general-assembly-meetings_list
      description: ''
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    post:
      operationId: general-assembly-meetings_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/GeneralAssemblyMeeting'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    parameters: []
  /general-assembly-meetings/export-csv/:
    get:
      operationId: general-assembly-meetings_export_csv
      description: ''
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    parameters: []
  /general-assembly-meetings/import-csv/:
    post:
      operationId: general-assembly-meetings_import_csv
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/GeneralAssemblyMeeting'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    parameters: []
  /general-assembly-meetings/import-template/:
    get:
      operationId: general-assembly-meetings_download_csv_import_template
      description: ''
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    parameters: []
  /general-assembly-meetings/{id}/:
    get:
      operationId: general-assembly-meetings_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    put:
      operationId: general-assembly-meetings_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/GeneralAssemblyMeeting'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    patch:
      operationId: general-assembly-meetings_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/GeneralAssemblyMeeting'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    delete:
      operationId: general-assembly-meetings_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - general-assembly-meetings
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /general-assembly-meetings/{id}/attendance-eligible-grid/:
    get:
      operationId: general-assembly-meetings_attendance_eligible_grid
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /general-assembly-meetings/{id}/attendances/:
    get:
      operationId: general-assembly-meetings_attendances
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /general-assembly-meetings/{id}/bulk-attendance/:
    post:
      operationId: general-assembly-meetings_bulk_attendance
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/GeneralAssemblyMeeting'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /general-assembly-meetings/{id}/export-attendance-csv/:
    get:
      operationId: general-assembly-meetings_export_attendance_csv
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /general-assembly-meetings/{id}/finalize-attendance/:
    post:
      operationId: general-assembly-meetings_finalize_attendance
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/GeneralAssemblyMeeting'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /general-assembly-meetings/{id}/ga-absence-estimate/:
    get:
      operationId: general-assembly-meetings_ga_absence_estimate
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /general-assembly-meetings/{id}/import-attendance-csv/:
    post:
      operationId: general-assembly-meetings_import_attendance_csv
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/GeneralAssemblyMeeting'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /general-assembly-meetings/{id}/import-attendance-template/:
    get:
      operationId: general-assembly-meetings_download_attendance_import_template
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GeneralAssemblyMeeting'
      tags:
      - general-assembly-meetings
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /jobs/:
    get:
      operationId: jobs_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/Job'
      tags:
      - jobs
    post:
      operationId: jobs_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Job'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Job'
      tags:
      - jobs
    parameters: []
  /jobs/{id}/:
    get:
      operationId: jobs_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Job'
      tags:
      - jobs
    put:
      operationId: jobs_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Job'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Job'
      tags:
      - jobs
    patch:
      operationId: jobs_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Job'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Job'
      tags:
      - jobs
    delete:
      operationId: jobs_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - jobs
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا وظيفة.
      required: true
      type: integer
  /members/:
    get:
      operationId: members_list
      description: ''
      parameters:
      - name: membership_status
        in: query
        description: ''
        required: false
        type: string
      - name: member_role
        in: query
        description: ''
        required: false
        type: string
      - name: relationship_type_id
        in: query
        description: ''
        required: false
        type: string
      - name: gender
        in: query
        description: ''
        required: false
        type: string
      - name: area
        in: query
        description: ''
        required: false
        type: string
      - name: section
        in: query
        description: ''
        required: false
        type: string
      - name: qualification
        in: query
        description: ''
        required: false
        type: string
      - name: marital_status
        in: query
        description: ''
        required: false
        type: string
      - name: approval_from
        in: query
        description: ''
        required: false
        type: string
      - name: approval_to
        in: query
        description: ''
        required: false
        type: string
      - name: ordering
        in: query
        description: أي حقل يجب استخدامه عند ترتيب النتائج.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/MemberList'
      tags:
      - members
    post:
      operationId: members_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MemberCreate'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MemberCreate'
      tags:
      - members
    parameters: []
  /members/export-all/:
    get:
      operationId: members_export_all
      description: ''
      parameters:
      - name: membership_status
        in: query
        description: ''
        required: false
        type: string
      - name: member_role
        in: query
        description: ''
        required: false
        type: string
      - name: relationship_type_id
        in: query
        description: ''
        required: false
        type: string
      - name: gender
        in: query
        description: ''
        required: false
        type: string
      - name: area
        in: query
        description: ''
        required: false
        type: string
      - name: section
        in: query
        description: ''
        required: false
        type: string
      - name: qualification
        in: query
        description: ''
        required: false
        type: string
      - name: marital_status
        in: query
        description: ''
        required: false
        type: string
      - name: approval_from
        in: query
        description: ''
        required: false
        type: string
      - name: approval_to
        in: query
        description: ''
        required: false
        type: string
      - name: ordering
        in: query
        description: أي حقل يجب استخدامه عند ترتيب النتائج.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/Member'
      tags:
      - members
    parameters: []
  /members/import-new/:
    post:
      operationId: members_import_new_members
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Member'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - members
    parameters: []
  /members/import-template/:
    get:
      operationId: members_download_import_template
      description: ''
      parameters:
      - name: membership_status
        in: query
        description: ''
        required: false
        type: string
      - name: member_role
        in: query
        description: ''
        required: false
        type: string
      - name: relationship_type_id
        in: query
        description: ''
        required: false
        type: string
      - name: gender
        in: query
        description: ''
        required: false
        type: string
      - name: area
        in: query
        description: ''
        required: false
        type: string
      - name: section
        in: query
        description: ''
        required: false
        type: string
      - name: qualification
        in: query
        description: ''
        required: false
        type: string
      - name: marital_status
        in: query
        description: ''
        required: false
        type: string
      - name: approval_from
        in: query
        description: ''
        required: false
        type: string
      - name: approval_to
        in: query
        description: ''
        required: false
        type: string
      - name: ordering
        in: query
        description: أي حقل يجب استخدامه عند ترتيب النتائج.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/Member'
      tags:
      - members
    parameters: []
  /members/list-statistics/:
    get:
      operationId: members_list_statistics
      description: ''
      parameters:
      - name: membership_status
        in: query
        description: ''
        required: false
        type: string
      - name: member_role
        in: query
        description: ''
        required: false
        type: string
      - name: relationship_type_id
        in: query
        description: ''
        required: false
        type: string
      - name: gender
        in: query
        description: ''
        required: false
        type: string
      - name: area
        in: query
        description: ''
        required: false
        type: string
      - name: section
        in: query
        description: ''
        required: false
        type: string
      - name: qualification
        in: query
        description: ''
        required: false
        type: string
      - name: marital_status
        in: query
        description: ''
        required: false
        type: string
      - name: approval_from
        in: query
        description: ''
        required: false
        type: string
      - name: approval_to
        in: query
        description: ''
        required: false
        type: string
      - name: ordering
        in: query
        description: أي حقل يجب استخدامه عند ترتيب النتائج.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/Member'
      tags:
      - members
    parameters: []
  /members/{id}/:
    get:
      operationId: members_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - members
    put:
      operationId: members_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MemberUpdate'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MemberUpdate'
      tags:
      - members
    patch:
      operationId: members_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MemberUpdate'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MemberUpdate'
      tags:
      - members
    delete:
      operationId: members_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - members
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /members/{id}/activate/:
    post:
      operationId: members_activate
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Member'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - members
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /members/{id}/contacts/:
    get:
      operationId: members_contacts
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - members
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /members/{id}/deactivate/:
    post:
      operationId: members_deactivate
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Member'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - members
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /members/{id}/dependents/:
    get:
      operationId: members_dependents
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - members
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /members/{id}/dependents/add/:
    post:
      operationId: members_dependents_add_dependent
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Member'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - members
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /members/{id}/promote-to-primary/:
    post:
      operationId: members_promote_to_primary
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Member'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - members
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /members/{id}/renewals/:
    get:
      operationId: members_renewals
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - members
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /membership-renewals/:
    get:
      operationId: membership-renewals_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/MembershipRenewalList'
      tags:
      - membership-renewals
    post:
      operationId: membership-renewals_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRenewal'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRenewal'
      tags:
      - membership-renewals
    parameters: []
  /membership-renewals/export-csv/:
    get:
      operationId: membership-renewals_export_csv
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/MembershipRenewal'
      tags:
      - membership-renewals
    parameters: []
  /membership-renewals/import-csv/:
    post:
      operationId: membership-renewals_import_csv
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRenewal'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRenewal'
      tags:
      - membership-renewals
    parameters: []
  /membership-renewals/import-template/:
    get:
      operationId: membership-renewals_download_csv_import_template
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/MembershipRenewal'
      tags:
      - membership-renewals
    parameters: []
  /membership-renewals/list-statistics/:
    get:
      operationId: membership-renewals_list_statistics
      description: Dashboard card stats for payments (list filters + search; not paginated).
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/MembershipRenewal'
      tags:
      - membership-renewals
    parameters: []
  /membership-renewals/{id}/:
    get:
      operationId: membership-renewals_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRenewal'
      tags:
      - membership-renewals
    put:
      operationId: membership-renewals_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRenewal'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRenewal'
      tags:
      - membership-renewals
    patch:
      operationId: membership-renewals_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRenewal'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRenewal'
      tags:
      - membership-renewals
    delete:
      operationId: membership-renewals_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - membership-renewals
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا تجديد عضوية.
      required: true
      type: integer
  /membership-requests/:
    get:
      operationId: membership-requests_list
      description: ''
      parameters:
      - name: status
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/ListMembershipRequest'
      tags:
      - membership-requests
    post:
      operationId: membership-requests_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters: []
  /membership-requests/by-request-id/{request_id}/:
    get:
      operationId: membership-requests_public_by_request_id
      description: ''
      parameters:
      - name: status
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: request_id
      in: path
      description: يُنشأ على الخادم تلقائياً؛ لا يُقبل من العميل في الطلبات.
      required: true
      type: string
      format: uuid
  /membership-requests/by-request-id/{request_id}/application-fee/pay/:
    post:
      operationId: membership-requests_by-request-id_application-fee_application_fee_pay_hosted_public
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: request_id
      in: path
      description: يُنشأ على الخادم تلقائياً؛ لا يُقبل من العميل في الطلبات.
      required: true
      type: string
      format: uuid
  /membership-requests/by-request-id/{request_id}/application-fee/pay/sdk/:
    post:
      operationId: membership-requests_by-request-id_application-fee_pay_application_fee_pay_sdk_public
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: request_id
      in: path
      description: يُنشأ على الخادم تلقائياً؛ لا يُقبل من العميل في الطلبات.
      required: true
      type: string
      format: uuid
  /membership-requests/by-request-id/{request_id}/application-fee/pay/stripe/:
    post:
      operationId: membership-requests_by-request-id_application-fee_pay_application_fee_pay_stripe_hosted_public
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: request_id
      in: path
      description: يُنشأ على الخادم تلقائياً؛ لا يُقبل من العميل في الطلبات.
      required: true
      type: string
      format: uuid
  /membership-requests/by-request-id/{request_id}/application-fee/pay/stripe/sdk/:
    post:
      operationId: membership-requests_by-request-id_application-fee_pay_stripe_application_fee_pay_stripe_sdk_public
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: request_id
      in: path
      description: يُنشأ على الخادم تلقائياً؛ لا يُقبل من العميل في الطلبات.
      required: true
      type: string
      format: uuid
  /membership-requests/export-csv/:
    get:
      operationId: membership-requests_export_csv
      description: ''
      parameters:
      - name: status
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters: []
  /membership-requests/import-csv/:
    post:
      operationId: membership-requests_import_csv
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters: []
  /membership-requests/import-template/:
    get:
      operationId: membership-requests_download_csv_import_template
      description: ''
      parameters:
      - name: status
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters: []
  /membership-requests/{id}/:
    get:
      operationId: membership-requests_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    put:
      operationId: membership-requests_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    patch:
      operationId: membership-requests_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    delete:
      operationId: membership-requests_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - membership-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب عضوية.
      required: true
      type: integer
  /membership-requests/{id}/application-fee/pay/:
    post:
      operationId: membership-requests_application-fee_application_fee_pay_hosted
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب عضوية.
      required: true
      type: integer
  /membership-requests/{id}/application-fee/pay/sdk/:
    post:
      operationId: membership-requests_application-fee_pay_application_fee_pay_sdk
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب عضوية.
      required: true
      type: integer
  /membership-requests/{id}/application-fee/pay/stripe/:
    post:
      operationId: membership-requests_application-fee_pay_application_fee_pay_stripe_hosted
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب عضوية.
      required: true
      type: integer
  /membership-requests/{id}/application-fee/pay/stripe/sdk/:
    post:
      operationId: membership-requests_application-fee_pay_stripe_application_fee_pay_stripe_sdk
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب عضوية.
      required: true
      type: integer
  /membership-requests/{id}/approve/:
    post:
      operationId: membership-requests_approve
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب عضوية.
      required: true
      type: integer
  /membership-requests/{id}/notes/:
    get:
      operationId: membership-requests_notes_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    post:
      operationId: membership-requests_notes_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب عضوية.
      required: true
      type: integer
  /membership-requests/{id}/reject/:
    post:
      operationId: membership-requests_reject
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب عضوية.
      required: true
      type: integer
  /membership-requests/{id}/request-clarification/:
    post:
      operationId: membership-requests_request_clarification
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب عضوية.
      required: true
      type: integer
  /membership-requests/{id}/respond-clarification/:
    patch:
      operationId: membership-requests_respond_clarification
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب عضوية.
      required: true
      type: integer
  /membership-requests/{id}/schedule-interview/:
    post:
      operationId: membership-requests_schedule_interview
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipRequest'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipRequest'
      tags:
      - membership-requests
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا طلب عضوية.
      required: true
      type: integer
  /membership-types/:
    get:
      operationId: membership-types_list
      description: ''
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/MembershipCategory'
      tags:
      - membership-types
    post:
      operationId: membership-types_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipCategory'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipCategory'
      tags:
      - membership-types
    parameters: []
  /membership-types/{id}/:
    get:
      operationId: membership-types_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipCategoryDetail'
      tags:
      - membership-types
    put:
      operationId: membership-types_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipCategory'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipCategory'
      tags:
      - membership-types
    patch:
      operationId: membership-types_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipCategory'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipCategory'
      tags:
      - membership-types
    delete:
      operationId: membership-types_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - membership-types
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا فئة العضوية.
      required: true
      type: integer
  /membership-types/{membership_type_pk}/billing-terms-by-invoice-year/:
    get:
      operationId: membership-types_billing-terms-by-invoice-year_list
      description: Nested under ``/membership-types/{id}/billing-terms-by-invoice-year/``.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/MembershipCategoryBillingTermsByInvoiceYear'
      tags:
      - membership-types
    post:
      operationId: membership-types_billing-terms-by-invoice-year_create
      description: Nested under ``/membership-types/{id}/billing-terms-by-invoice-year/``.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipCategoryBillingTermsByInvoiceYear'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipCategoryBillingTermsByInvoiceYear'
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
  /membership-types/{membership_type_pk}/billing-terms-by-invoice-year/{id}/:
    get:
      operationId: membership-types_billing-terms-by-invoice-year_read
      description: Nested under ``/membership-types/{id}/billing-terms-by-invoice-year/``.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipCategoryBillingTermsByInvoiceYear'
      tags:
      - membership-types
    put:
      operationId: membership-types_billing-terms-by-invoice-year_update
      description: Nested under ``/membership-types/{id}/billing-terms-by-invoice-year/``.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipCategoryBillingTermsByInvoiceYear'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipCategoryBillingTermsByInvoiceYear'
      tags:
      - membership-types
    patch:
      operationId: membership-types_billing-terms-by-invoice-year_partial_update
      description: Nested under ``/membership-types/{id}/billing-terms-by-invoice-year/``.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipCategoryBillingTermsByInvoiceYear'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipCategoryBillingTermsByInvoiceYear'
      tags:
      - membership-types
    delete:
      operationId: membership-types_billing-terms-by-invoice-year_delete
      description: Nested under ``/membership-types/{id}/billing-terms-by-invoice-year/``.
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
    - name: id
      in: path
      required: true
      type: string
  /membership-types/{membership_type_pk}/members/:
    get:
      operationId: membership-types_members_list
      description: ''
      parameters:
      - name: membership_status
        in: query
        description: ''
        required: false
        type: string
      - name: member_role
        in: query
        description: ''
        required: false
        type: string
      - name: relationship_type_id
        in: query
        description: ''
        required: false
        type: string
      - name: gender
        in: query
        description: ''
        required: false
        type: string
      - name: area
        in: query
        description: ''
        required: false
        type: string
      - name: section
        in: query
        description: ''
        required: false
        type: string
      - name: qualification
        in: query
        description: ''
        required: false
        type: string
      - name: marital_status
        in: query
        description: ''
        required: false
        type: string
      - name: approval_from
        in: query
        description: ''
        required: false
        type: string
      - name: approval_to
        in: query
        description: ''
        required: false
        type: string
      - name: ordering
        in: query
        description: أي حقل يجب استخدامه عند ترتيب النتائج.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/MemberList'
      tags:
      - membership-types
    post:
      operationId: membership-types_members_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MemberCreate'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MemberCreate'
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
  /membership-types/{membership_type_pk}/members/export-all/:
    get:
      operationId: membership-types_members_export_all
      description: ''
      parameters:
      - name: membership_status
        in: query
        description: ''
        required: false
        type: string
      - name: member_role
        in: query
        description: ''
        required: false
        type: string
      - name: relationship_type_id
        in: query
        description: ''
        required: false
        type: string
      - name: gender
        in: query
        description: ''
        required: false
        type: string
      - name: area
        in: query
        description: ''
        required: false
        type: string
      - name: section
        in: query
        description: ''
        required: false
        type: string
      - name: qualification
        in: query
        description: ''
        required: false
        type: string
      - name: marital_status
        in: query
        description: ''
        required: false
        type: string
      - name: approval_from
        in: query
        description: ''
        required: false
        type: string
      - name: approval_to
        in: query
        description: ''
        required: false
        type: string
      - name: ordering
        in: query
        description: أي حقل يجب استخدامه عند ترتيب النتائج.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/Member'
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
  /membership-types/{membership_type_pk}/members/import-new/:
    post:
      operationId: membership-types_members_import_new_members
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Member'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
  /membership-types/{membership_type_pk}/members/import-template/:
    get:
      operationId: membership-types_members_download_import_template
      description: ''
      parameters:
      - name: membership_status
        in: query
        description: ''
        required: false
        type: string
      - name: member_role
        in: query
        description: ''
        required: false
        type: string
      - name: relationship_type_id
        in: query
        description: ''
        required: false
        type: string
      - name: gender
        in: query
        description: ''
        required: false
        type: string
      - name: area
        in: query
        description: ''
        required: false
        type: string
      - name: section
        in: query
        description: ''
        required: false
        type: string
      - name: qualification
        in: query
        description: ''
        required: false
        type: string
      - name: marital_status
        in: query
        description: ''
        required: false
        type: string
      - name: approval_from
        in: query
        description: ''
        required: false
        type: string
      - name: approval_to
        in: query
        description: ''
        required: false
        type: string
      - name: ordering
        in: query
        description: أي حقل يجب استخدامه عند ترتيب النتائج.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/Member'
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
  /membership-types/{membership_type_pk}/members/list-statistics/:
    get:
      operationId: membership-types_members_list_statistics
      description: ''
      parameters:
      - name: membership_status
        in: query
        description: ''
        required: false
        type: string
      - name: member_role
        in: query
        description: ''
        required: false
        type: string
      - name: relationship_type_id
        in: query
        description: ''
        required: false
        type: string
      - name: gender
        in: query
        description: ''
        required: false
        type: string
      - name: area
        in: query
        description: ''
        required: false
        type: string
      - name: section
        in: query
        description: ''
        required: false
        type: string
      - name: qualification
        in: query
        description: ''
        required: false
        type: string
      - name: marital_status
        in: query
        description: ''
        required: false
        type: string
      - name: approval_from
        in: query
        description: ''
        required: false
        type: string
      - name: approval_to
        in: query
        description: ''
        required: false
        type: string
      - name: ordering
        in: query
        description: أي حقل يجب استخدامه عند ترتيب النتائج.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/Member'
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
  /membership-types/{membership_type_pk}/members/{id}/:
    get:
      operationId: membership-types_members_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - membership-types
    put:
      operationId: membership-types_members_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MemberUpdate'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MemberUpdate'
      tags:
      - membership-types
    patch:
      operationId: membership-types_members_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MemberUpdate'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MemberUpdate'
      tags:
      - membership-types
    delete:
      operationId: membership-types_members_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /membership-types/{membership_type_pk}/members/{id}/activate/:
    post:
      operationId: membership-types_members_activate
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Member'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /membership-types/{membership_type_pk}/members/{id}/contacts/:
    get:
      operationId: membership-types_members_contacts
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /membership-types/{membership_type_pk}/members/{id}/deactivate/:
    post:
      operationId: membership-types_members_deactivate
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Member'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /membership-types/{membership_type_pk}/members/{id}/dependents/:
    get:
      operationId: membership-types_members_dependents
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /membership-types/{membership_type_pk}/members/{id}/dependents/add/:
    post:
      operationId: membership-types_members_dependents_add_dependent
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Member'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /membership-types/{membership_type_pk}/members/{id}/promote-to-primary/:
    post:
      operationId: membership-types_members_promote_to_primary
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Member'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /membership-types/{membership_type_pk}/members/{id}/renewals/:
    get:
      operationId: membership-types_members_renewals
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Member'
      tags:
      - membership-types
    parameters:
    - name: membership_type_pk
      in: path
      required: true
      type: string
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا عضو.
      required: true
      type: integer
  /membership/my-general-assemblies/:
    get:
      operationId: membership_my-general-assemblies_list
      summary: General assemblies the logged-in member is on the attendance roll for.
      description: |-
        GET /api/v1/membership/my-general-assemblies/

        Optional query: ``upcoming`` — ``true`` / ``1`` limits to meetings with ``held_on >= today``.

        Returns a JSON array (no pagination wrapper).
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/MyGeneralAssembly'
      tags:
      - membership
    parameters: []
  /my-family-registry/:
    get:
      operationId: my-family-registry_list
      description: GET overview; POST upload قيد عائلي (sister or primary).
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - my-family-registry
    post:
      operationId: my-family-registry_create
      description: GET overview; POST upload قيد عائلي (sister or primary).
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - my-family-registry
    parameters: []
  /my-family-registry/{id}/:
    get:
      operationId: my-family-registry_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - my-family-registry
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /notifications/:
    get:
      operationId: notifications_list
      description: 'Paginated list: ``page`` + ``page_size`` (default 20). Legacy
        ``limit`` maps to first page only.'
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - notifications
    parameters: []
  /notifications/bulk-general/:
    post:
      operationId: notifications_bulk-general_create
      description: ''
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - notifications
    parameters: []
  /notifications/bulk-general/{task_id}/status/:
    get:
      operationId: notifications_bulk-general_status_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - notifications
    parameters:
    - name: task_id
      in: path
      required: true
      type: string
  /notifications/devices/register/:
    post:
      operationId: notifications_devices_register_create
      description: ''
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - notifications
    parameters: []
  /notifications/devices/unregister/:
    post:
      operationId: notifications_devices_unregister_create
      description: ''
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - notifications
    parameters: []
  /notifications/read-all/:
    post:
      operationId: notifications_read-all_create
      description: Mark all unread notifications for the authenticated user (member
        portal, customer portal, staff inbox).
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - notifications
    parameters: []
  /notifications/{id}/:
    get:
      operationId: notifications_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - notifications
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /notifications/{id}/read/:
    post:
      operationId: notifications_read_create
      description: ''
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - notifications
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /payment/fawry/callback/:
    post:
      operationId: payment_fawry_callback_create
      summary: Receive Fawry server-to-server callbacks, verify signature, emit signal.
      description: |-
        POST /api/v1/payment/fawry/callback/

        This view knows nothing about invoices or billing models.
        Other apps react by connecting to the ``fawry.django.signals.payment_received``
        Django signal in their ``AppConfig.ready()`` method.
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - payment
    parameters: []
  /payment/stripe/confirm-session/:
    post:
      operationId: payment_stripe_confirm-session_create
      description: POST /api/v1/payment/stripe/confirm-session/ — settle after browser
        return from Checkout.
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - payment
    parameters: []
  /payment/stripe/webhook/:
    post:
      operationId: payment_stripe_webhook_create
      description: POST /api/v1/payment/stripe/webhook/ — Stripe server-to-server
        events.
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - payment
    parameters: []
  /qualifications/:
    get:
      operationId: qualifications_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/Qualification'
      tags:
      - qualifications
    post:
      operationId: qualifications_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Qualification'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Qualification'
      tags:
      - qualifications
    parameters: []
  /qualifications/{id}/:
    get:
      operationId: qualifications_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Qualification'
      tags:
      - qualifications
    put:
      operationId: qualifications_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Qualification'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Qualification'
      tags:
      - qualifications
    patch:
      operationId: qualifications_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Qualification'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Qualification'
      tags:
      - qualifications
    delete:
      operationId: qualifications_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - qualifications
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا مؤهل دراسي.
      required: true
      type: integer
  /reels/:
    get:
      operationId: reels_list
      description: ''
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/Reel'
      tags:
      - reels
    post:
      operationId: reels_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Reel'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Reel'
      tags:
      - reels
    parameters: []
  /reels/{id}/:
    get:
      operationId: reels_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Reel'
      tags:
      - reels
    put:
      operationId: reels_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Reel'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Reel'
      tags:
      - reels
    patch:
      operationId: reels_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Reel'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Reel'
      tags:
      - reels
    delete:
      operationId: reels_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - reels
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا الريل.
      required: true
      type: integer
  /reels/{id}/comments/:
    get:
      operationId: reels_comments_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Reel'
      tags:
      - reels
    post:
      operationId: reels_comments_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Reel'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Reel'
      tags:
      - reels
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا الريل.
      required: true
      type: integer
  /reels/{id}/comments/{comment_id}/:
    patch:
      operationId: reels_comments_partial_update
      description: PATCH or DELETE a single comment. Author or staff only.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Reel'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Reel'
      tags:
      - reels
    delete:
      operationId: reels_comments_delete
      description: PATCH or DELETE a single comment. Author or staff only.
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - reels
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا الريل.
      required: true
      type: integer
    - name: comment_id
      in: path
      required: true
      type: string
  /reels/{id}/toggle-like/:
    post:
      operationId: reels_toggle_like
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Reel'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Reel'
      tags:
      - reels
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا الريل.
      required: true
      type: integer
  /relationship-types/:
    get:
      operationId: relationship-types_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - relationship-types
    parameters: []
  /religions/:
    get:
      operationId: religions_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - religions
    parameters: []
  /sections/:
    get:
      operationId: sections_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/SectionList'
      tags:
      - sections
    post:
      operationId: sections_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Section'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/Section'
      tags:
      - sections
    parameters: []
  /sections/{section_code}/:
    get:
      operationId: sections_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/SectionDetail'
      tags:
      - sections
    put:
      operationId: sections_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Section'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Section'
      tags:
      - sections
    patch:
      operationId: sections_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/Section'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/Section'
      tags:
      - sections
    delete:
      operationId: sections_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - sections
    parameters:
    - name: section_code
      in: path
      description: نوع قيمة فريدة يحدد هذا كود قسم.
      required: true
      type: integer
  /sections/{section_pk}/pricing-by-invoice-year/:
    get:
      operationId: sections_pricing-by-invoice-year_list
      description: Nested under ``/sections/{section_code}/pricing-by-invoice-year/``.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            type: array
            items:
              $ref: '#/definitions/MembershipPricing'
      tags:
      - sections
    post:
      operationId: sections_pricing-by-invoice-year_create
      description: Nested under ``/sections/{section_code}/pricing-by-invoice-year/``.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipPricing'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipPricing'
      tags:
      - sections
    parameters:
    - name: section_pk
      in: path
      required: true
      type: string
  /sections/{section_pk}/pricing-by-invoice-year/bulk/:
    post:
      operationId: sections_pricing-by-invoice-year_bulk_create
      description: Create or update pricing rows for ``year_from`` … ``year_to`` (inclusive).
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipPricing'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/MembershipPricing'
      tags:
      - sections
    parameters:
    - name: section_pk
      in: path
      required: true
      type: string
  /sections/{section_pk}/pricing-by-invoice-year/{id}/:
    get:
      operationId: sections_pricing-by-invoice-year_read
      description: Nested under ``/sections/{section_code}/pricing-by-invoice-year/``.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipPricing'
      tags:
      - sections
    put:
      operationId: sections_pricing-by-invoice-year_update
      description: Nested under ``/sections/{section_code}/pricing-by-invoice-year/``.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipPricing'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipPricing'
      tags:
      - sections
    patch:
      operationId: sections_pricing-by-invoice-year_partial_update
      description: Nested under ``/sections/{section_code}/pricing-by-invoice-year/``.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/MembershipPricing'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/MembershipPricing'
      tags:
      - sections
    delete:
      operationId: sections_pricing-by-invoice-year_delete
      description: Nested under ``/sections/{section_code}/pricing-by-invoice-year/``.
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - sections
    parameters:
    - name: section_pk
      in: path
      required: true
      type: string
    - name: id
      in: path
      required: true
      type: string
  /staff/consumers/:
    get:
      operationId: staff_consumers_list
      description: 'Staff directory: consumer portal ``User`` rows only (no ``Member``,
        no staff).'
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/ConsumerUserList'
      tags:
      - staff
    parameters: []
  /staff/employees/:
    get:
      operationId: staff_employees_list
      description: ''
      parameters:
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/EmployeeCreate'
      tags:
      - staff
    post:
      operationId: staff_employees_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/EmployeeCreate'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/EmployeeCreate'
      tags:
      - staff
    parameters: []
  /staff/employees/{id}/:
    get:
      operationId: staff_employees_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/EmployeeCreate'
      tags:
      - staff
    put:
      operationId: staff_employees_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/EmployeeCreate'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/EmployeeCreate'
      tags:
      - staff
    patch:
      operationId: staff_employees_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/EmployeeCreate'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/EmployeeCreate'
      tags:
      - staff
    delete:
      operationId: staff_employees_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - staff
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا موظف.
      required: true
      type: integer
  /staff/group-management/:
    get:
      operationId: staff_group-management_list
      description: ''
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/GroupManage'
      tags:
      - staff
    post:
      operationId: staff_group-management_create
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/GroupManage'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/GroupManage'
      tags:
      - staff
    parameters: []
  /staff/group-management/{id}/:
    get:
      operationId: staff_group-management_read
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/RetriveGroup'
      tags:
      - staff
    put:
      operationId: staff_group-management_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/GroupManage'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GroupManage'
      tags:
      - staff
    patch:
      operationId: staff_group-management_partial_update
      description: ''
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/GroupManage'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GroupManage'
      tags:
      - staff
    delete:
      operationId: staff_group-management_delete
      description: ''
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - staff
    parameters:
    - name: id
      in: path
      description: نوع رقم صحيح فريد يحدد هذا مجموعة.
      required: true
      type: integer
  /staff/groups/:
    get:
      operationId: staff_groups_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - staff
    parameters: []
  /staff/groups/{group_id}/permissions/:
    get:
      operationId: staff_groups_permissions_list
      description: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - staff
    parameters:
    - name: group_id
      in: path
      required: true
      type: string
  /staff/member-users/:
    get:
      operationId: staff_member-users_list
      description: Staff list of portal users linked to ``Member`` rows (primary or
        dependent).
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/MemberUserList'
      tags:
      - staff
    parameters: []
  /staff/permissions/:
    get:
      operationId: staff_permissions_list
      description: Lists Django auth permissions with Arabic labels (``name_ar``).
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - staff
    parameters: []
  /staff/users/{id}/activation/:
    patch:
      operationId: staff_users_activation_partial_update
      description: Toggle ``User.is_active`` for staff-managed portal accounts.
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - staff
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /support/tickets/:
    get:
      operationId: support_tickets_list
      description: |-
        * **Guest:** may create tickets only.
        * **Member:** own tickets.
        * **Staff/Superuser:** all tickets.
      parameters:
      - name: ticket_type
        in: query
        description: ''
        required: false
        type: string
      - name: requester_type
        in: query
        description: ''
        required: false
        type: string
      - name: status
        in: query
        description: ''
        required: false
        type: string
      - name: created_by
        in: query
        description: ''
        required: false
        type: string
      - name: email
        in: query
        description: ''
        required: false
        type: string
      - name: phone_number
        in: query
        description: ''
        required: false
        type: string
      - name: search
        in: query
        description: مصطلح البحث.
        required: false
        type: string
      - name: ordering
        in: query
        description: أي حقل يجب استخدامه عند ترتيب النتائج.
        required: false
        type: string
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/TicketList'
      tags:
      - support
    post:
      operationId: support_tickets_create
      description: |-
        * **Guest:** may create tickets only.
        * **Member:** own tickets.
        * **Staff/Superuser:** all tickets.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/TicketGuestCreate'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/TicketGuestCreate'
      tags:
      - support
    parameters: []
  /support/tickets/guest/:
    post:
      operationId: support_tickets_guest_create
      description: ''
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - support
    parameters: []
  /support/tickets/member/:
    post:
      operationId: support_tickets_member_create
      description: ''
      parameters: []
      responses:
        '201':
          description: ''
      tags:
      - support
    parameters: []
  /support/tickets/{id}/:
    get:
      operationId: support_tickets_read
      description: |-
        * **Guest:** may create tickets only.
        * **Member:** own tickets.
        * **Staff/Superuser:** all tickets.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/TicketDetail'
      tags:
      - support
    put:
      operationId: support_tickets_update
      description: |-
        * **Guest:** may create tickets only.
        * **Member:** own tickets.
        * **Staff/Superuser:** all tickets.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/TicketDetail'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/TicketDetail'
      tags:
      - support
    patch:
      operationId: support_tickets_partial_update
      description: |-
        * **Guest:** may create tickets only.
        * **Member:** own tickets.
        * **Staff/Superuser:** all tickets.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/TicketDetail'
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/TicketDetail'
      tags:
      - support
    delete:
      operationId: support_tickets_delete
      description: |-
        * **Guest:** may create tickets only.
        * **Member:** own tickets.
        * **Staff/Superuser:** all tickets.
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - support
    parameters:
    - name: id
      in: path
      required: true
      type: string
  /support/tickets/{ticket_pk}/attachments/:
    get:
      operationId: support_tickets_attachments_list
      summary: Nested under ``/support/tickets/<ticket_pk>/attachments/``.
      description: |-
        * **POST** — upload a file (multipart ``file`` field; ``uploaded_by`` set automatically).
        * **DELETE** — staff/superuser only.
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/TicketAttachment'
      tags:
      - support
    post:
      operationId: support_tickets_attachments_create
      summary: Nested under ``/support/tickets/<ticket_pk>/attachments/``.
      description: |-
        * **POST** — upload a file (multipart ``file`` field; ``uploaded_by`` set automatically).
        * **DELETE** — staff/superuser only.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/TicketAttachment'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/TicketAttachment'
      tags:
      - support
    parameters:
    - name: ticket_pk
      in: path
      required: true
      type: string
  /support/tickets/{ticket_pk}/attachments/{id}/:
    get:
      operationId: support_tickets_attachments_read
      summary: Nested under ``/support/tickets/<ticket_pk>/attachments/``.
      description: |-
        * **POST** — upload a file (multipart ``file`` field; ``uploaded_by`` set automatically).
        * **DELETE** — staff/superuser only.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/TicketAttachment'
      tags:
      - support
    delete:
      operationId: support_tickets_attachments_delete
      summary: Nested under ``/support/tickets/<ticket_pk>/attachments/``.
      description: |-
        * **POST** — upload a file (multipart ``file`` field; ``uploaded_by`` set automatically).
        * **DELETE** — staff/superuser only.
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - support
    parameters:
    - name: ticket_pk
      in: path
      required: true
      type: string
    - name: id
      in: path
      required: true
      type: string
  /support/tickets/{ticket_pk}/comments/:
    get:
      operationId: support_tickets_comments_list
      summary: Nested under ``/support/tickets/<ticket_pk>/comments/``.
      description: |-
        * **POST** — add a reply (author = request user).
        * **DELETE** — staff/superuser only.
      parameters:
      - name: page
        in: query
        description: رقم الصفحة ضمن النتائج المقسمة.
        required: false
        type: integer
      - name: page_size
        in: query
        description: عدد النتائج التي يجب إرجاعها في كل صفحة.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            required:
            - count
            - results
            type: object
            properties:
              count:
                type: integer
              next:
                type: string
                format: uri
                x-nullable: true
              previous:
                type: string
                format: uri
                x-nullable: true
              results:
                type: array
                items:
                  $ref: '#/definitions/TicketComment'
      tags:
      - support
    post:
      operationId: support_tickets_comments_create
      summary: Nested under ``/support/tickets/<ticket_pk>/comments/``.
      description: |-
        * **POST** — add a reply (author = request user).
        * **DELETE** — staff/superuser only.
      parameters:
      - name: data
        in: body
        required: true
        schema:
          $ref: '#/definitions/TicketComment'
      responses:
        '201':
          description: ''
          schema:
            $ref: '#/definitions/TicketComment'
      tags:
      - support
    parameters:
    - name: ticket_pk
      in: path
      required: true
      type: string
  /support/tickets/{ticket_pk}/comments/{id}/:
    get:
      operationId: support_tickets_comments_read
      summary: Nested under ``/support/tickets/<ticket_pk>/comments/``.
      description: |-
        * **POST** — add a reply (author = request user).
        * **DELETE** — staff/superuser only.
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/TicketComment'
      tags:
      - support
    delete:
      operationId: support_tickets_comments_delete
      summary: Nested under ``/support/tickets/<ticket_pk>/comments/``.
      description: |-
        * **POST** — add a reply (author = request user).
        * **DELETE** — staff/superuser only.
      parameters: []
      responses:
        '204':
          description: ''
      tags:
      - support
    parameters:
    - name: ticket_pk
      in: path
      required: true
      type: string
    - name: id
      in: path
      required: true
      type: string
definitions:
  ActivityLog:
    required:
    - action
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      actor:
        title: Actor
        type: integer
        x-nullable: true
      actor_email:
        title: Actor email
        type: string
        format: email
        readOnly: true
        minLength: 1
        x-nullable: true
      actor_name:
        title: Actor name
        type: string
        readOnly: true
        minLength: 1
        x-nullable: true
      actor_phone_number:
        title: Actor phone number
        type: string
        readOnly: true
        minLength: 1
        x-nullable: true
      action:
        title: Action
        type: string
        enum:
        - create
        - update
        - delete
        - approve
        - reject
        - login_success
        - login_failed
      target_app:
        title: Target app
        type: string
        maxLength: 64
      target_model:
        title: Target model
        type: string
        maxLength: 64
      target_id:
        title: Target id
        type: string
        maxLength: 64
      target_repr:
        title: Target repr
        type: string
        maxLength: 255
      request_path:
        title: Request path
        type: string
        maxLength: 255
      request_method:
        title: Request method
        type: string
        maxLength: 16
      ip_address:
        title: Ip address
        type: string
        maxLength: 64
      user_agent:
        title: User agent
        type: string
        maxLength: 512
      status:
        title: Status
        type: string
        enum:
        - success
        - failed
      error_message:
        title: Error message
        type: string
      created_at:
        title: Created at
        type: string
        format: date-time
        readOnly: true
  Area:
    required:
    - name
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      name:
        title: الاسم
        type: string
        maxLength: 255
        minLength: 1
  ChangePassword:
    required:
    - current_password
    - new_password
    - new_password_confirm
    type: object
    properties:
      current_password:
        title: Current password
        type: string
        minLength: 1
      new_password:
        title: New password
        type: string
        minLength: 1
      new_password_confirm:
        title: New password confirm
        type: string
        minLength: 1
  ChangePasswordResponse:
    type: object
    properties:
      detail:
        title: Detail
        type: string
        readOnly: true
        minLength: 1
  ConsumerLogin:
    required:
    - phone_number
    - password
    type: object
    properties:
      phone_number:
        title: Phone number
        type: string
        minLength: 1
      password:
        title: Password
        type: string
        minLength: 1
  ConsumerAuthUser:
    required:
    - name
    - phone_number
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      name:
        title: الاسم
        type: string
        maxLength: 100
        minLength: 1
      phone_number:
        title: رقم الهاتف
        type: string
        maxLength: 128
        minLength: 1
      birth_date:
        title: Birth date
        type: string
        readOnly: true
  ConsumerAuthTokenResponse:
    type: object
    properties:
      access:
        title: Access
        type: string
        readOnly: true
        minLength: 1
      refresh:
        title: Refresh
        type: string
        readOnly: true
        minLength: 1
      user:
        $ref: '#/definitions/ConsumerAuthUser'
  ConsumerRegister:
    required:
    - phone_number
    - password
    - password_confirm
    - first_name
    type: object
    properties:
      phone_number:
        title: Phone number
        type: string
        minLength: 1
      password:
        title: Password
        type: string
        minLength: 1
      password_confirm:
        title: Password confirm
        type: string
        minLength: 1
      first_name:
        title: First name
        type: string
        maxLength: 80
        minLength: 1
      last_name:
        title: Last name
        type: string
        default: ''
        maxLength: 80
      birth_date:
        title: Birth date
        type: string
        format: date
        x-nullable: true
  ConsumerRegisterPendingUser:
    type: object
    properties:
      phone_number:
        title: Phone number
        type: string
        readOnly: true
        minLength: 1
      name:
        title: Name
        type: string
        readOnly: true
        minLength: 1
      birth_date:
        title: Birth date
        type: string
        format: date
        readOnly: true
        x-nullable: true
  ConsumerRegisterPendingResponse:
    type: object
    properties:
      detail:
        title: Detail
        type: string
        readOnly: true
        minLength: 1
      user:
        $ref: '#/definitions/ConsumerRegisterPendingUser'
  ConsumerRegisterSendOtp:
    required:
    - phone_number
    type: object
    properties:
      phone_number:
        title: Phone number
        type: string
        minLength: 1
  ConsumerRegisterSendOtpResponse:
    type: object
    properties:
      detail:
        title: Detail
        type: string
        readOnly: true
        minLength: 1
  ConsumerRegisterVerifyOtp:
    required:
    - phone_number
    - otp
    type: object
    properties:
      phone_number:
        title: Phone number
        type: string
        minLength: 1
      otp:
        title: Otp
        type: string
        maxLength: 6
        minLength: 6
  ForgotPasswordReset:
    required:
    - phone_number
    - reset_token
    - new_password
    - new_password_confirm
    type: object
    properties:
      phone_number:
        title: Phone number
        type: string
        minLength: 1
      reset_token:
        title: Reset token
        type: string
        minLength: 1
      new_password:
        title: New password
        type: string
        minLength: 1
      new_password_confirm:
        title: New password confirm
        type: string
        minLength: 1
  ForgotPasswordResetResponse:
    type: object
    properties:
      detail:
        title: Detail
        type: string
        readOnly: true
        minLength: 1
  ForgotPasswordSendOtp:
    required:
    - phone_number
    type: object
    properties:
      phone_number:
        title: Phone number
        type: string
        minLength: 1
  ForgotPasswordSendOtpResponse:
    type: object
    properties:
      detail:
        title: Detail
        type: string
        readOnly: true
        minLength: 1
  ForgotPasswordVerifyOtp:
    required:
    - phone_number
    - otp
    type: object
    properties:
      phone_number:
        title: Phone number
        type: string
        minLength: 1
      otp:
        title: Otp
        type: string
        minLength: 1
  ForgotPasswordVerifyOtpResponse:
    type: object
    properties:
      detail:
        title: Detail
        type: string
        readOnly: true
        minLength: 1
      reset_token:
        title: Reset token
        type: string
        readOnly: true
        minLength: 1
      expires_in:
        title: Expires in
        type: integer
        readOnly: true
  TokenRefresh:
    required:
    - refresh
    type: object
    properties:
      refresh:
        title: Refresh
        type: string
        minLength: 1
      access:
        title: Access
        type: string
        readOnly: true
        minLength: 1
  UserSummary:
    required:
    - name
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      name:
        title: الاسم
        type: string
        maxLength: 100
        minLength: 1
      phone_number:
        title: Phone number
        type: string
        readOnly: true
      is_active:
        title: نشط
        type: boolean
  MembershipCategoryBrief:
    required:
    - name
    - subscription_price
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      name:
        title: الاسم
        type: string
        maxLength: 255
        minLength: 1
      reference_code:
        title: الكود المرجعي
        description: يُولَّد تلقائياً عند الحفظ إذا كان فارغاً.
        type: string
        maxLength: 255
      subscription_price:
        title: سعر الإشتراك (جنيه)
        type: string
        format: decimal
  MemberList:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      user:
        $ref: '#/definitions/UserSummary'
      member_role:
        title: دور العضوية
        type: string
        enum:
        - primary
        - dependent
        readOnly: true
      primary_member:
        title: العضو الأساسي
        description: يُملأ للتابعين فقط؛ يشير إلى العضو الذي تُحسب رسومه تحت حسابه.
        type: integer
        readOnly: true
        x-nullable: true
      relationship_type_id:
        title: صلة التابع
        description: يُستخدم للتابعين لتتبع نوع الرسوم عند الإضافة.
        type: integer
        enum:
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10
        - 11
        - 12
        - 13
        - 14
        readOnly: true
        x-nullable: true
      membership_type:
        $ref: '#/definitions/MembershipCategoryBrief'
      membership_number:
        title: رقم العضوية
        description: رقم العضوية المرجعي للعضوية
        type: string
        readOnly: true
        minLength: 1
      title:
        title: اللقب
        type: string
        readOnly: true
        minLength: 1
      phone_number:
        title: Phone number
        type: string
        readOnly: true
      main_address:
        title: العنوان الأساسي
        type: string
        readOnly: true
        minLength: 1
      place_of_birth:
        title: محل الميلاد
        type: string
        readOnly: true
        minLength: 1
      membership_status:
        title: حالة العضوية
        type: string
        enum:
        - active
        - pending_activation
        - suspended
        - dead
        - dropped
        readOnly: true
      marital_status:
        title: الحالة الاجتماعية
        type: string
        enum:
        - single
        - married
        - divorced
        - widowed
        readOnly: true
        x-nullable: true
      nationality:
        title: Nationality
        type: string
        enum:
        - AF
        - AL
        - DZ
        - AD
        - AO
        - AI
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BW
        - BR
        - BN
        - BG
        - BI
        - KH
        - CM
        - CA
        - TD
        - CL
        - CN
        - CO
        - CG
        - CR
        - HR
        - CU
        - CW
        - CY
        - CZ
        - DK
        - DJ
        - DM
        - EC
        - EG
        - SV
        - ER
        - EE
        - SZ
        - ET
        - FJ
        - FI
        - FR
        - GF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GY
        - HT
        - HN
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MG
        - MW
        - MY
        - ML
        - MT
        - MQ
        - MR
        - MU
        - YT
        - MX
        - MD
        - MC
        - MN
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NZ
        - NI
        - NE
        - NG
        - NU
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - RE
        - RO
        - RU
        - RW
        - WS
        - SN
        - RS
        - SC
        - SL
        - SG
        - SK
        - SI
        - SO
        - ES
        - LK
        - SD
        - SR
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TG
        - TK
        - TO
        - TN
        - TR
        - TM
        - TV
        - UG
        - UA
        - UY
        - UZ
        - VU
        - VE
        - VN
        - YE
        - ZM
        - ZW
        - AX
        - AS
        - AQ
        - AG
        - BY
        - BA
        - BV
        - BF
        - CV
        - KY
        - CX
        - CC
        - KM
        - CK
        - CI
        - DO
        - GQ
        - FO
        - PF
        - GI
        - GW
        - VA
        - IM
        - KP
        - KR
        - MV
        - MH
        - ME
        - NC
        - NF
        - MK
        - BL
        - SH
        - LC
        - SM
        - SB
        - SS
        - TL
        - TT
        - GB
        - EH
        - BQ
        - IO
        - CF
        - CD
        - TF
        - HM
        - HK
        - MP
        - PG
        - KN
        - PM
        - VC
        - ST
        - SJ
        - TC
        - AE
        - US
        - WF
        - GS
        - UM
        - MF
        - SX
        - VI
        - FK
        - ZA
        - VG
        - FM
        - SA
        readOnly: true
      national_id_number:
        title: رقم البطاقة / الرقم القومي
        type: string
        readOnly: true
        minLength: 1
      approval_number:
        title: رقم الموافقة
        type: string
        readOnly: true
        minLength: 1
      legacy_membership_class:
        title: صنف العضوية (النظام القديم)
        description: تسمية Oracle MEMBERSHIP_CODE للعرض فقط؛ لا تؤثر على الفوترة.
        type: string
        enum:
        - working
        - founder
        - temporary_working
        - seasonal
        - honorary
        readOnly: true
        x-nullable: true
      legacy_membership_class_display:
        title: Legacy membership class display
        type: string
        readOnly: true
        x-nullable: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  AnnualInvoiceList:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      member:
        title: العضو
        type: integer
        readOnly: true
        x-nullable: true
      member_display_name:
        title: Member display name
        type: string
        readOnly: true
      membership_request_id:
        title: Membership request id
        type: integer
        readOnly: true
        x-nullable: true
      membership_type:
        title: Membership type
        type: integer
        readOnly: true
      invoice_kind:
        title: نوع الفاتورة
        type: string
        enum:
        - single_year
        - cumulative
        - establishment_aid
        - application_fee
        - dependent_addition
        - excluded_dependent
        readOnly: true
        default: single_year
      invoice_purpose:
        title: Invoice purpose
        type: string
        readOnly: true
      invoice_year:
        title: سنة الفاتورة
        description: 'للفاتورة ذات السنة الواحدة: سنة الفاتورة. للفاتورة التراكمية:
          غالباً مساوية لـ to_year للترتيب والتوافق.'
        type: integer
        readOnly: true
      from_year:
        title: من سنة
        description: 'للفاتورة التراكمية: أول سنة عضوية مغطاة.'
        type: integer
        readOnly: true
        x-nullable: true
      to_year:
        title: إلى سنة
        description: 'للفاتورة التراكمية: آخر سنة عضوية مغطاة.'
        type: integer
        readOnly: true
        x-nullable: true
      coverage_period_from:
        title: Coverage period from
        type: string
        readOnly: true
      coverage_period_to:
        title: Coverage period to
        type: string
        readOnly: true
      season_label:
        title: Season label
        type: string
        readOnly: true
      invoice_number:
        title: رقم الفاتورة
        type: string
        readOnly: true
        minLength: 1
      invoice_status:
        title: حالة المستند
        type: string
        enum:
        - draft
        - issued
        - partially_paid
        - paid
        - cancelled
        - expired
        readOnly: true
        default: issued
      total_amount:
        title: المبلغ الإجمالي
        type: string
        format: decimal
        readOnly: true
      amount_paid:
        title: المبلغ المدفوع
        type: string
        format: decimal
        readOnly: true
      payment_status:
        title: حالة السداد
        type: string
        enum:
        - draft
        - issued
        - partially_paid
        - paid
        - written_off
        readOnly: true
        default: issued
      issued_at:
        title: تاريخ الإصدار
        type: string
        format: date-time
        readOnly: true
      paid_at:
        title: تاريخ السداد الكامل
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      immutable:
        title: نهائي للتدقيق
        type: boolean
        readOnly: true
  DependentInvoiceExclusion:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      primary_member:
        title: العضو الأساسي
        type: integer
        readOnly: true
      primary_member_detail:
        $ref: '#/definitions/MemberList'
      dependent_member:
        title: التابع
        type: integer
        readOnly: true
      dependent_member_detail:
        $ref: '#/definitions/MemberList'
      source_invoice:
        title: الفاتورة المصدر
        type: integer
        readOnly: true
      source_invoice_detail:
        $ref: '#/definitions/AnnualInvoiceList'
      excluded_at:
        title: تاريخ الاستبعاد
        type: string
        format: date-time
        readOnly: true
      excluded_by:
        title: استبعد بواسطة
        type: integer
        readOnly: true
        x-nullable: true
      issued_invoice:
        title: فاتورة التابع المنفصلة
        type: integer
        readOnly: true
        x-nullable: true
      issued_invoice_detail:
        $ref: '#/definitions/AnnualInvoiceList'
      can_issue_separate_invoice:
        title: Can issue separate invoice
        type: boolean
        readOnly: true
  AnnualInvoiceLine:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      line_type:
        title: نوع البند
        type: string
        enum:
        - subscription
        - discount
        - establishment_aid
        - late_payment
        - fixed_late_fee
        - general_assembly_absence
        - restoration
        - vat
        - manual_adjustment
        - packaging
        - martyr_stamp
        - card_lamination
        - ambulance_fee
        - maintenance
        - usufruct_return
        - annual_other_fee
        - administrative
        - stamp_disability
        - dependent_join_fee
        - membership_application_fee
        readOnly: true
      description:
        title: الوصف
        type: string
        readOnly: true
        minLength: 1
      amount:
        title: المبلغ
        type: string
        format: decimal
        readOnly: true
      delay_year:
        title: عتبة شهر التأخير (القاعدة)
        description: 'لغرامات التأخير فقط: قيمة delay_month من القاعدة المستخدمة عند
          الإصدار.'
        type: integer
        readOnly: true
        x-nullable: true
      penalty_percent:
        title: نسبة الغرامة المستخدمة
        type: string
        format: decimal
        readOnly: true
        x-nullable: true
      invoice_year:
        title: سنة العضوية للبند
        description: السنة التي يخصها البند؛ للفاتورة أحادية السنة يطابق سنة الفاتورة.
        type: integer
        readOnly: true
      metadata:
        title: لقطة بيانات
        description: أسعار وقواعد ومعرفات مُجمّدة عند الإصدار.
        type: object
        readOnly: true
  PenaltyTransaction:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      member:
        title: العضو
        type: integer
        readOnly: true
      annual_invoice:
        title: الفاتورة
        type: integer
        readOnly: true
      invoice_line:
        title: البند
        type: integer
        readOnly: true
        x-nullable: true
      penalty_type:
        title: نوع الغرامة
        type: string
        enum:
        - late_payment
        - fixed_late_fee
        - general_assembly_absence
        - restoration
        - manual_adjustment
        - reversal
        - other
        readOnly: true
      percentage:
        title: النسبة المستخدمة (%)
        type: string
        format: decimal
        readOnly: true
        x-nullable: true
      amount:
        title: المبلغ
        type: string
        format: decimal
        readOnly: true
      notes:
        title: ملاحظات
        type: string
        readOnly: true
        minLength: 1
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      reverses:
        title: يعكس المعاملة
        description: إن وُجدت، هذه المعاملة عكس لمعاملة أصلية.
        type: integer
        readOnly: true
        x-nullable: true
      member_membership_number:
        title: Member membership number
        type: string
        readOnly: true
        minLength: 1
      member_display_name:
        title: Member display name
        type: string
        readOnly: true
      invoice_year:
        title: Invoice year
        type: string
        readOnly: true
      penalty_delay_year:
        title: Penalty delay year
        type: string
        readOnly: true
  InvoiceAdjustment:
    required:
    - annual_invoice
    - amount
    - reason
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      annual_invoice:
        title: الفاتورة
        type: integer
      amount:
        title: المبلغ
        description: يمكن أن يكون سالباً أو موجباً.
        type: string
        format: decimal
      reason:
        title: السبب
        type: string
        minLength: 1
      created_by:
        title: أنشئ بواسطة
        type: integer
        readOnly: true
        x-nullable: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
  AnnualInvoicePayment:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      amount:
        title: المبلغ
        type: string
        format: decimal
        readOnly: true
      receipt_image_url:
        title: Receipt image url
        type: string
        readOnly: true
      recorded_by:
        title: سجّل بواسطة
        type: integer
        readOnly: true
        x-nullable: true
      recorded_by_display:
        title: Recorded by display
        type: string
        readOnly: true
      created_at:
        title: تاريخ التسجيل
        type: string
        format: date-time
        readOnly: true
  AnnualInvoice:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      member:
        title: العضو
        type: integer
        readOnly: true
        x-nullable: true
      member_display_name:
        title: Member display name
        type: string
        readOnly: true
      member_membership_number:
        title: Member membership number
        type: string
        readOnly: true
      membership_request_id:
        title: Membership request id
        type: integer
        readOnly: true
        x-nullable: true
      membership_type:
        title: Membership type
        type: integer
        readOnly: true
      invoice_kind:
        title: نوع الفاتورة
        type: string
        enum:
        - single_year
        - cumulative
        - establishment_aid
        - application_fee
        - dependent_addition
        - excluded_dependent
        readOnly: true
        default: single_year
      invoice_year:
        title: سنة الفاتورة
        description: 'للفاتورة ذات السنة الواحدة: سنة الفاتورة. للفاتورة التراكمية:
          غالباً مساوية لـ to_year للترتيب والتوافق.'
        type: integer
        readOnly: true
      from_year:
        title: من سنة
        description: 'للفاتورة التراكمية: أول سنة عضوية مغطاة.'
        type: integer
        readOnly: true
        x-nullable: true
      to_year:
        title: إلى سنة
        description: 'للفاتورة التراكمية: آخر سنة عضوية مغطاة.'
        type: integer
        readOnly: true
        x-nullable: true
      coverage_period_from:
        title: Coverage period from
        type: string
        readOnly: true
      coverage_period_to:
        title: Coverage period to
        type: string
        readOnly: true
      season_label:
        title: Season label
        type: string
        readOnly: true
      invoice_number:
        title: رقم الفاتورة
        type: string
        readOnly: true
        minLength: 1
      invoice_status:
        title: حالة المستند
        type: string
        enum:
        - draft
        - issued
        - partially_paid
        - paid
        - cancelled
        - expired
        readOnly: true
        default: issued
      subscription_subtotal:
        title: إجمالي الاشتراك (بعد الخصم، قبل الغرامات)
        description: 'للفاتورة التراكمية: مجموع مبالغ الاشتراك السنوية المجمّعة.'
        type: string
        format: decimal
        readOnly: true
      base_subscription_fee:
        title: رسوم الاشتراك الأساسية
        type: string
        format: decimal
        readOnly: true
      discount_amount:
        title: إجمالي الخصم المطبّق
        type: string
        format: decimal
        readOnly: true
      subtotal_after_discount:
        title: المجموع بعد الخصم (قبل غرامات التأخير الإضافية)
        type: string
        format: decimal
        readOnly: true
      penalties_subtotal:
        title: مجموع الغرامات (بدون الضريبة)
        type: string
        format: decimal
        readOnly: true
      amount_before_vat:
        title: المبلغ قبل الضريبة
        type: string
        format: decimal
        readOnly: true
      vat_amount:
        title: ضريبة القيمة المضافة
        type: string
        format: decimal
        readOnly: true
      total_amount:
        title: المبلغ الإجمالي
        type: string
        format: decimal
        readOnly: true
      amount_paid:
        title: المبلغ المدفوع
        type: string
        format: decimal
        readOnly: true
      payment_status:
        title: حالة السداد
        type: string
        enum:
        - draft
        - issued
        - partially_paid
        - paid
        - written_off
        readOnly: true
        default: issued
      issued_at:
        title: تاريخ الإصدار
        type: string
        format: date-time
        readOnly: true
      paid_at:
        title: تاريخ السداد الكامل
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      immutable:
        title: نهائي للتدقيق
        type: boolean
        readOnly: true
      snapshot_payload:
        title: بيانات لقطة إضافية
        description: معرفات الفئة، القسم، القواعد المستخدمة، إلخ.
        type: object
        readOnly: true
      cumulative_display:
        title: Cumulative display
        type: string
        readOnly: true
      cumulative_late_penalties:
        title: Cumulative late penalties
        type: string
        readOnly: true
      restoration_fee_snapshot:
        title: لقطة رسوم رد العضوية
        description: لإعادة احتساب الضريبة عند التعديلات.
        type: string
        format: decimal
        readOnly: true
      restoration_vat_snapshot:
        title: لقطة ضريبة رد العضوية
        type: string
        format: decimal
        readOnly: true
      lines:
        type: array
        items:
          $ref: '#/definitions/AnnualInvoiceLine'
        readOnly: true
      penalty_transactions:
        type: array
        items:
          $ref: '#/definitions/PenaltyTransaction'
        readOnly: true
      adjustments:
        type: array
        items:
          $ref: '#/definitions/InvoiceAdjustment'
        readOnly: true
      payment_records:
        type: array
        items:
          $ref: '#/definitions/AnnualInvoicePayment'
        readOnly: true
      paid_by_staff_display:
        title: Paid by staff display
        type: string
        readOnly: true
  MyAnnualInvoice:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      membership_request_id:
        title: Membership request id
        type: integer
        readOnly: true
        x-nullable: true
      invoice_year:
        title: سنة الفاتورة
        description: 'للفاتورة ذات السنة الواحدة: سنة الفاتورة. للفاتورة التراكمية:
          غالباً مساوية لـ to_year للترتيب والتوافق.'
        type: integer
        readOnly: true
      invoice_kind:
        title: نوع الفاتورة
        type: string
        enum:
        - single_year
        - cumulative
        - establishment_aid
        - application_fee
        - dependent_addition
        - excluded_dependent
        readOnly: true
      from_year:
        title: من سنة
        description: 'للفاتورة التراكمية: أول سنة عضوية مغطاة.'
        type: integer
        readOnly: true
        x-nullable: true
      to_year:
        title: إلى سنة
        description: 'للفاتورة التراكمية: آخر سنة عضوية مغطاة.'
        type: integer
        readOnly: true
        x-nullable: true
      coverage_period_from:
        title: Coverage period from
        type: string
        readOnly: true
      coverage_period_to:
        title: Coverage period to
        type: string
        readOnly: true
      season_label:
        title: Season label
        type: string
        readOnly: true
      total_amount:
        title: المبلغ الإجمالي
        type: string
        format: decimal
        readOnly: true
      amount_paid:
        title: المبلغ المدفوع
        type: string
        format: decimal
        readOnly: true
      amount_due:
        title: Amount due
        type: string
        readOnly: true
      payment_status:
        title: حالة السداد
        type: string
        enum:
        - draft
        - issued
        - partially_paid
        - paid
        - written_off
        readOnly: true
      issued_at:
        title: تاريخ الإصدار
        type: string
        format: date-time
        readOnly: true
      paid_at:
        title: تاريخ السداد الكامل
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      pay_eligible:
        title: Pay eligible
        type: string
        readOnly: true
      purpose_label:
        title: Purpose label
        type: string
        readOnly: true
      currency:
        title: Currency
        type: string
        readOnly: true
      lines_summary:
        title: Lines summary
        type: string
        readOnly: true
      payment_records:
        type: array
        items:
          $ref: '#/definitions/AnnualInvoicePayment'
        readOnly: true
  MyAnnualInvoiceDetail:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      membership_request_id:
        title: Membership request id
        type: integer
        readOnly: true
        x-nullable: true
      invoice_year:
        title: سنة الفاتورة
        description: 'للفاتورة ذات السنة الواحدة: سنة الفاتورة. للفاتورة التراكمية:
          غالباً مساوية لـ to_year للترتيب والتوافق.'
        type: integer
        readOnly: true
      invoice_kind:
        title: نوع الفاتورة
        type: string
        enum:
        - single_year
        - cumulative
        - establishment_aid
        - application_fee
        - dependent_addition
        - excluded_dependent
        readOnly: true
      from_year:
        title: من سنة
        description: 'للفاتورة التراكمية: أول سنة عضوية مغطاة.'
        type: integer
        readOnly: true
        x-nullable: true
      to_year:
        title: إلى سنة
        description: 'للفاتورة التراكمية: آخر سنة عضوية مغطاة.'
        type: integer
        readOnly: true
        x-nullable: true
      coverage_period_from:
        title: Coverage period from
        type: string
        readOnly: true
      coverage_period_to:
        title: Coverage period to
        type: string
        readOnly: true
      season_label:
        title: Season label
        type: string
        readOnly: true
      total_amount:
        title: المبلغ الإجمالي
        type: string
        format: decimal
        readOnly: true
      amount_paid:
        title: المبلغ المدفوع
        type: string
        format: decimal
        readOnly: true
      amount_due:
        title: Amount due
        type: string
        readOnly: true
      payment_status:
        title: حالة السداد
        type: string
        enum:
        - draft
        - issued
        - partially_paid
        - paid
        - written_off
        readOnly: true
      issued_at:
        title: تاريخ الإصدار
        type: string
        format: date-time
        readOnly: true
      paid_at:
        title: تاريخ السداد الكامل
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      pay_eligible:
        title: Pay eligible
        type: string
        readOnly: true
      purpose_label:
        title: Purpose label
        type: string
        readOnly: true
      currency:
        title: Currency
        type: string
        readOnly: true
      lines_summary:
        title: Lines summary
        type: string
        readOnly: true
      payment_records:
        type: array
        items:
          $ref: '#/definitions/AnnualInvoicePayment'
        readOnly: true
      invoice_number:
        title: Invoice number
        type: string
        readOnly: true
        minLength: 1
      subscription_subtotal:
        title: Subscription subtotal
        type: string
        readOnly: true
      discount_amount:
        title: Discount amount
        type: string
        readOnly: true
      subtotal_after_discount:
        title: Subtotal after discount
        type: string
        readOnly: true
      penalties_subtotal:
        title: Penalties subtotal
        type: string
        readOnly: true
      amount_before_vat:
        title: Amount before vat
        type: string
        readOnly: true
      vat_amount:
        title: Vat amount
        type: string
        readOnly: true
      late_penalties_by_year:
        title: Late penalties by year
        type: string
        readOnly: true
  OverdueMemberPreview:
    type: object
    properties: {}
  BillingSettings:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      establishment_aid_amount:
        title: الإعانة الإنشائية (جنيه)
        description: يُسدَّد عبر Fawry (مسار منفصل) أثناء انتظار التفعيل عندما يكون
          المبلغ أكبر من صفر؛ لا تُضاف إلى فاتورة التفعيل السنوية أو التجديدات.
        type: string
        format: decimal
      membership_request_application_fee:
        title: رسوم تقديم طلب عضوية (جنيه)
        description: مبلغ يُسدَّد عبر Fawry قبل مراجعة الطلب من الإدارة. عند 0 يُتخطَّى
          انتظار السداد للطلبات القادمة من التطبيق.
        type: string
        format: decimal
      dropped_membership_reinstatement_fine:
        title: غرامة رد العضوية المسقطة (جنيه)
        type: string
        format: decimal
        x-nullable: true
      fee_promote_dependent_to_primary:
        title: رسوم تحويل تابع إلى أساسي
        type: string
        format: decimal
      fee_add_brother:
        title: 'رسوم إضافة: أخ'
        type: string
        format: decimal
      fee_add_spouse:
        title: رسوم إضافة الزوج أو الزوجة
        type: string
        format: decimal
      fee_add_parent:
        title: رسم إضافة والد أو والدة
        type: string
        format: decimal
      fee_add_sister:
        title: رسم إضافة الشقيقة
        type: string
        format: decimal
      fee_add_sister_children:
        title: رسم إضافة أبناء الشقيقة
        type: string
        format: decimal
      addon_packaging_amount:
        title: تعبئة
        description: يُضاف لكل فاتورة سنوية ومعاينة المستحقات.
        type: string
        format: decimal
      addon_martyr_stamp_amount:
        title: طابع شهيد
        description: يُضاف لكل فاتورة سنوية ومعاينة المستحقات.
        type: string
        format: decimal
      addon_card_lamination_amount:
        title: تغليف كارنية
        description: يُضاف لكل فاتورة سنوية ومعاينة المستحقات.
        type: string
        format: decimal
      addon_ambulance_fee_amount:
        title: رسم إسعاف
        description: يُضاف لكل فاتورة سنوية ومعاينة المستحقات.
        type: string
        format: decimal
      addon_disability_fee_amount:
        title: رسم الإعاقة
        description: يُضاف لكل فاتورة سنوية ومعاينة المستحقات.
        type: string
        format: decimal
      addon_maintenance_amount:
        title: رسم صيانة
        description: يُضاف لكل فاتورة سنوية ومعاينة المستحقات.
        type: string
        format: decimal
      addon_usufruct_return_amount:
        title: رد حق انتفاع
        description: يُضاف لكل فاتورة سنوية ومعاينة المستحقات.
        type: string
        format: decimal
      addon_other_amount:
        title: أخرى
        description: يُضاف لكل فاتورة سنوية ومعاينة المستحقات.
        type: string
        format: decimal
      fee_add_relationship_5:
        title: Fee add relationship 5
        type: string
        format: decimal
      fee_add_relationship_9:
        title: Fee add relationship 9
        type: string
        format: decimal
      fee_add_relationship_10:
        title: Fee add relationship 10
        type: string
        format: decimal
  _SubscriptionLedgerBlock:
    type: object
    properties: {}
  GalleryImageMobile:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      image:
        title: الصورة
        type: string
        readOnly: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      caption:
        title: وصف الصورة
        type: string
        maxLength: 255
      is_archived:
        title: مؤرشف
        type: boolean
      content_type:
        title: نوع المحتوى
        type: integer
      object_id:
        title: معرف العنصر
        type: integer
        maximum: 4294967295
        minimum: 0
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
  ActivityMobile:
    required:
    - title
    - description
    - start_date
    - end_date
    - activity_type
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      description:
        title: التفاصيل الكاملة
        description: نص تفصيلي للعرض على الموقع والتطبيق.
        type: string
        minLength: 1
      image:
        title: الصورة
        type: string
        readOnly: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      start_date:
        title: تاريخ البدء
        type: string
        format: date
      end_date:
        title: تاريخ الانتهاء
        type: string
        format: date
      start_time:
        title: وقت البدء
        type: string
        x-nullable: true
      end_time:
        title: وقت الانتهاء
        type: string
        x-nullable: true
      benefits:
        title: المزايا
        description: 'قائمة نصوص، مثال: ["تدريب احترافي", "معدات حديثة"].'
        type: object
      services:
        title: الخدمات
        description: 'قائمة نصوص، مثال: ["حجز ملعب", "مدرب خاص"].'
        type: object
      is_active:
        title: نشط
        type: boolean
      activity_type:
        title: نوع النشاط
        type: integer
      images:
        type: array
        items:
          $ref: '#/definitions/GalleryImageMobile'
      content_type_id:
        title: Content type id
        type: string
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  ActivityTypeMobile:
    required:
    - title
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      image:
        title: صورة التطبيق
        type: string
        readOnly: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  AdMobile:
    required:
    - title
    - start_date
    - end_date
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      description:
        title: الوصف
        type: string
      image:
        title: صورة الإعلان
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      video:
        title: فيديو الإعلان
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      is_active:
        title: نشط
        type: boolean
      start_date:
        title: تاريخ البداية
        type: string
        format: date
      end_date:
        title: تاريخ النهاية
        type: string
        format: date
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  BoardMemberMobile:
    required:
    - full_name
    - position
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      full_name:
        title: الاسم بالكامل
        type: string
        maxLength: 255
        minLength: 1
      position:
        title: المنصب
        type: string
        maxLength: 255
        minLength: 1
      image:
        title: الصورة
        type: string
        readOnly: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      bio:
        title: السيرة الذاتية
        type: string
        x-nullable: true
      email:
        title: البريد الإلكتروني
        type: string
        format: email
        maxLength: 254
        x-nullable: true
      phone:
        title: رقم الهاتف
        type: string
        maxLength: 128
        x-nullable: true
      is_active:
        title: نشط
        type: boolean
      order:
        title: الترتيب
        type: integer
        maximum: 4294967295
        minimum: 0
      section:
        title: التصنيف
        type: string
        enum:
        - ceo
        - office
        - senior
        - youth
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  EventMobile:
    required:
    - title
    - brief
    - description
    - start_date
    - end_date
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      brief:
        title: وصف مختصر
        type: string
        minLength: 1
      description:
        title: التفاصيل الكاملة
        description: نص تفصيلي للعرض على الموقع والتطبيق.
        type: string
        minLength: 1
      image:
        title: الصورة
        type: string
        readOnly: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      video:
        title: الفيديو
        type: string
        readOnly: true
        format: uri
      start_date:
        title: تاريخ البدء
        type: string
        format: date
      end_date:
        title: تاريخ الانتهاء
        type: string
        format: date
      event_time:
        title: وقت الفعالية
        type: string
        x-nullable: true
      is_active:
        title: نشط
        type: boolean
      images:
        type: array
        items:
          $ref: '#/definitions/GalleryImageMobile'
      content_type_id:
        title: Content type id
        type: string
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  FacilityMobile:
    required:
    - title
    - brief
    - description
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      brief:
        title: وصف مختصر
        type: string
        minLength: 1
      description:
        title: التفاصيل الكاملة
        description: نص تفصيلي للعرض على الموقع والتطبيق.
        type: string
        minLength: 1
      image:
        title: الصورة
        type: string
        readOnly: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      work_hours:
        title: Work hours
        type: object
        default: []
      services:
        title: الخدمات
        description: 'قائمة أسماء الخدمات فقط، مثال: ["مسبح أولمبي", "صالة رياضية"].'
        type: object
      is_active:
        title: نشط
        type: boolean
      images:
        type: array
        items:
          $ref: '#/definitions/GalleryImageMobile'
      content_type_id:
        title: Content type id
        type: string
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  HomeBannerMobile:
    required:
    - title
    - brief
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      brief:
        title: نبذة مختصرة
        type: string
        minLength: 1
      image:
        title: صورة البانر
        type: string
        readOnly: true
        format: uri
      order:
        title: الترتيب
        type: integer
        maximum: 4294967295
        minimum: 0
      is_active:
        title: نشط
        type: boolean
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  GalleryImageManagement:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      image:
        title: الصورة
        type: string
        readOnly: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      caption:
        title: وصف الصورة
        type: string
        maxLength: 255
      is_archived:
        title: مؤرشف
        type: boolean
      content_type:
        title: نوع المحتوى
        type: integer
      object_id:
        title: معرف العنصر
        type: integer
        maximum: 4294967295
        minimum: 0
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
  ActivityManagement:
    required:
    - title
    - description
    - start_date
    - end_date
    - activity_type
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      description:
        title: التفاصيل الكاملة
        description: نص تفصيلي للعرض على الموقع والتطبيق.
        type: string
        minLength: 1
      image:
        title: الصورة
        type: string
        readOnly: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      start_date:
        title: تاريخ البدء
        type: string
        format: date
      end_date:
        title: تاريخ الانتهاء
        type: string
        format: date
      start_time:
        title: وقت البدء
        type: string
        x-nullable: true
      end_time:
        title: وقت الانتهاء
        type: string
        x-nullable: true
      benefits:
        title: المزايا
        description: 'قائمة نصوص، مثال: ["تدريب احترافي", "معدات حديثة"].'
        type: object
      services:
        title: الخدمات
        description: 'قائمة نصوص، مثال: ["حجز ملعب", "مدرب خاص"].'
        type: object
      is_active:
        title: نشط
        type: boolean
      activity_type:
        title: نوع النشاط
        type: integer
      images:
        type: array
        items:
          $ref: '#/definitions/GalleryImageManagement'
      content_type_id:
        title: Content type id
        type: string
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  ActivityTypeManagement:
    required:
    - title
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      image:
        title: صورة التطبيق
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  AdManagement:
    required:
    - title
    - start_date
    - end_date
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      description:
        title: الوصف
        type: string
      image:
        title: صورة الإعلان
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      video:
        title: فيديو الإعلان
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      is_active:
        title: نشط
        type: boolean
      start_date:
        title: تاريخ البداية
        type: string
        format: date
      end_date:
        title: تاريخ النهاية
        type: string
        format: date
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  BoardMemberManagement:
    required:
    - full_name
    - position
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      full_name:
        title: الاسم بالكامل
        type: string
        maxLength: 255
        minLength: 1
      position:
        title: المنصب
        type: string
        maxLength: 255
        minLength: 1
      image:
        title: الصورة
        type: string
        readOnly: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      bio:
        title: السيرة الذاتية
        type: string
        x-nullable: true
      email:
        title: البريد الإلكتروني
        type: string
        format: email
        maxLength: 254
        x-nullable: true
      phone:
        title: رقم الهاتف
        type: string
        maxLength: 128
        x-nullable: true
      is_active:
        title: نشط
        type: boolean
      order:
        title: الترتيب
        type: integer
        maximum: 4294967295
        minimum: 0
      section:
        title: التصنيف
        type: string
        enum:
        - ceo
        - office
        - senior
        - youth
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  EventManagement:
    required:
    - title
    - brief
    - description
    - start_date
    - end_date
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      brief:
        title: وصف مختصر
        type: string
        minLength: 1
      description:
        title: التفاصيل الكاملة
        description: نص تفصيلي للعرض على الموقع والتطبيق.
        type: string
        minLength: 1
      image:
        title: الصورة
        type: string
        readOnly: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      video:
        title: الفيديو
        type: string
        readOnly: true
        format: uri
      start_date:
        title: تاريخ البدء
        type: string
        format: date
      end_date:
        title: تاريخ الانتهاء
        type: string
        format: date
      event_time:
        title: وقت الفعالية
        type: string
        x-nullable: true
      is_active:
        title: نشط
        type: boolean
      images:
        type: array
        items:
          $ref: '#/definitions/GalleryImageManagement'
      content_type_id:
        title: Content type id
        type: string
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  FacilityManagement:
    required:
    - title
    - brief
    - description
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      brief:
        title: وصف مختصر
        type: string
        minLength: 1
      description:
        title: التفاصيل الكاملة
        description: نص تفصيلي للعرض على الموقع والتطبيق.
        type: string
        minLength: 1
      image:
        title: الصورة
        type: string
        readOnly: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      work_hours:
        title: Work hours
        type: object
        default: []
      services:
        title: الخدمات
        description: 'قائمة أسماء الخدمات فقط، مثال: ["مسبح أولمبي", "صالة رياضية"].'
        type: object
      is_active:
        title: نشط
        type: boolean
      images:
        type: array
        items:
          $ref: '#/definitions/GalleryImageManagement'
      content_type_id:
        title: Content type id
        type: string
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  HomeBannerManagement:
    required:
    - title
    - brief
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      brief:
        title: نبذة مختصرة
        type: string
        minLength: 1
      image:
        title: صورة البانر
        type: string
        readOnly: true
        format: uri
      order:
        title: الترتيب
        type: integer
        maximum: 4294967295
        minimum: 0
      is_active:
        title: نشط
        type: boolean
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  NewsManagement:
    required:
    - date
    - news_type
    - title
    - content
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      date:
        title: تاريخ الخبر
        type: string
        format: date
      news_type:
        title: حالة الخبر
        type: string
        enum:
        - sport
        - official
        - social
        - management
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      content:
        title: نص الخبر
        type: string
        minLength: 1
      resource:
        title: مصدر الخبر
        description: رابط أو مرجع نصي قصير (اختياري).
        type: string
        maxLength: 500
      image:
        title: الصورة الرئيسية
        description: ظهور الغلاف الأول في القوائم والتطبيق.
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      images:
        title: Images
        type: string
        readOnly: true
      content_type_id:
        title: Content type id
        type: string
        readOnly: true
      is_active:
        title: نشط
        type: boolean
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  NewsMobile:
    required:
    - date
    - news_type
    - title
    - content
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      date:
        title: تاريخ الخبر
        type: string
        format: date
      news_type:
        title: حالة الخبر
        type: string
        enum:
        - sport
        - official
        - social
        - management
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      content:
        title: نص الخبر
        type: string
        minLength: 1
      resource:
        title: مصدر الخبر
        description: رابط أو مرجع نصي قصير (اختياري).
        type: string
        maxLength: 500
      image:
        title: الصورة الرئيسية
        description: ظهور الغلاف الأول في القوائم والتطبيق.
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      image_website:
        title: صورة الموقع
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      images:
        title: Images
        type: string
        readOnly: true
      content_type_id:
        title: Content type id
        type: string
        readOnly: true
      is_active:
        title: نشط
        type: boolean
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  GalleryImageWebsite:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      image:
        title: Image
        type: string
        readOnly: true
      caption:
        title: وصف الصورة
        type: string
        readOnly: true
        minLength: 1
      is_archived:
        title: مؤرشف
        type: boolean
        readOnly: true
      content_type:
        title: نوع المحتوى
        type: integer
        readOnly: true
      object_id:
        title: معرف العنصر
        type: integer
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
  ActivityWebsite:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        readOnly: true
        minLength: 1
      description:
        title: التفاصيل الكاملة
        description: نص تفصيلي للعرض على الموقع والتطبيق.
        type: string
        readOnly: true
        minLength: 1
      image:
        title: Image
        type: string
        readOnly: true
      start_date:
        title: تاريخ البدء
        type: string
        format: date
        readOnly: true
      end_date:
        title: تاريخ الانتهاء
        type: string
        format: date
        readOnly: true
      start_time:
        title: وقت البدء
        type: string
        readOnly: true
        x-nullable: true
      end_time:
        title: وقت الانتهاء
        type: string
        readOnly: true
        x-nullable: true
      benefits:
        title: المزايا
        description: 'قائمة نصوص، مثال: ["تدريب احترافي", "معدات حديثة"].'
        type: object
        readOnly: true
      services:
        title: الخدمات
        description: 'قائمة نصوص، مثال: ["حجز ملعب", "مدرب خاص"].'
        type: object
        readOnly: true
      is_active:
        title: نشط
        type: boolean
        readOnly: true
      activity_type:
        title: نوع النشاط
        type: integer
        readOnly: true
      images:
        type: array
        items:
          $ref: '#/definitions/GalleryImageWebsite'
        readOnly: true
      content_type_id:
        title: Content type id
        type: string
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  ActivityTypeWebsite:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        readOnly: true
        minLength: 1
      image:
        title: Image
        type: string
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  AdWebsite:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        readOnly: true
        minLength: 1
      description:
        title: الوصف
        type: string
        readOnly: true
        minLength: 1
      image:
        title: Image
        type: string
        readOnly: true
      video:
        title: فيديو الإعلان
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      is_active:
        title: نشط
        type: boolean
        readOnly: true
      start_date:
        title: تاريخ البداية
        type: string
        format: date
        readOnly: true
      end_date:
        title: تاريخ النهاية
        type: string
        format: date
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  BoardMemberWebsite:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      full_name:
        title: الاسم بالكامل
        type: string
        readOnly: true
        minLength: 1
      position:
        title: المنصب
        type: string
        readOnly: true
        minLength: 1
      image:
        title: Image
        type: string
        readOnly: true
      bio:
        title: السيرة الذاتية
        type: string
        readOnly: true
        minLength: 1
        x-nullable: true
      email:
        title: البريد الإلكتروني
        type: string
        format: email
        readOnly: true
        minLength: 1
        x-nullable: true
      phone:
        title: رقم الهاتف
        type: string
        readOnly: true
        minLength: 1
        x-nullable: true
      is_active:
        title: نشط
        type: boolean
        readOnly: true
      order:
        title: الترتيب
        type: integer
        readOnly: true
      section:
        title: التصنيف
        type: string
        enum:
        - ceo
        - office
        - senior
        - youth
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  EventWebsite:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        readOnly: true
        minLength: 1
      brief:
        title: وصف مختصر
        type: string
        readOnly: true
        minLength: 1
      description:
        title: التفاصيل الكاملة
        description: نص تفصيلي للعرض على الموقع والتطبيق.
        type: string
        readOnly: true
        minLength: 1
      image:
        title: Image
        type: string
        readOnly: true
      video:
        title: الفيديو
        type: string
        readOnly: true
        format: uri
      start_date:
        title: تاريخ البدء
        type: string
        format: date
        readOnly: true
      end_date:
        title: تاريخ الانتهاء
        type: string
        format: date
        readOnly: true
      event_time:
        title: وقت الفعالية
        type: string
        readOnly: true
        x-nullable: true
      is_active:
        title: نشط
        type: boolean
        readOnly: true
      images:
        type: array
        items:
          $ref: '#/definitions/GalleryImageWebsite'
        readOnly: true
      content_type_id:
        title: Content type id
        type: string
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  FacilityWebsite:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        readOnly: true
        minLength: 1
      brief:
        title: وصف مختصر
        type: string
        readOnly: true
        minLength: 1
      description:
        title: التفاصيل الكاملة
        description: نص تفصيلي للعرض على الموقع والتطبيق.
        type: string
        readOnly: true
        minLength: 1
      image:
        title: Image
        type: string
        readOnly: true
      work_hours:
        title: Work hours
        type: object
        readOnly: true
      services:
        title: الخدمات
        description: 'قائمة أسماء الخدمات فقط، مثال: ["مسبح أولمبي", "صالة رياضية"].'
        type: object
        readOnly: true
      is_active:
        title: نشط
        type: boolean
        readOnly: true
      images:
        type: array
        items:
          $ref: '#/definitions/GalleryImageWebsite'
        readOnly: true
      content_type_id:
        title: Content type id
        type: string
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  HomeBannerWebsite:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        readOnly: true
        minLength: 1
      brief:
        title: نبذة مختصرة
        type: string
        readOnly: true
        minLength: 1
      image:
        title: صورة البانر
        type: string
        readOnly: true
        format: uri
      order:
        title: الترتيب
        type: integer
        readOnly: true
      is_active:
        title: نشط
        type: boolean
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  NewsWebsite:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      date:
        title: تاريخ الخبر
        type: string
        format: date
        readOnly: true
      news_type:
        title: حالة الخبر
        type: string
        enum:
        - sport
        - official
        - social
        - management
        readOnly: true
      title:
        title: العنوان
        type: string
        readOnly: true
        minLength: 1
      content:
        title: نص الخبر
        type: string
        readOnly: true
        minLength: 1
      resource:
        title: مصدر الخبر
        description: رابط أو مرجع نصي قصير (اختياري).
        type: string
        readOnly: true
        minLength: 1
      image:
        title: Image
        type: string
        readOnly: true
      images:
        title: Images
        type: string
        readOnly: true
      content_type_id:
        title: Content type id
        type: string
        readOnly: true
      is_active:
        title: نشط
        type: boolean
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  DependentMemberRequest:
    required:
    - relationship_type_id
    - phone_number
    - full_name
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      requesting_member_membership_number:
        title: Requesting member membership number
        type: string
        readOnly: true
        minLength: 1
      requesting_member_name:
        title: Requesting member name
        type: string
        readOnly: true
      relationship_type_name:
        title: Relationship type name
        type: string
        readOnly: true
      nationality:
        title: Nationality
        type: string
        enum:
        - AF
        - AL
        - DZ
        - AD
        - AO
        - AI
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BW
        - BR
        - BN
        - BG
        - BI
        - KH
        - CM
        - CA
        - TD
        - CL
        - CN
        - CO
        - CG
        - CR
        - HR
        - CU
        - CW
        - CY
        - CZ
        - DK
        - DJ
        - DM
        - EC
        - EG
        - SV
        - ER
        - EE
        - SZ
        - ET
        - FJ
        - FI
        - FR
        - GF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GY
        - HT
        - HN
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MG
        - MW
        - MY
        - ML
        - MT
        - MQ
        - MR
        - MU
        - YT
        - MX
        - MD
        - MC
        - MN
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NZ
        - NI
        - NE
        - NG
        - NU
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - RE
        - RO
        - RU
        - RW
        - WS
        - SN
        - RS
        - SC
        - SL
        - SG
        - SK
        - SI
        - SO
        - ES
        - LK
        - SD
        - SR
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TG
        - TK
        - TO
        - TN
        - TR
        - TM
        - TV
        - UG
        - UA
        - UY
        - UZ
        - VU
        - VE
        - VN
        - YE
        - ZM
        - ZW
        - AX
        - AS
        - AQ
        - AG
        - BY
        - BA
        - BV
        - BF
        - CV
        - KY
        - CX
        - CC
        - KM
        - CK
        - CI
        - DO
        - GQ
        - FO
        - PF
        - GI
        - GW
        - VA
        - IM
        - KP
        - KR
        - MV
        - MH
        - ME
        - NC
        - NF
        - MK
        - BL
        - SH
        - LC
        - SM
        - SB
        - SS
        - TL
        - TT
        - GB
        - EH
        - BQ
        - IO
        - CF
        - CD
        - TF
        - HM
        - HK
        - MP
        - PG
        - KN
        - PM
        - VC
        - ST
        - SJ
        - TC
        - AE
        - US
        - WF
        - GS
        - UM
        - MF
        - SX
        - VI
        - FK
        - ZA
        - VG
        - FM
        - SA
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
      relationship_type_id:
        title: صلة المضاف
        type: integer
        enum:
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10
        - 11
        - 12
        - 13
        - 14
      status:
        title: الحالة
        type: string
        enum:
        - pending
        - ready_for_interview
        - approved
        - rejected
        readOnly: true
      interview_at:
        title: موعد المقابلة
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      interview_notes:
        title: ملاحظات موعد المقابلة
        type: string
        readOnly: true
        minLength: 1
      email:
        title: البريد
        type: string
        format: email
        maxLength: 254
        x-nullable: true
      phone_number:
        title: الهاتف
        type: string
        maxLength: 128
        minLength: 1
      full_name:
        title: الاسم الكامل
        type: string
        maxLength: 255
        minLength: 1
      birth_date:
        title: تاريخ الميلاد
        type: string
        format: date
        x-nullable: true
      gender_id:
        title: الجنس
        type: integer
        enum:
        - 1
        - 2
        x-nullable: true
      title:
        title: اللقب
        type: string
        maxLength: 255
      main_address:
        title: العنوان الأساسي
        type: string
      place_of_birth:
        title: محل الميلاد
        type: string
        maxLength: 255
      religion_id:
        title: الديانة
        type: integer
        enum:
        - 1
        - 2
        x-nullable: true
      marital_status:
        title: الحالة الاجتماعية
        type: string
        enum:
        - single
        - married
        - divorced
        - widowed
        x-nullable: true
      national_id_number:
        title: رقم البطاقة / الرقم القومي
        type: string
        maxLength: 64
      id_document_type:
        title: نوع مستند الهوية
        type: string
        enum:
        - national_id
        - passport
        - other
        x-nullable: true
      passport_number:
        title: رقم جواز السفر
        type: string
        maxLength: 64
      military_service_start_date:
        title: بداية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      military_service_end_date:
        title: نهاية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      work_address:
        title: عنوان العمل
        type: string
      notes:
        title: ملاحظات
        type: string
      approval_number:
        title: رقم الموافقة
        type: string
        maxLength: 128
      approval_date:
        title: تاريخ الموافقة
        type: string
        format: date
        x-nullable: true
      card_printing_date:
        title: تاريخ طباعة الكارنية
        type: string
        format: date
        x-nullable: true
      national_id_image:
        title: صورة الهوية (أمام)
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      national_id_image_back:
        title: صورة الهوية (خلف)
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      qualification_document:
        title: مستند المؤهل
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      review_notes:
        title: ملاحظات المراجعة
        type: string
        readOnly: true
        minLength: 1
      rejection_reason:
        title: سبب الرفض
        type: string
        readOnly: true
        minLength: 1
      review_date:
        title: تاريخ المراجعة
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      requesting_member:
        title: العضو الطالب
        type: integer
        readOnly: true
      area:
        title: المنطقة / المحافظة
        type: integer
        x-nullable: true
      qualification:
        title: المؤهل الدراسي
        type: integer
        x-nullable: true
      job:
        title: الوظيفة
        type: integer
        x-nullable: true
      reviewed_by:
        title: راجعه
        type: integer
        readOnly: true
        x-nullable: true
      created_member:
        title: العضو الناتج
        type: integer
        readOnly: true
        x-nullable: true
  DependentMemberRequestCreate:
    required:
    - relationship_type_id
    - phone_number
    - full_name
    - area
    - nationality
    type: object
    properties:
      relationship_type_id:
        title: صلة المضاف
        type: integer
        enum:
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10
        - 11
        - 12
        - 13
        - 14
      email:
        title: البريد
        type: string
        format: email
        maxLength: 254
        x-nullable: true
      phone_number:
        title: الهاتف
        type: string
        maxLength: 128
        minLength: 1
      full_name:
        title: الاسم الكامل
        type: string
        maxLength: 255
        minLength: 1
      birth_date:
        title: تاريخ الميلاد
        type: string
        format: date
        x-nullable: true
      gender_id:
        title: الجنس
        type: integer
        enum:
        - 1
        - 2
        x-nullable: true
      title:
        title: اللقب
        type: string
        maxLength: 255
      main_address:
        title: العنوان الأساسي
        type: string
      area:
        title: Area
        type: integer
      place_of_birth:
        title: محل الميلاد
        type: string
        maxLength: 255
      religion_id:
        title: الديانة
        type: integer
        enum:
        - 1
        - 2
        x-nullable: true
      nationality:
        title: Nationality
        type: string
        enum:
        - AF
        - AL
        - DZ
        - AD
        - AO
        - AI
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BW
        - BR
        - BN
        - BG
        - BI
        - KH
        - CM
        - CA
        - TD
        - CL
        - CN
        - CO
        - CG
        - CR
        - HR
        - CU
        - CW
        - CY
        - CZ
        - DK
        - DJ
        - DM
        - EC
        - EG
        - SV
        - ER
        - EE
        - SZ
        - ET
        - FJ
        - FI
        - FR
        - GF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GY
        - HT
        - HN
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MG
        - MW
        - MY
        - ML
        - MT
        - MQ
        - MR
        - MU
        - YT
        - MX
        - MD
        - MC
        - MN
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NZ
        - NI
        - NE
        - NG
        - NU
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - RE
        - RO
        - RU
        - RW
        - WS
        - SN
        - RS
        - SC
        - SL
        - SG
        - SK
        - SI
        - SO
        - ES
        - LK
        - SD
        - SR
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TG
        - TK
        - TO
        - TN
        - TR
        - TM
        - TV
        - UG
        - UA
        - UY
        - UZ
        - VU
        - VE
        - VN
        - YE
        - ZM
        - ZW
        - AX
        - AS
        - AQ
        - AG
        - BY
        - BA
        - BV
        - BF
        - CV
        - KY
        - CX
        - CC
        - KM
        - CK
        - CI
        - DO
        - GQ
        - FO
        - PF
        - GI
        - GW
        - VA
        - IM
        - KP
        - KR
        - MV
        - MH
        - ME
        - NC
        - NF
        - MK
        - BL
        - SH
        - LC
        - SM
        - SB
        - SS
        - TL
        - TT
        - GB
        - EH
        - BQ
        - IO
        - CF
        - CD
        - TF
        - HM
        - HK
        - MP
        - PG
        - KN
        - PM
        - VC
        - ST
        - SJ
        - TC
        - AE
        - US
        - WF
        - GS
        - UM
        - MF
        - SX
        - VI
        - FK
        - ZA
        - VG
        - FM
        - SA
      marital_status:
        title: الحالة الاجتماعية
        type: string
        enum:
        - single
        - married
        - divorced
        - widowed
        x-nullable: true
      national_id_number:
        title: رقم البطاقة / الرقم القومي
        type: string
        maxLength: 64
      id_document_type:
        title: نوع مستند الهوية
        type: string
        enum:
        - national_id
        - passport
        - other
        x-nullable: true
      passport_number:
        title: رقم جواز السفر
        type: string
        maxLength: 64
      qualification:
        title: Qualification
        type: integer
        x-nullable: true
      military_service_start_date:
        title: بداية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      military_service_end_date:
        title: نهاية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      work_address:
        title: عنوان العمل
        type: string
      job:
        title: Job
        type: integer
        x-nullable: true
      notes:
        title: ملاحظات
        type: string
      approval_number:
        title: رقم الموافقة
        type: string
        maxLength: 128
      approval_date:
        title: تاريخ الموافقة
        type: string
        format: date
        x-nullable: true
      card_printing_date:
        title: تاريخ طباعة الكارنية
        type: string
        format: date
        x-nullable: true
      national_id_image:
        title: National id image
        type: string
        readOnly: true
        format: uri
      national_id_image_back:
        title: National id image back
        type: string
        readOnly: true
        format: uri
      qualification_document:
        title: Qualification document
        type: string
        readOnly: true
        x-nullable: true
        format: uri
  SisterFamilyRegistrySubmission:
    required:
    - member
    - membership_year
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      member:
        title: العضو (شقيقة)
        type: integer
      member_membership_number:
        title: Member membership number
        type: string
        readOnly: true
        minLength: 1
      member_full_name:
        title: Member full name
        type: string
        readOnly: true
      primary_member_id:
        title: Primary member id
        type: integer
        readOnly: true
      primary_member_name:
        title: Primary member name
        type: string
        readOnly: true
      primary_member_membership_number:
        title: Primary member membership number
        type: string
        readOnly: true
      membership_year:
        title: سنة العضوية
        description: تسمية سنة الفاتورة التي يغطيها القيد (1 يوليو – 30 يونيو).
        type: integer
        maximum: 4294967295
        minimum: 0
      document:
        title: قيد عائلي
        type: string
        readOnly: true
        format: uri
      document_url:
        title: Document url
        type: string
        readOnly: true
      status:
        title: الحالة
        type: string
        enum:
        - pending
        - approved
        - rejected
        readOnly: true
        default: pending
      status_display:
        title: Status display
        type: string
        readOnly: true
        minLength: 1
      upload_source:
        title: مصدر الرفع
        type: string
        enum:
        - member
        - primary
        - staff
        readOnly: true
      upload_source_display:
        title: Upload source display
        type: string
        readOnly: true
        minLength: 1
      uploaded_by:
        title: رفع بواسطة
        type: integer
        readOnly: true
      uploaded_by_email:
        title: Uploaded by email
        type: string
        format: email
        readOnly: true
        minLength: 1
      reviewed_by:
        title: راجع بواسطة
        type: integer
        readOnly: true
        x-nullable: true
      reviewed_by_email:
        title: Reviewed by email
        type: string
        format: email
        readOnly: true
        minLength: 1
        x-nullable: true
      reviewed_at:
        title: تاريخ المراجعة
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      rejection_reason:
        title: سبب الرفض
        type: string
        readOnly: true
        minLength: 1
      notes:
        title: ملاحظات
        type: string
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  GeneralAssemblyMeeting:
    required:
    - held_on
    - invoice_year
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
      held_on:
        title: تاريخ الانعقاد
        type: string
        format: date
      invoice_year:
        title: سنة الفاتورة (اشتراك)
        description: سنة الاشتراك التي تُحسب غرامات غياب هذه الجمعية ضمنها.
        type: integer
        maximum: 4294967295
        minimum: 0
      notes:
        title: ملاحظات
        type: string
      attendance_finalized:
        title: اعتماد الحضور
        type: boolean
        readOnly: true
      finalized_at:
        title: تاريخ الاعتماد
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      finalized_by:
        title: اعتمد بواسطة
        type: integer
        readOnly: true
        x-nullable: true
      finalized_by_detail:
        $ref: '#/definitions/UserSummary'
      attendance_record_count:
        title: Attendance record count
        type: integer
        readOnly: true
      attendance_present_count:
        title: Attendance present count
        type: integer
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  Job:
    required:
    - name
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      name:
        title: المسمى الوظيفي
        type: string
        maxLength: 255
        minLength: 1
  MemberContactWrite:
    required:
    - contact_type
    - value
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
      contact_type:
        title: نوع التواصل
        type: string
        enum:
        - whatsapp
        - home
        - personal
        - work
      value:
        title: القيمة / الرقم
        type: string
        maxLength: 255
        minLength: 1
      is_primary:
        title: أساسي
        type: boolean
  NestedDependentCreate:
    required:
    - relationship_type_id
    - first_name
    - last_name
    - password
    - phone_number
    - main_address
    - area
    - place_of_birth
    - national_id_number
    - nationality
    - religion_id
    type: object
    properties:
      relationship_type_id:
        title: Relationship type id
        type: integer
      first_name:
        title: First name
        type: string
        maxLength: 80
        minLength: 1
      last_name:
        title: Last name
        type: string
        maxLength: 80
        minLength: 1
      password:
        title: Password
        type: string
        minLength: 8
      phone_number:
        title: Phone number
        type: string
        minLength: 1
      date_birth:
        title: Date birth
        type: string
        format: date
        x-nullable: true
      gender_id:
        title: Gender id
        type: integer
        x-nullable: true
      main_address:
        title: Main address
        type: string
        minLength: 1
      area:
        title: Area
        type: integer
      place_of_birth:
        title: Place of birth
        type: string
        minLength: 1
      national_id_number:
        title: National id number
        type: string
        minLength: 1
      nationality:
        title: Nationality
        type: string
        enum:
        - AF
        - AL
        - DZ
        - AD
        - AO
        - AI
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BW
        - BR
        - BN
        - BG
        - BI
        - KH
        - CM
        - CA
        - TD
        - CL
        - CN
        - CO
        - CG
        - CR
        - HR
        - CU
        - CW
        - CY
        - CZ
        - DK
        - DJ
        - DM
        - EC
        - EG
        - SV
        - ER
        - EE
        - SZ
        - ET
        - FJ
        - FI
        - FR
        - GF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GY
        - HT
        - HN
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MG
        - MW
        - MY
        - ML
        - MT
        - MQ
        - MR
        - MU
        - YT
        - MX
        - MD
        - MC
        - MN
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NZ
        - NI
        - NE
        - NG
        - NU
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - RE
        - RO
        - RU
        - RW
        - WS
        - SN
        - RS
        - SC
        - SL
        - SG
        - SK
        - SI
        - SO
        - ES
        - LK
        - SD
        - SR
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TG
        - TK
        - TO
        - TN
        - TR
        - TM
        - TV
        - UG
        - UA
        - UY
        - UZ
        - VU
        - VE
        - VN
        - YE
        - ZM
        - ZW
        - AX
        - AS
        - AQ
        - AG
        - BY
        - BA
        - BV
        - BF
        - CV
        - KY
        - CX
        - CC
        - KM
        - CK
        - CI
        - DO
        - GQ
        - FO
        - PF
        - GI
        - GW
        - VA
        - IM
        - KP
        - KR
        - MV
        - MH
        - ME
        - NC
        - NF
        - MK
        - BL
        - SH
        - LC
        - SM
        - SB
        - SS
        - TL
        - TT
        - GB
        - EH
        - BQ
        - IO
        - CF
        - CD
        - TF
        - HM
        - HK
        - MP
        - PG
        - KN
        - PM
        - VC
        - ST
        - SJ
        - TC
        - AE
        - US
        - WF
        - GS
        - UM
        - MF
        - SX
        - VI
        - FK
        - ZA
        - VG
        - FM
        - SA
      title:
        title: Title
        type: string
        default: ''
      religion_id:
        title: Religion id
        type: integer
      marital_status:
        title: Marital status
        type: string
        x-nullable: true
      qualification:
        title: Qualification
        type: integer
        x-nullable: true
      notes:
        title: Notes
        type: string
        default: ''
      work_address:
        title: Work address
        type: string
        default: ''
      job:
        title: Job
        type: integer
        x-nullable: true
      contacts:
        type: array
        items:
          $ref: '#/definitions/MemberContactWrite'
  MemberCreate:
    required:
    - first_name
    - last_name
    - password
    - phone_number
    - religion_id
    - place_of_birth
    - nationality
    - membership_number
    - membership_category
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      category:
        title: Category
        type: string
      first_name:
        title: First name
        type: string
        maxLength: 80
        minLength: 1
      last_name:
        title: Last name
        type: string
        maxLength: 80
        minLength: 1
      password:
        title: Password
        type: string
        minLength: 8
      phone_number:
        title: Phone number
        type: string
        minLength: 1
      date_birth:
        title: Date birth
        type: string
        format: date
        x-nullable: true
      gender_id:
        title: Gender id
        type: integer
        x-nullable: true
      religion_id:
        title: Religion id
        type: integer
      contacts:
        type: array
        items:
          $ref: '#/definitions/MemberContactWrite'
      dependents:
        type: array
        items:
          $ref: '#/definitions/NestedDependentCreate'
      national_id_image:
        title: National id image
        type: string
        readOnly: true
        format: uri
      national_id_image_back:
        title: National id image back
        type: string
        readOnly: true
        format: uri
      qualification_document:
        title: Qualification document
        type: string
        readOnly: true
        format: uri
      profile_image:
        title: Profile image
        type: string
        readOnly: true
        format: uri
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
      title:
        title: اللقب
        type: string
        maxLength: 255
      main_address:
        title: العنوان الأساسي
        type: string
      place_of_birth:
        title: محل الميلاد
        type: string
        maxLength: 255
        minLength: 1
      nationality:
        title: الجنسية
        type: string
        enum:
        - AF
        - AL
        - DZ
        - AD
        - AO
        - AI
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BW
        - BR
        - BN
        - BG
        - BI
        - KH
        - CM
        - CA
        - TD
        - CL
        - CN
        - CO
        - CG
        - CR
        - HR
        - CU
        - CW
        - CY
        - CZ
        - DK
        - DJ
        - DM
        - EC
        - EG
        - SV
        - ER
        - EE
        - SZ
        - ET
        - FJ
        - FI
        - FR
        - GF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GY
        - HT
        - HN
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MG
        - MW
        - MY
        - ML
        - MT
        - MQ
        - MR
        - MU
        - YT
        - MX
        - MD
        - MC
        - MN
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NZ
        - NI
        - NE
        - NG
        - NU
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - RE
        - RO
        - RU
        - RW
        - WS
        - SN
        - RS
        - SC
        - SL
        - SG
        - SK
        - SI
        - SO
        - ES
        - LK
        - SD
        - SR
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TG
        - TK
        - TO
        - TN
        - TR
        - TM
        - TV
        - UG
        - UA
        - UY
        - UZ
        - VU
        - VE
        - VN
        - YE
        - ZM
        - ZW
        - AX
        - AS
        - AQ
        - AG
        - BY
        - BA
        - BV
        - BF
        - CV
        - KY
        - CX
        - CC
        - KM
        - CK
        - CI
        - DO
        - GQ
        - FO
        - PF
        - GI
        - GW
        - VA
        - IM
        - KP
        - KR
        - MV
        - MH
        - ME
        - NC
        - NF
        - MK
        - BL
        - SH
        - LC
        - SM
        - SB
        - SS
        - TL
        - TT
        - GB
        - EH
        - BQ
        - IO
        - CF
        - CD
        - TF
        - HM
        - HK
        - MP
        - PG
        - KN
        - PM
        - VC
        - ST
        - SJ
        - TC
        - AE
        - US
        - WF
        - GS
        - UM
        - MF
        - SX
        - VI
        - FK
        - ZA
        - VG
        - FM
        - SA
      marital_status:
        title: الحالة الاجتماعية
        type: string
        enum:
        - single
        - married
        - divorced
        - widowed
        x-nullable: true
      national_id_number:
        title: رقم البطاقة / الرقم القومي
        type: string
        maxLength: 64
      id_document_type:
        title: نوع مستند الهوية
        type: string
        enum:
        - national_id
        - passport
        - other
        x-nullable: true
      passport_number:
        title: رقم جواز السفر
        type: string
        maxLength: 64
      military_service_start_date:
        title: بداية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      military_service_end_date:
        title: نهاية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      work_address:
        title: عنوان العمل
        type: string
      notes:
        title: ملاحظات
        type: string
      birth_date:
        title: تاريخ الميلاد
        type: string
        format: date
        x-nullable: true
      membership_number:
        title: رقم العضوية
        description: رقم العضوية المرجعي للعضوية
        type: string
        maxLength: 64
        minLength: 1
      membership_type:
        title: نوع العضوية
        description: عضو الفرع الرئيسي أو عضو فرع.
        type: string
        enum:
        - main_branch_member
        - branch_member
      membership_status:
        title: حالة العضوية
        type: string
        enum:
        - active
        - pending_activation
        - suspended
        - dead
        - dropped
      legacy_membership_class:
        title: صنف العضوية (النظام القديم)
        description: تسمية Oracle MEMBERSHIP_CODE للعرض فقط؛ لا تؤثر على الفوترة.
        type: string
        enum:
        - working
        - founder
        - temporary_working
        - seasonal
        - honorary
        x-nullable: true
      member_role:
        title: دور العضوية
        type: string
        enum:
        - primary
        - dependent
      relationship_type_id:
        title: صلة التابع
        description: يُستخدم للتابعين لتتبع نوع الرسوم عند الإضافة.
        type: integer
        enum:
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10
        - 11
        - 12
        - 13
        - 14
        x-nullable: true
      legacy_dependent_serial:
        title: رقم تسلسل التابع (قديم)
        description: Oracle REF_MEMBERS.SERIAL_NO for legacy dependent matching (REF_TRANS).
        type: integer
        maximum: 4294967295
        minimum: 0
        x-nullable: true
      approval_number:
        title: رقم الموافقة
        type: string
        maxLength: 128
      approval_date:
        title: تاريخ الموافقة
        type: string
        format: date
        x-nullable: true
      establishment_aid_paid_at:
        title: تاريخ سداد الإعانة الإنشائية (Fawry)
        description: يُملأ بعد سداد الإعانة + ضريبة 14٪ عبر Fawry قبل إصدار فاتورة
          التفعيل السنوية.
        type: string
        format: date-time
        x-nullable: true
      establishment_aid_fawry_ref:
        title: مرجع Fawry للإعانة الإنشائية
        type: string
        maxLength: 255
      card_printing_date:
        title: تاريخ طباعة الكارنيه
        type: string
        format: date
        x-nullable: true
      membership_end_date:
        title: تاريخ انتهاء العضوية (قديم)
        type: string
        format: date
        x-nullable: true
      legacy_oracle_username:
        title: اسم مستخدم Oracle
        type: string
        maxLength: 64
      legacy_removed_at:
        title: تاريخ الحذف في النظام القديم
        type: string
        format: date
        x-nullable: true
      imported_profile_image_path:
        title: مسار صورة Oracle (استيراد)
        type: string
        maxLength: 512
      area:
        title: المنطقة / المحافظة
        type: integer
        x-nullable: true
      qualification:
        title: المؤهل الدراسي
        type: integer
        x-nullable: true
      job:
        title: الوظيفة
        type: integer
        x-nullable: true
      membership_category:
        title: فئة العضوية
        type: integer
      section:
        title: القسم
        description: يحدد رسوم إضافة التابعين وغرامات الجمعية العمومية وتأخير 4 شهور.
        type: integer
        x-nullable: true
      primary_member:
        title: العضو الأساسي
        description: يُملأ للتابعين فقط؛ يشير إلى العضو الذي تُحسب رسومه تحت حسابه.
        type: integer
        x-nullable: true
  Member:
    required:
    - place_of_birth
    - membership_number
    - membership_category
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      user:
        $ref: '#/definitions/UserSummary'
      membership_type:
        $ref: '#/definitions/MembershipCategoryBrief'
      nationality:
        title: Nationality
        type: string
        enum:
        - AF
        - AL
        - DZ
        - AD
        - AO
        - AI
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BW
        - BR
        - BN
        - BG
        - BI
        - KH
        - CM
        - CA
        - TD
        - CL
        - CN
        - CO
        - CG
        - CR
        - HR
        - CU
        - CW
        - CY
        - CZ
        - DK
        - DJ
        - DM
        - EC
        - EG
        - SV
        - ER
        - EE
        - SZ
        - ET
        - FJ
        - FI
        - FR
        - GF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GY
        - HT
        - HN
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MG
        - MW
        - MY
        - ML
        - MT
        - MQ
        - MR
        - MU
        - YT
        - MX
        - MD
        - MC
        - MN
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NZ
        - NI
        - NE
        - NG
        - NU
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - RE
        - RO
        - RU
        - RW
        - WS
        - SN
        - RS
        - SC
        - SL
        - SG
        - SK
        - SI
        - SO
        - ES
        - LK
        - SD
        - SR
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TG
        - TK
        - TO
        - TN
        - TR
        - TM
        - TV
        - UG
        - UA
        - UY
        - UZ
        - VU
        - VE
        - VN
        - YE
        - ZM
        - ZW
        - AX
        - AS
        - AQ
        - AG
        - BY
        - BA
        - BV
        - BF
        - CV
        - KY
        - CX
        - CC
        - KM
        - CK
        - CI
        - DO
        - GQ
        - FO
        - PF
        - GI
        - GW
        - VA
        - IM
        - KP
        - KR
        - MV
        - MH
        - ME
        - NC
        - NF
        - MK
        - BL
        - SH
        - LC
        - SM
        - SB
        - SS
        - TL
        - TT
        - GB
        - EH
        - BQ
        - IO
        - CF
        - CD
        - TF
        - HM
        - HK
        - MP
        - PG
        - KN
        - PM
        - VC
        - ST
        - SJ
        - TC
        - AE
        - US
        - WF
        - GS
        - UM
        - MF
        - SX
        - VI
        - FK
        - ZA
        - VG
        - FM
        - SA
        readOnly: true
      legacy_membership_class_display:
        title: Legacy membership class display
        type: string
        readOnly: true
        x-nullable: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
      title:
        title: اللقب
        type: string
        maxLength: 255
      main_address:
        title: العنوان الأساسي
        type: string
      place_of_birth:
        title: محل الميلاد
        type: string
        maxLength: 255
        minLength: 1
      religion_id:
        title: الديانة
        type: integer
        enum:
        - 1
        - 2
        x-nullable: true
      marital_status:
        title: الحالة الاجتماعية
        type: string
        enum:
        - single
        - married
        - divorced
        - widowed
        x-nullable: true
      national_id_number:
        title: رقم البطاقة / الرقم القومي
        type: string
        maxLength: 64
      id_document_type:
        title: نوع مستند الهوية
        type: string
        enum:
        - national_id
        - passport
        - other
        x-nullable: true
      passport_number:
        title: رقم جواز السفر
        type: string
        maxLength: 64
      military_service_start_date:
        title: بداية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      military_service_end_date:
        title: نهاية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      work_address:
        title: عنوان العمل
        type: string
      notes:
        title: ملاحظات
        type: string
      birth_date:
        title: تاريخ الميلاد
        type: string
        format: date
        x-nullable: true
      gender_id:
        title: الجنس
        type: integer
        enum:
        - 1
        - 2
        x-nullable: true
      profile_image:
        title: الصورة الشخصية
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      membership_number:
        title: رقم العضوية
        description: رقم العضوية المرجعي للعضوية
        type: string
        maxLength: 64
        minLength: 1
      membership_status:
        title: حالة العضوية
        type: string
        enum:
        - active
        - pending_activation
        - suspended
        - dead
        - dropped
      legacy_membership_class:
        title: صنف العضوية (النظام القديم)
        description: تسمية Oracle MEMBERSHIP_CODE للعرض فقط؛ لا تؤثر على الفوترة.
        type: string
        enum:
        - working
        - founder
        - temporary_working
        - seasonal
        - honorary
        x-nullable: true
      member_role:
        title: دور العضوية
        type: string
        enum:
        - primary
        - dependent
      relationship_type_id:
        title: صلة التابع
        description: يُستخدم للتابعين لتتبع نوع الرسوم عند الإضافة.
        type: integer
        enum:
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10
        - 11
        - 12
        - 13
        - 14
        x-nullable: true
      legacy_dependent_serial:
        title: رقم تسلسل التابع (قديم)
        description: Oracle REF_MEMBERS.SERIAL_NO for legacy dependent matching (REF_TRANS).
        type: integer
        maximum: 4294967295
        minimum: 0
        x-nullable: true
      approval_number:
        title: رقم الموافقة
        type: string
        maxLength: 128
      approval_date:
        title: تاريخ الموافقة
        type: string
        format: date
        x-nullable: true
      establishment_aid_paid_at:
        title: تاريخ سداد الإعانة الإنشائية (Fawry)
        description: يُملأ بعد سداد الإعانة + ضريبة 14٪ عبر Fawry قبل إصدار فاتورة
          التفعيل السنوية.
        type: string
        format: date-time
        x-nullable: true
      establishment_aid_fawry_ref:
        title: مرجع Fawry للإعانة الإنشائية
        type: string
        maxLength: 255
      card_printing_date:
        title: تاريخ طباعة الكارنيه
        type: string
        format: date
        x-nullable: true
      membership_end_date:
        title: تاريخ انتهاء العضوية (قديم)
        type: string
        format: date
        x-nullable: true
      legacy_oracle_username:
        title: اسم مستخدم Oracle
        type: string
        maxLength: 64
      legacy_removed_at:
        title: تاريخ الحذف في النظام القديم
        type: string
        format: date
        x-nullable: true
      imported_profile_image_path:
        title: مسار صورة Oracle (استيراد)
        type: string
        maxLength: 512
      national_id_image:
        title: صورة البطاقة (أمام)
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      national_id_image_back:
        title: صورة البطاقة (خلف)
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      qualification_document:
        title: مستند المؤهل
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      area:
        title: المنطقة / المحافظة
        type: integer
        x-nullable: true
      qualification:
        title: المؤهل الدراسي
        type: integer
        x-nullable: true
      job:
        title: الوظيفة
        type: integer
        x-nullable: true
      membership_category:
        title: فئة العضوية
        type: integer
      section:
        title: القسم
        description: يحدد رسوم إضافة التابعين وغرامات الجمعية العمومية وتأخير 4 شهور.
        type: integer
        x-nullable: true
      primary_member:
        title: العضو الأساسي
        description: يُملأ للتابعين فقط؛ يشير إلى العضو الذي تُحسب رسومه تحت حسابه.
        type: integer
        x-nullable: true
  MemberUpdate:
    required:
    - place_of_birth
    - nationality
    - membership_number
    - membership_category
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
      title:
        title: اللقب
        type: string
        maxLength: 255
      main_address:
        title: العنوان الأساسي
        type: string
      place_of_birth:
        title: محل الميلاد
        type: string
        maxLength: 255
        minLength: 1
      religion_id:
        title: الديانة
        type: integer
        enum:
        - 1
        - 2
        x-nullable: true
      nationality:
        title: الجنسية
        type: string
        enum:
        - AF
        - AL
        - DZ
        - AD
        - AO
        - AI
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BW
        - BR
        - BN
        - BG
        - BI
        - KH
        - CM
        - CA
        - TD
        - CL
        - CN
        - CO
        - CG
        - CR
        - HR
        - CU
        - CW
        - CY
        - CZ
        - DK
        - DJ
        - DM
        - EC
        - EG
        - SV
        - ER
        - EE
        - SZ
        - ET
        - FJ
        - FI
        - FR
        - GF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GY
        - HT
        - HN
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MG
        - MW
        - MY
        - ML
        - MT
        - MQ
        - MR
        - MU
        - YT
        - MX
        - MD
        - MC
        - MN
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NZ
        - NI
        - NE
        - NG
        - NU
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - RE
        - RO
        - RU
        - RW
        - WS
        - SN
        - RS
        - SC
        - SL
        - SG
        - SK
        - SI
        - SO
        - ES
        - LK
        - SD
        - SR
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TG
        - TK
        - TO
        - TN
        - TR
        - TM
        - TV
        - UG
        - UA
        - UY
        - UZ
        - VU
        - VE
        - VN
        - YE
        - ZM
        - ZW
        - AX
        - AS
        - AQ
        - AG
        - BY
        - BA
        - BV
        - BF
        - CV
        - KY
        - CX
        - CC
        - KM
        - CK
        - CI
        - DO
        - GQ
        - FO
        - PF
        - GI
        - GW
        - VA
        - IM
        - KP
        - KR
        - MV
        - MH
        - ME
        - NC
        - NF
        - MK
        - BL
        - SH
        - LC
        - SM
        - SB
        - SS
        - TL
        - TT
        - GB
        - EH
        - BQ
        - IO
        - CF
        - CD
        - TF
        - HM
        - HK
        - MP
        - PG
        - KN
        - PM
        - VC
        - ST
        - SJ
        - TC
        - AE
        - US
        - WF
        - GS
        - UM
        - MF
        - SX
        - VI
        - FK
        - ZA
        - VG
        - FM
        - SA
      marital_status:
        title: الحالة الاجتماعية
        type: string
        enum:
        - single
        - married
        - divorced
        - widowed
        x-nullable: true
      national_id_number:
        title: رقم البطاقة / الرقم القومي
        type: string
        maxLength: 64
      id_document_type:
        title: نوع مستند الهوية
        type: string
        enum:
        - national_id
        - passport
        - other
        x-nullable: true
      passport_number:
        title: رقم جواز السفر
        type: string
        maxLength: 64
      military_service_start_date:
        title: بداية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      military_service_end_date:
        title: نهاية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      work_address:
        title: عنوان العمل
        type: string
      notes:
        title: ملاحظات
        type: string
      birth_date:
        title: تاريخ الميلاد
        type: string
        format: date
        x-nullable: true
      gender_id:
        title: الجنس
        type: integer
        enum:
        - 1
        - 2
        x-nullable: true
      profile_image:
        title: الصورة الشخصية
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      membership_number:
        title: رقم العضوية
        description: رقم العضوية المرجعي للعضوية
        type: string
        maxLength: 64
        minLength: 1
      membership_type:
        title: نوع العضوية
        description: عضو الفرع الرئيسي أو عضو فرع.
        type: string
        enum:
        - main_branch_member
        - branch_member
      membership_status:
        title: حالة العضوية
        type: string
        enum:
        - active
        - pending_activation
        - suspended
        - dead
        - dropped
      legacy_membership_class:
        title: صنف العضوية (النظام القديم)
        description: تسمية Oracle MEMBERSHIP_CODE للعرض فقط؛ لا تؤثر على الفوترة.
        type: string
        enum:
        - working
        - founder
        - temporary_working
        - seasonal
        - honorary
        x-nullable: true
      member_role:
        title: دور العضوية
        type: string
        enum:
        - primary
        - dependent
      relationship_type_id:
        title: صلة التابع
        description: يُستخدم للتابعين لتتبع نوع الرسوم عند الإضافة.
        type: integer
        enum:
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10
        - 11
        - 12
        - 13
        - 14
        x-nullable: true
      legacy_dependent_serial:
        title: رقم تسلسل التابع (قديم)
        description: Oracle REF_MEMBERS.SERIAL_NO for legacy dependent matching (REF_TRANS).
        type: integer
        maximum: 4294967295
        minimum: 0
        x-nullable: true
      approval_number:
        title: رقم الموافقة
        type: string
        maxLength: 128
      approval_date:
        title: تاريخ الموافقة
        type: string
        format: date
        x-nullable: true
      establishment_aid_paid_at:
        title: تاريخ سداد الإعانة الإنشائية (Fawry)
        description: يُملأ بعد سداد الإعانة + ضريبة 14٪ عبر Fawry قبل إصدار فاتورة
          التفعيل السنوية.
        type: string
        format: date-time
        x-nullable: true
      establishment_aid_fawry_ref:
        title: مرجع Fawry للإعانة الإنشائية
        type: string
        maxLength: 255
      card_printing_date:
        title: تاريخ طباعة الكارنيه
        type: string
        format: date
        x-nullable: true
      membership_end_date:
        title: تاريخ انتهاء العضوية (قديم)
        type: string
        format: date
        x-nullable: true
      legacy_oracle_username:
        title: اسم مستخدم Oracle
        type: string
        maxLength: 64
      legacy_removed_at:
        title: تاريخ الحذف في النظام القديم
        type: string
        format: date
        x-nullable: true
      imported_profile_image_path:
        title: مسار صورة Oracle (استيراد)
        type: string
        maxLength: 512
      national_id_image:
        title: صورة البطاقة (أمام)
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      national_id_image_back:
        title: صورة البطاقة (خلف)
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      qualification_document:
        title: مستند المؤهل
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      area:
        title: المنطقة / المحافظة
        type: integer
        x-nullable: true
      qualification:
        title: المؤهل الدراسي
        type: integer
        x-nullable: true
      job:
        title: الوظيفة
        type: integer
        x-nullable: true
      membership_category:
        title: فئة العضوية
        type: integer
      section:
        title: القسم
        description: يحدد رسوم إضافة التابعين وغرامات الجمعية العمومية وتأخير 4 شهور.
        type: integer
        x-nullable: true
      primary_member:
        title: العضو الأساسي
        description: يُملأ للتابعين فقط؛ يشير إلى العضو الذي تُحسب رسومه تحت حسابه.
        type: integer
        x-nullable: true
  MembershipRenewalList:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      member:
        title: العضو
        type: integer
        readOnly: true
        x-nullable: true
      membership_request:
        title: طلب العضوية (رسوم التقديم)
        type: integer
        readOnly: true
        x-nullable: true
      membership_request_id:
        title: Membership request id
        type: integer
        readOnly: true
        x-nullable: true
      applicant_display_name:
        title: Applicant display name
        type: string
        readOnly: true
      member_membership_number:
        title: Member membership number
        type: string
        readOnly: true
        minLength: 1
        x-nullable: true
      member_name:
        title: Member name
        type: string
        readOnly: true
        minLength: 1
        x-nullable: true
      membership_type:
        title: Membership type
        type: integer
        readOnly: true
      membership_type_name:
        title: Membership type name
        type: string
        readOnly: true
        minLength: 1
      period_start:
        title: بداية فترة التجديد
        type: string
        format: date
        readOnly: true
      period_end:
        title: نهاية فترة التجديد
        type: string
        format: date
        readOnly: true
      amount:
        title: المبلغ المدفوع (جنيه)
        type: string
        format: decimal
        readOnly: true
      paid_at:
        title: تاريخ استلام الدفع
        description: يُستخدم لاحتساب معدل التجديد في النافذة الزمنية.
        type: string
        format: date-time
        readOnly: true
      payment_reference:
        title: مرجع الدفع / الإيصال
        type: string
        readOnly: true
        minLength: 1
      invoice_number:
        title: رقم الفاتورة
        type: string
        readOnly: true
        minLength: 1
      invoice_date:
        title: تاريخ الفاتورة
        type: string
        format: date
        readOnly: true
        x-nullable: true
      due_amount:
        title: المبلغ المستحق
        description: اختياري؛ للتوافق مع بيانات الفوترة القديمة.
        type: string
        format: decimal
        readOnly: true
        x-nullable: true
      notes:
        title: ملاحظات
        type: string
        readOnly: true
        minLength: 1
      annual_invoice:
        title: الفاتورة السنوية المرتبطة
        description: عند تسجيل دفع عن فاتورة سنوية، اربط التجديد بهذه الفاتورة.
        type: integer
        readOnly: true
        x-nullable: true
      payment_entry_kind:
        title: نوع تسجيل السداد
        type: string
        enum:
        - manual
        - invoice_settlement
        - membership_app_fee
        - establishment_aid
        readOnly: true
      payment_channel:
        title: قناة الدفع
        description: نقدي، إلكتروني، فوري، أو Stripe.
        type: string
        enum:
        - cash
        - electronic
        - fawry
        - stripe
        readOnly: true
      recorded_by:
        title: Recorded by
        type: string
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  MembershipRenewal:
    required:
    - membership_type
    - period_start
    - period_end
    - amount
    - paid_at
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      member:
        title: العضو
        type: integer
        x-nullable: true
      membership_request:
        title: طلب العضوية (رسوم التقديم)
        type: integer
        x-nullable: true
      membership_request_id:
        title: Membership request id
        type: string
        readOnly: true
      applicant_display_name:
        title: Applicant display name
        type: string
        readOnly: true
      member_membership_number:
        title: Member membership number
        type: string
        readOnly: true
      member_name:
        title: Member name
        type: string
        readOnly: true
      membership_type:
        title: Membership type
        type: integer
      membership_type_name:
        title: Membership type name
        type: string
        readOnly: true
        minLength: 1
      period_start:
        title: بداية فترة التجديد
        type: string
        format: date
      period_end:
        title: نهاية فترة التجديد
        type: string
        format: date
      amount:
        title: المبلغ المدفوع (جنيه)
        type: string
        format: decimal
      paid_at:
        title: تاريخ استلام الدفع
        description: يُستخدم لاحتساب معدل التجديد في النافذة الزمنية.
        type: string
        format: date-time
      payment_reference:
        title: مرجع الدفع / الإيصال
        type: string
        maxLength: 255
      payment_receipt:
        title: Payment receipt
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      payment_receipt_url:
        title: Payment receipt url
        type: string
        readOnly: true
      invoice_number:
        title: رقم الفاتورة
        type: string
        maxLength: 64
      invoice_date:
        title: تاريخ الفاتورة
        type: string
        format: date
        x-nullable: true
      due_amount:
        title: المبلغ المستحق
        description: اختياري؛ للتوافق مع بيانات الفوترة القديمة.
        type: string
        format: decimal
        x-nullable: true
      notes:
        title: ملاحظات
        type: string
      annual_invoice:
        title: الفاتورة السنوية المرتبطة
        description: عند تسجيل دفع عن فاتورة سنوية، اربط التجديد بهذه الفاتورة.
        type: integer
        x-nullable: true
      payment_entry_kind:
        title: نوع تسجيل السداد
        type: string
        enum:
        - manual
        - invoice_settlement
        - membership_app_fee
        - establishment_aid
      payment_channel:
        title: قناة الدفع
        description: نقدي، إلكتروني، فوري، أو Stripe.
        type: string
        enum:
        - cash
        - electronic
        - fawry
        - stripe
      recorded_by:
        $ref: '#/definitions/UserSummary'
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  MembershipRequestNote:
    required:
    - content
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      content:
        title: الملاحظة
        type: string
        minLength: 1
      created_by:
        $ref: '#/definitions/UserSummary'
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  ListMembershipRequest:
    required:
    - place_of_birth
    - full_name
    - requested_membership_category
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      notes:
        type: array
        items:
          $ref: '#/definitions/MembershipRequestNote'
        readOnly: true
      applicant_notes:
        title: Applicant notes
        type: string
        readOnly: true
        minLength: 1
      nationality:
        title: Nationality
        type: string
        enum:
        - AF
        - AL
        - DZ
        - AD
        - AO
        - AI
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BW
        - BR
        - BN
        - BG
        - BI
        - KH
        - CM
        - CA
        - TD
        - CL
        - CN
        - CO
        - CG
        - CR
        - HR
        - CU
        - CW
        - CY
        - CZ
        - DK
        - DJ
        - DM
        - EC
        - EG
        - SV
        - ER
        - EE
        - SZ
        - ET
        - FJ
        - FI
        - FR
        - GF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GY
        - HT
        - HN
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MG
        - MW
        - MY
        - ML
        - MT
        - MQ
        - MR
        - MU
        - YT
        - MX
        - MD
        - MC
        - MN
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NZ
        - NI
        - NE
        - NG
        - NU
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - RE
        - RO
        - RU
        - RW
        - WS
        - SN
        - RS
        - SC
        - SL
        - SG
        - SK
        - SI
        - SO
        - ES
        - LK
        - SD
        - SR
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TG
        - TK
        - TO
        - TN
        - TR
        - TM
        - TV
        - UG
        - UA
        - UY
        - UZ
        - VU
        - VE
        - VN
        - YE
        - ZM
        - ZW
        - AX
        - AS
        - AQ
        - AG
        - BY
        - BA
        - BV
        - BF
        - CV
        - KY
        - CX
        - CC
        - KM
        - CK
        - CI
        - DO
        - GQ
        - FO
        - PF
        - GI
        - GW
        - VA
        - IM
        - KP
        - KR
        - MV
        - MH
        - ME
        - NC
        - NF
        - MK
        - BL
        - SH
        - LC
        - SM
        - SB
        - SS
        - TL
        - TT
        - GB
        - EH
        - BQ
        - IO
        - CF
        - CD
        - TF
        - HM
        - HK
        - MP
        - PG
        - KN
        - PM
        - VC
        - ST
        - SJ
        - TC
        - AE
        - US
        - WF
        - GS
        - UM
        - MF
        - SX
        - VI
        - FK
        - ZA
        - VG
        - FM
        - SA
        readOnly: true
      application_fee_invoice_id:
        title: Application fee invoice id
        type: string
        readOnly: true
      requested_membership_type_name:
        title: Requested membership type name
        type: string
        readOnly: true
        minLength: 1
      requested_membership_type_id:
        title: Requested membership type id
        type: string
        readOnly: true
        minLength: 1
      national_id_image:
        title: National id image
        description: 'صورة الهوية (أمام). PDF أو صورة: pdf, jpg, jpeg, png. في الرد:
          رابط مطلق.'
        type: string
        readOnly: true
        format: uri
      national_id_image_back:
        title: National id image back
        description: 'صورة الهوية (خلف). PDF أو صورة: pdf, jpg, jpeg, png. في الرد:
          رابط مطلق.'
        type: string
        readOnly: true
        format: uri
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
      phone_number:
        title: رقم الهاتف
        type: string
        maxLength: 128
        x-nullable: true
      profile_image:
        title: الصورة الشخصية
        type: string
        readOnly: true
        format: uri
      birth_date:
        title: تاريخ الميلاد
        type: string
        format: date
        x-nullable: true
      gender_id:
        title: الجنس
        type: integer
        enum:
        - 1
        - 2
        x-nullable: true
      title:
        title: اللقب
        type: string
        maxLength: 255
      main_address:
        title: العنوان الأساسي
        type: string
      place_of_birth:
        title: محل الميلاد
        type: string
        maxLength: 255
        minLength: 1
      religion_id:
        title: الديانة
        type: integer
        enum:
        - 1
        - 2
        x-nullable: true
      marital_status:
        title: الحالة الاجتماعية
        type: string
        enum:
        - single
        - married
        - divorced
        - widowed
        x-nullable: true
      national_id_number:
        title: رقم البطاقة / الرقم القومي
        type: string
        maxLength: 64
      id_document_type:
        title: نوع مستند الهوية
        type: string
        enum:
        - national_id
        - passport
        - other
        x-nullable: true
      passport_number:
        title: رقم جواز السفر
        type: string
        maxLength: 64
      military_service_start_date:
        title: بداية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      military_service_end_date:
        title: نهاية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      work_address:
        title: عنوان العمل
        type: string
      request_id:
        title: معرف الطلب
        description: يُنشأ على الخادم تلقائياً؛ لا يُقبل من العميل في الطلبات.
        type: string
        format: uuid
        readOnly: true
      full_name:
        title: الاسم الكامل
        type: string
        maxLength: 255
        minLength: 1
      membership_type:
        title: نوع العضوية
        description: عضو الفرع الرئيسي أو عضو فرع.
        type: string
        enum:
        - main_branch_member
        - branch_member
      status:
        title: حالة الطلب
        type: string
        enum:
        - pending
        - awaiting_application_fee
        - approved
        - rejected
        - under_review
        - ready_for_interview
        - needs_clarification
        readOnly: true
      qualification_document:
        title: مستند المؤهل
        type: string
        readOnly: true
        format: uri
      review_date:
        title: تاريخ المراجعة
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      review_notes:
        title: ملاحظات المراجعة
        type: string
        readOnly: true
        minLength: 1
      rejection_reason:
        title: سبب الرفض
        type: string
        readOnly: true
        minLength: 1
      interview_at:
        title: موعد المقابلة
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      interview_notes:
        title: ملاحظات المقابلة
        type: string
        readOnly: true
        minLength: 1
      submitted_from_app:
        title: مرسل من التطبيق
        type: boolean
        readOnly: true
      clarification_requested_at:
        title: تاريخ طلب التوضيح
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      clarification_items:
        title: بنود التوضيح المطلوبة
        description: 'مصفوفة من {"field": "اسم_الحقل", "note": "ملاحظة الموظف"}'
        type: object
        readOnly: true
      application_fee_amount:
        title: مبلغ رسوم تقديم الطلب المسدّد
        type: string
        format: decimal
        x-nullable: true
      application_fee_paid_at:
        title: تاريخ سداد رسوم تقديم الطلب
        type: string
        format: date-time
        x-nullable: true
      application_fee_fawry_ref:
        title: مرجع Fawry لرسوم الطلب
        type: string
        maxLength: 255
      establishment_fee_pre_vat:
        title: إعانة إنشائية قبل الضريبة (لقطة)
        description: Snapshot when the applicant pays establishment aid + VAT via
          Fawry on this request.
        type: string
        format: decimal
        x-nullable: true
      establishment_fee_vat:
        title: ضريبة الإعانة الإنشائية (لقطة)
        description: 14% VAT snapshot for the establishment-aid checkout on this request.
        type: string
        format: decimal
        x-nullable: true
      establishment_fee_total:
        title: إجمالي سداد الإعانة الإنشائية (لقطة)
        description: Pre-VAT + VAT total charged on Fawry for establishment aid at
          application time.
        type: string
        format: decimal
        x-nullable: true
      area:
        title: المنطقة / المحافظة
        type: integer
        x-nullable: true
      qualification:
        title: المؤهل الدراسي
        type: integer
        x-nullable: true
      job:
        title: الوظيفة
        type: integer
        x-nullable: true
      requested_membership_category:
        title: فئة العضوية المطلوبة
        type: integer
      reviewed_by:
        title: تمت المراجعة بواسطة
        type: integer
        readOnly: true
        x-nullable: true
      submitted_by:
        title: مقدّم الطلب (حساب التطبيق)
        type: integer
        readOnly: true
        x-nullable: true
      clarification_requested_by:
        title: طلب التوضيح بواسطة
        type: integer
        readOnly: true
        x-nullable: true
  MembershipRequestContactWrite:
    required:
    - contact_type
    - value
    type: object
    properties:
      contact_type:
        title: نوع التواصل
        type: string
        enum:
        - whatsapp
        - home
        - personal
        - work
      value:
        title: الرقم
        type: string
        maxLength: 255
        minLength: 1
      is_primary:
        title: أساسي
        type: boolean
  MembershipRequest:
    required:
    - nationality
    - place_of_birth
    - full_name
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      contacts:
        type: array
        items:
          $ref: '#/definitions/MembershipRequestContactWrite'
      notes:
        type: array
        items:
          $ref: '#/definitions/MembershipRequestNote'
        readOnly: true
      applicant_notes:
        title: Applicant notes
        type: string
      nationality:
        title: Nationality
        type: string
        enum:
        - AF
        - AL
        - DZ
        - AD
        - AO
        - AI
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BW
        - BR
        - BN
        - BG
        - BI
        - KH
        - CM
        - CA
        - TD
        - CL
        - CN
        - CO
        - CG
        - CR
        - HR
        - CU
        - CW
        - CY
        - CZ
        - DK
        - DJ
        - DM
        - EC
        - EG
        - SV
        - ER
        - EE
        - SZ
        - ET
        - FJ
        - FI
        - FR
        - GF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GY
        - HT
        - HN
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MG
        - MW
        - MY
        - ML
        - MT
        - MQ
        - MR
        - MU
        - YT
        - MX
        - MD
        - MC
        - MN
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NZ
        - NI
        - NE
        - NG
        - NU
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - RE
        - RO
        - RU
        - RW
        - WS
        - SN
        - RS
        - SC
        - SL
        - SG
        - SK
        - SI
        - SO
        - ES
        - LK
        - SD
        - SR
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TG
        - TK
        - TO
        - TN
        - TR
        - TM
        - TV
        - UG
        - UA
        - UY
        - UZ
        - VU
        - VE
        - VN
        - YE
        - ZM
        - ZW
        - AX
        - AS
        - AQ
        - AG
        - BY
        - BA
        - BV
        - BF
        - CV
        - KY
        - CX
        - CC
        - KM
        - CK
        - CI
        - DO
        - GQ
        - FO
        - PF
        - GI
        - GW
        - VA
        - IM
        - KP
        - KR
        - MV
        - MH
        - ME
        - NC
        - NF
        - MK
        - BL
        - SH
        - LC
        - SM
        - SB
        - SS
        - TL
        - TT
        - GB
        - EH
        - BQ
        - IO
        - CF
        - CD
        - TF
        - HM
        - HK
        - MP
        - PG
        - KN
        - PM
        - VC
        - ST
        - SJ
        - TC
        - AE
        - US
        - WF
        - GS
        - UM
        - MF
        - SX
        - VI
        - FK
        - ZA
        - VG
        - FM
        - SA
      application_fee_invoice_id:
        title: Application fee invoice id
        type: string
        readOnly: true
      requested_membership_type_name:
        title: Requested membership type name
        type: string
        readOnly: true
        minLength: 1
      requested_membership_type:
        title: Requested membership type
        type: integer
      national_id_image:
        title: National id image
        description: 'صورة الهوية (أمام). مطلوبة عند الإنشاء عبر multipart. الأنواع:
          pdf, jpg, jpeg, png. في الرد: رابط مطلق (string).'
        type: string
        readOnly: true
        format: uri
      national_id_image_back:
        title: National id image back
        description: 'صورة الهوية (خلف). مطلوبة عند الإنشاء عبر multipart. الأنواع:
          pdf, jpg, jpeg, png. في الرد: رابط مطلق (string).'
        type: string
        readOnly: true
        format: uri
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
      phone_number:
        title: رقم الهاتف
        type: string
        maxLength: 128
        x-nullable: true
      profile_image:
        title: الصورة الشخصية
        type: string
        readOnly: true
        format: uri
      birth_date:
        title: تاريخ الميلاد
        type: string
        format: date
        x-nullable: true
      gender_id:
        title: الجنس
        type: integer
        enum:
        - 1
        - 2
        x-nullable: true
      title:
        title: اللقب
        type: string
        maxLength: 255
      main_address:
        title: العنوان الأساسي
        type: string
      place_of_birth:
        title: محل الميلاد
        type: string
        maxLength: 255
        minLength: 1
      religion_id:
        title: الديانة
        type: integer
        enum:
        - 1
        - 2
        x-nullable: true
      marital_status:
        title: الحالة الاجتماعية
        type: string
        enum:
        - single
        - married
        - divorced
        - widowed
        x-nullable: true
      national_id_number:
        title: رقم البطاقة / الرقم القومي
        type: string
        maxLength: 64
      id_document_type:
        title: نوع مستند الهوية
        type: string
        enum:
        - national_id
        - passport
        - other
        x-nullable: true
      passport_number:
        title: رقم جواز السفر
        type: string
        maxLength: 64
      military_service_start_date:
        title: بداية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      military_service_end_date:
        title: نهاية الخدمة العسكرية
        type: string
        format: date
        x-nullable: true
      work_address:
        title: عنوان العمل
        type: string
      request_id:
        title: معرف الطلب
        description: يُنشأ على الخادم تلقائياً؛ لا يُقبل من العميل في الطلبات.
        type: string
        format: uuid
        readOnly: true
      full_name:
        title: الاسم الكامل
        type: string
        maxLength: 255
        minLength: 1
      membership_type:
        title: نوع العضوية
        description: عضو الفرع الرئيسي أو عضو فرع.
        type: string
        enum:
        - main_branch_member
        - branch_member
      status:
        title: حالة الطلب
        type: string
        enum:
        - pending
        - awaiting_application_fee
        - approved
        - rejected
        - under_review
        - ready_for_interview
        - needs_clarification
        readOnly: true
      qualification_document:
        title: مستند المؤهل
        type: string
        readOnly: true
        format: uri
      review_date:
        title: تاريخ المراجعة
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      review_notes:
        title: ملاحظات المراجعة
        type: string
        readOnly: true
        minLength: 1
      rejection_reason:
        title: سبب الرفض
        type: string
        readOnly: true
        minLength: 1
      interview_at:
        title: موعد المقابلة
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      interview_notes:
        title: ملاحظات المقابلة
        type: string
        readOnly: true
        minLength: 1
      submitted_from_app:
        title: مرسل من التطبيق
        type: boolean
        readOnly: true
      clarification_requested_at:
        title: تاريخ طلب التوضيح
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      clarification_items:
        title: بنود التوضيح المطلوبة
        description: 'مصفوفة من {"field": "اسم_الحقل", "note": "ملاحظة الموظف"}'
        type: object
        readOnly: true
      application_fee_amount:
        title: مبلغ رسوم تقديم الطلب المسدّد
        type: string
        format: decimal
        x-nullable: true
      application_fee_paid_at:
        title: تاريخ سداد رسوم تقديم الطلب
        type: string
        format: date-time
        x-nullable: true
      application_fee_fawry_ref:
        title: مرجع Fawry لرسوم الطلب
        type: string
        maxLength: 255
      establishment_fee_pre_vat:
        title: إعانة إنشائية قبل الضريبة (لقطة)
        description: Snapshot when the applicant pays establishment aid + VAT via
          Fawry on this request.
        type: string
        format: decimal
        x-nullable: true
      establishment_fee_vat:
        title: ضريبة الإعانة الإنشائية (لقطة)
        description: 14% VAT snapshot for the establishment-aid checkout on this request.
        type: string
        format: decimal
        x-nullable: true
      establishment_fee_total:
        title: إجمالي سداد الإعانة الإنشائية (لقطة)
        description: Pre-VAT + VAT total charged on Fawry for establishment aid at
          application time.
        type: string
        format: decimal
        x-nullable: true
      area:
        title: المنطقة / المحافظة
        type: integer
        x-nullable: true
      qualification:
        title: المؤهل الدراسي
        type: integer
        x-nullable: true
      job:
        title: الوظيفة
        type: integer
        x-nullable: true
      requested_membership_category:
        title: فئة العضوية المطلوبة
        type: integer
        readOnly: true
      reviewed_by:
        title: تمت المراجعة بواسطة
        type: integer
        readOnly: true
        x-nullable: true
      submitted_by:
        title: مقدّم الطلب (حساب التطبيق)
        type: integer
        readOnly: true
        x-nullable: true
      clarification_requested_by:
        title: طلب التوضيح بواسطة
        type: integer
        readOnly: true
        x-nullable: true
  MembershipCategory:
    required:
    - name
    - description
    - subscription_price
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      member_count:
        title: Member count
        type: integer
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
      name:
        title: الاسم
        type: string
        maxLength: 255
        minLength: 1
      reference_code:
        title: الكود المرجعي
        description: يُولَّد تلقائياً عند الحفظ إذا كان فارغاً.
        type: string
        readOnly: true
        minLength: 1
      description:
        title: الوصف
        type: string
        minLength: 1
      subscription_price:
        title: سعر الإشتراك (جنيه)
        type: string
        format: decimal
      discount_mode:
        title: نوع الخصم
        description: خصم ثابت بالجنيه أو نسبة مئوية من أساس الاشتراك — لا يُجمع الاثنان.
        type: string
        enum:
        - fixed
        - percent
      discount_amount:
        title: الخصم (جنيه)
        description: يُستخدم عند اختيار «مبلغ ثابت»؛ يُجب أن يكون صفراً عند اختيار
          النسبة المئوية.
        type: string
        format: decimal
      is_archived:
        title: مؤرشف
        description: إذا مفعّل لا يُعرض في قوائم الاختيار للجمهور ويُستخدم للأرشفة
          فقط.
        type: boolean
      discount_percent:
        title: نسبة الخصم (%)
        description: يُستخدم عند اختيار «نسبة مئوية»؛ يُترك فارغاً عند الخصم الثابت.
        type: string
        format: decimal
        x-nullable: true
      is_visible_in_select:
        title: معروض في قوائم الاختيار
        type: boolean
  MembershipCategoryDetail:
    required:
    - name
    - description
    - subscription_price
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      member_count:
        title: Member count
        type: integer
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
      name:
        title: الاسم
        type: string
        maxLength: 255
        minLength: 1
      reference_code:
        title: الكود المرجعي
        description: يُولَّد تلقائياً عند الحفظ إذا كان فارغاً.
        type: string
        readOnly: true
        minLength: 1
      description:
        title: الوصف
        type: string
        minLength: 1
      subscription_price:
        title: سعر الإشتراك (جنيه)
        type: string
        format: decimal
      discount_mode:
        title: نوع الخصم
        description: خصم ثابت بالجنيه أو نسبة مئوية من أساس الاشتراك — لا يُجمع الاثنان.
        type: string
        enum:
        - fixed
        - percent
      discount_amount:
        title: الخصم (جنيه)
        description: يُستخدم عند اختيار «مبلغ ثابت»؛ يُجب أن يكون صفراً عند اختيار
          النسبة المئوية.
        type: string
        format: decimal
      is_archived:
        title: مؤرشف
        description: إذا مفعّل لا يُعرض في قوائم الاختيار للجمهور ويُستخدم للأرشفة
          فقط.
        type: boolean
      discount_percent:
        title: نسبة الخصم (%)
        description: يُستخدم عند اختيار «نسبة مئوية»؛ يُترك فارغاً عند الخصم الثابت.
        type: string
        format: decimal
        x-nullable: true
      is_visible_in_select:
        title: معروض في قوائم الاختيار
        type: boolean
  MembershipCategoryBillingTermsByInvoiceYear:
    required:
    - invoice_year
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      membership_type:
        title: Membership type
        type: integer
        readOnly: true
      invoice_year:
        title: سنة الفاتورة
        description: سنة الفاتورة التي تُطبَّق فيها هذه القيم.
        type: integer
        maximum: 4294967295
        minimum: 0
      subscription_price:
        title: سعر الإشتراك (جنيه)
        type: string
        format: decimal
        x-nullable: true
      discount_mode:
        title: نوع الخصم
        description: عند الفراغ تُستخدم طريقة الخصم المعرفة على فئة العضوية.
        type: string
        enum:
        - fixed
        - percent
        x-nullable: true
      discount_percent:
        title: نسبة الخصم (%)
        type: string
        format: decimal
        x-nullable: true
      discount_amount:
        title: الخصم الثابت (جنيه)
        type: string
        format: decimal
        x-nullable: true
  MyGeneralAssembly:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      meeting_id:
        title: Meeting id
        type: integer
        readOnly: true
      title:
        title: Title
        type: string
        readOnly: true
        minLength: 1
      held_on:
        title: Held on
        type: string
        format: date
        readOnly: true
      invoice_year:
        title: Invoice year
        type: integer
        readOnly: true
      notes:
        title: Notes
        type: string
        readOnly: true
        minLength: 1
      attendance_finalized:
        title: Attendance finalized
        type: boolean
        readOnly: true
      present:
        title: حاضر
        type: boolean
        readOnly: true
      eligible_at_snapshot:
        title: مؤهل وقت التسجيل
        description: لقطة هل كان للعضو حق الحضور وفق قواعد السداد وقت آخر حفظ.
        type: boolean
        readOnly: true
        x-nullable: true
      eligible:
        title: Eligible
        type: boolean
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  Qualification:
    required:
    - name
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      name:
        title: المؤهل
        type: string
        maxLength: 255
        minLength: 1
  Reel:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
      video:
        title: الفيديو
        type: string
        readOnly: true
        format: uri
      thumbnail:
        title: الصورة المصغرة
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      created_by:
        title: المستخدم
        type: integer
        readOnly: true
      created_by_name:
        title: Created by name
        type: string
        readOnly: true
        minLength: 1
      likes_count:
        title: Likes count
        type: integer
        readOnly: true
      comments_count:
        title: Comments count
        type: integer
        readOnly: true
      user_has_liked:
        title: User has liked
        type: string
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  SectionList:
    required:
    - section_code
    type: object
    properties:
      section_code:
        title: كود القسم
        type: integer
        maximum: 2147483647
        minimum: -2147483648
      section_name:
        title: اسم القسم
        type: string
        maxLength: 50
        x-nullable: true
  Section:
    required:
    - section_code
    type: object
    properties:
      section_code:
        title: كود القسم
        type: integer
        maximum: 2147483647
        minimum: -2147483648
      section_name:
        title: اسم القسم
        type: string
        maxLength: 50
        x-nullable: true
  SectionDetail:
    required:
    - section_code
    type: object
    properties:
      section_code:
        title: كود القسم
        type: integer
        maximum: 2147483647
        minimum: -2147483648
      section_name:
        title: اسم القسم
        type: string
        maxLength: 50
        x-nullable: true
  MembershipPricing:
    required:
    - invoice_year
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      section_code:
        title: Section code
        type: integer
        readOnly: true
      invoice_year:
        title: سنة الفاتورة
        description: سنة الفاتورة (يوليو Y → يونيو Y+1).
        type: integer
        maximum: 4294967295
        minimum: 0
      anual:
        title: الرسوم السنوية
        type: string
        format: decimal
        x-nullable: true
      emprove:
        title: رسوم التحسين
        type: string
        format: decimal
        x-nullable: true
      id_fee:
        title: رسوم الكارنيه
        type: string
        format: decimal
        x-nullable: true
      init:
        title: رسوم أولية
        type: string
        format: decimal
        x-nullable: true
      office:
        title: رسوم المكتب
        type: string
        format: decimal
        x-nullable: true
      penalty:
        title: الغرامات
        type: string
        format: decimal
        x-nullable: true
      player:
        title: رسوم اللاعب
        type: string
        format: decimal
        x-nullable: true
      pool:
        title: رسوم حمام السباحة
        type: string
        format: decimal
        x-nullable: true
      post:
        title: رسوم البريد
        type: string
        format: decimal
        x-nullable: true
      reg:
        title: رسوم التسجيل
        type: string
        format: decimal
        x-nullable: true
      river:
        title: رسوم النهر
        type: string
        format: decimal
        x-nullable: true
      stamp:
        title: رسوم الدمغة
        type: string
        format: decimal
        x-nullable: true
      worker:
        title: رسوم العامل
        type: string
        format: decimal
        x-nullable: true
      donation:
        title: التبرعات
        type: string
        format: decimal
        x-nullable: true
      mentinance:
        title: رسوم الصيانة
        type: string
        format: decimal
        x-nullable: true
      socity:
        title: رسوم الجمعية
        type: string
        format: decimal
        x-nullable: true
      com_penalty:
        title: غرامة إضافية
        type: string
        format: decimal
        x-nullable: true
      reserv_fee:
        title: رسوم الحجز
        type: string
        format: decimal
        x-nullable: true
      reserv_old_fee:
        title: رسوم الحجز القديمة
        type: string
        format: decimal
        x-nullable: true
      lost_card:
        title: رسوم بدل فاقد
        type: string
        format: decimal
        x-nullable: true
      fee_add_dependent_under_16:
        title: اشتراك تابع تحت 16 سنة (جنيه)
        type: string
        format: decimal
      fee_add_dependent_over_16:
        title: اشتراك تابع فوق 16 سنة (جنيه)
        type: string
        format: decimal
      fee_add_parent:
        title: اشتراك والد أو والدة (جنيه)
        type: string
        format: decimal
      fee_add_sister:
        title: اشتراك شقيقة أو أبناء شقيقة (جنيه)
        type: string
        format: decimal
      general_assembly_absence_fine:
        title: غرامة عدم حضور الجمعية العمومية (جنيه)
        type: string
        format: decimal
        x-nullable: true
      late_penalty_fixed_amount_after_4_months:
        title: غرامة تأخير 4 شهور (مبلغ ثابت، جنيه)
        description: تُطبَّق عندما يتجاوز التأخير 4 أشهر بعد استحقاق التجديد.
        type: string
        format: decimal
      discount_mode:
        title: نوع خصم الاشتراك
        description: خصم ثابت بالجنيه أو نسبة مئوية من أساس الاشتراك — لا يُجمع الاثنان.
        type: string
        enum:
        - fixed
        - percent
      discount_percent:
        title: نسبة خصم الاشتراك (%)
        description: يُستخدم عند اختيار «نسبة مئوية»؛ يُترك فارغاً عند الخصم الثابت.
        type: string
        format: decimal
        x-nullable: true
      discount_amount:
        title: خصم الاشتراك (جنيه)
        description: يُستخدم عند اختيار «مبلغ ثابت»؛ يُجب أن يكون صفراً عند اختيار
          النسبة المئوية.
        type: string
        format: decimal
  ConsumerUserList:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      name:
        title: الاسم
        type: string
        readOnly: true
        minLength: 1
      phone_number:
        title: Phone number
        type: string
        readOnly: true
      profile_image:
        title: Profile image
        type: string
        readOnly: true
      is_active:
        title: نشط
        type: boolean
        readOnly: true
      created_at:
        title: تاريخ الانضمام
        type: string
        format: date-time
        readOnly: true
      last_login:
        title: آخر دخول
        type: string
        format: date-time
        readOnly: true
        x-nullable: true
      identity:
        title: Identity
        type: object
        readOnly: true
      membership_request:
        title: Membership request
        type: string
        readOnly: true
  EmployeeCreate:
    required:
    - email
    - name
    - password
    - phone_number
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      user:
        title: User
        type: string
        readOnly: true
      email:
        title: Email
        type: string
        format: email
        minLength: 1
      name:
        title: Name
        type: string
        minLength: 1
      password:
        title: Password
        type: string
        minLength: 1
      is_active:
        title: Is active
        type: boolean
        default: true
      phone_number:
        title: Phone number
        type: string
        minLength: 1
      profile_image:
        title: Profile image
        type: string
        readOnly: true
        x-nullable: true
        format: uri
      gender:
        title: Gender
        type: string
        enum:
        - m
        - f
        - u
        default: u
      address:
        title: Address
        type: string
      birth_date:
        title: Birth date
        type: string
        format: date
        x-nullable: true
      user_permissions_id:
        type: array
        items:
          type: integer
      groups_id:
        type: array
        items:
          type: integer
      assigned_permissions:
        title: Assigned permissions
        type: string
        readOnly: true
      assigned_groups:
        title: Assigned groups
        type: string
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  GroupManage:
    required:
    - name
    - permission_ids
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      name:
        title: الاسم
        type: string
        maxLength: 150
        minLength: 1
      permission_ids:
        type: array
        items:
          type: integer
      permissions_count:
        title: Permissions count
        type: string
        readOnly: true
      employees_count:
        title: Employees count
        type: string
        readOnly: true
  Employee:
    required:
    - user
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      user:
        title: المستخدم
        type: integer
      phone_number:
        title: Phone number
        type: string
        readOnly: true
      profile_image:
        title: Profile image
        type: string
        readOnly: true
      gender:
        title: Gender
        type: string
        readOnly: true
      birth_date:
        title: Birth date
        type: string
        readOnly: true
  RetriveGroup:
    required:
    - name
    - permission_ids
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      name:
        title: الاسم
        type: string
        maxLength: 150
        minLength: 1
      permission_ids:
        type: array
        items:
          type: integer
      permissions:
        title: Permissions
        type: string
        readOnly: true
      employees:
        type: array
        items:
          $ref: '#/definitions/Employee'
        readOnly: true
  MemberUserList:
    required:
    - id
    - name
    - email
    - is_active
    - member_id
    - membership_number
    - member_role
    - created_at
    type: object
    properties:
      id:
        title: Id
        type: integer
      name:
        title: Name
        type: string
        minLength: 1
      phone_number:
        title: Phone number
        type: string
        readOnly: true
      email:
        title: Email
        type: string
        format: email
        minLength: 1
        x-nullable: true
      is_active:
        title: Is active
        type: boolean
      member_id:
        title: Member id
        type: integer
      membership_number:
        title: Membership number
        type: string
        minLength: 1
      member_role:
        title: Member role
        type: string
        minLength: 1
      relationship_type:
        title: Relationship type
        type: string
        readOnly: true
        x-nullable: true
      created_at:
        title: Created at
        type: string
        format: date-time
  TicketList:
    required:
    - title
    - description
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      description:
        title: الوصف
        type: string
        minLength: 1
      email:
        title: البريد الإلكتروني
        type: string
        format: email
        maxLength: 254
      phone_number:
        title: رقم الهاتف
        type: string
        maxLength: 128
        x-nullable: true
      created_by:
        title: أنشأه
        type: integer
        x-nullable: true
      created_by_email:
        title: Created by email
        type: string
        format: email
        readOnly: true
        minLength: 1
      ticket_type:
        title: نوع التذكرة
        type: string
        enum:
        - support
        - complaint
      requester_type:
        title: نوع مقدم الطلب
        type: string
        enum:
        - member
        - guest
      status:
        title: الحالة
        type: string
        enum:
        - open
        - in_progress
        - resolved
        - rejected
      comments_count:
        title: Comments count
        type: integer
        readOnly: true
      attachments_count:
        title: Attachments count
        type: integer
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  TicketGuestCreate:
    required:
    - title
    - description
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      description:
        title: الوصف
        type: string
        minLength: 1
      email:
        title: البريد الإلكتروني
        type: string
        format: email
        maxLength: 254
      phone_number:
        title: رقم الهاتف
        type: string
        maxLength: 128
        x-nullable: true
      ticket_type:
        title: نوع التذكرة
        type: string
        enum:
        - support
        - complaint
      requester_type:
        title: نوع مقدم الطلب
        type: string
        enum:
        - member
        - guest
        readOnly: true
      status:
        title: الحالة
        type: string
        enum:
        - open
        - in_progress
        - resolved
        - rejected
        readOnly: true
      created_by:
        title: أنشأه
        type: integer
        readOnly: true
        x-nullable: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
  TicketComment:
    required:
    - comment
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      ticket:
        title: التذكرة
        type: integer
        readOnly: true
      author:
        title: الكاتب
        type: integer
        readOnly: true
      author_email:
        title: Author email
        type: string
        format: email
        readOnly: true
        minLength: 1
      author_name:
        title: Author name
        type: string
        readOnly: true
      comment:
        title: التعليق
        type: string
        minLength: 1
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
  TicketAttachment:
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      ticket:
        title: التذكرة
        type: integer
        readOnly: true
      file:
        title: الملف
        type: string
        readOnly: true
        format: uri
      uploaded_by:
        title: رفعه
        type: integer
        readOnly: true
        x-nullable: true
      uploaded_by_email:
        title: Uploaded by email
        type: string
        format: email
        readOnly: true
        minLength: 1
        x-nullable: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
  TicketDetail:
    required:
    - title
    - description
    type: object
    properties:
      id:
        title: ID
        type: integer
        readOnly: true
      title:
        title: العنوان
        type: string
        maxLength: 255
        minLength: 1
      description:
        title: الوصف
        type: string
        minLength: 1
      email:
        title: البريد الإلكتروني
        type: string
        format: email
        maxLength: 254
      phone_number:
        title: رقم الهاتف
        type: string
        maxLength: 128
        x-nullable: true
      created_by:
        title: أنشأه
        type: integer
        x-nullable: true
      created_by_email:
        title: Created by email
        type: string
        format: email
        readOnly: true
        minLength: 1
      ticket_type:
        title: نوع التذكرة
        type: string
        enum:
        - support
        - complaint
      requester_type:
        title: نوع مقدم الطلب
        type: string
        enum:
        - member
        - guest
      status:
        title: الحالة
        type: string
        enum:
        - open
        - in_progress
        - resolved
        - rejected
      comments:
        type: array
        items:
          $ref: '#/definitions/TicketComment'
        readOnly: true
      attachments:
        type: array
        items:
          $ref: '#/definitions/TicketAttachment'
        readOnly: true
      created_at:
        title: تاريخ الإنشاء
        type: string
        format: date-time
        readOnly: true
      updated_at:
        title: تاريخ التحديث
        type: string
        format: date-time
        readOnly: true
