openapi: 3.0.3
info:
  title: TenantPilot Admin — Tenant Diagnostics (Conceptual)
  version: 0.1.0
  description: |
    Conceptual HTTP contract for tenant-scoped diagnostics and repairs.

    NOTE: These routes are implemented as Filament (Livewire) pages/actions.
    The exact Livewire request payload is not part of this contract; this captures
    the user-visible HTTP surfaces and the logical operations.
servers:
  - url: /admin
paths:
  /t/{tenant}/diagnostics:
    get:
      summary: View tenant diagnostics page
      description: |
        Tenant-scoped diagnostics view. Must be tenant-member-safe:
        - Non-member: 404
        - Member: 200 (even if tenant is archived)
      parameters:
        - name: tenant
          in: path
          required: true
          schema:
            type: string
          description: Filament tenancy slug (Tenant.external_id)
      responses:
        '200':
          description: Diagnostics page rendered
          content:
            text/html:
              schema:
                type: string
        '404':
          description: Not found (deny-as-not-found for non-members)
        '403':
          description: Forbidden (member without capability attempting an action)
  /t/{tenant}/diagnostics/repairs/bootstrap-owner:
    post:
      summary: Repair missing owner by promoting a member
      description: |
        Promotes the selected tenant member to owner.
        Must require confirmation in the UI and enforce authorization server-side.
      parameters:
        - name: tenant
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [user_id]
              properties:
                user_id:
                  type: integer
                  description: Internal users.id
      responses:
        '204':
          description: Repair succeeded
        '403':
          description: Forbidden (member lacks capability)
        '404':
          description: Not found (non-member)
