> ## Documentation Index
> Fetch the complete documentation index at: https://dev.nimbo-x.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List authorized patient consultations

> Returns consultation-history membership independently of booking eligibility. Each summary keeps its historical physician and exposes doctor_active so consumers can omit inactive physicians from "Mis médicos" without deleting clinical history. url_portal is non-null only when that physician is active, has a username and present schedule configuration, and has use_portal exactly true (missing defaults to true).



## OpenAPI

````yaml /openapi/nimbo_patient_portal.yml get /api/v1/patient_portal/people/{person_id}/consultations
openapi: 3.1.0
info:
  title: Nimbo patient portal
  version: 1.0.0
  description: >-
    Nimbo API reference. Use the API host and integration access provided by
    Nimbo.
servers:
  - url: https://api.example.test
security: []
tags:
  - name: Patient Portal
  - name: Patient portal authentication
paths:
  /api/v1/patient_portal/people/{person_id}/consultations:
    get:
      tags:
        - Patient Portal
      summary: List authorized patient consultations
      description: >-
        Returns consultation-history membership independently of booking
        eligibility. Each summary keeps its historical physician and exposes
        doctor_active so consumers can omit inactive physicians from "Mis
        médicos" without deleting clinical history. url_portal is non-null only
        when that physician is active, has a username and present schedule
        configuration, and has use_portal exactly true (missing defaults to
        true).
      operationId: listPatientPortalPersonConsultations
      parameters:
        - name: person_id
          in: path
          required: true
          schema:
            type: integer
          example: 123
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            default: 1
          example: 1
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            default: 10
          example: 10
      responses:
        '200':
          description: >-
            Paginated non-deleted consultations ordered by starts_at descending.
            Private causes are masked. Inactive physicians remain in
            consultation history with doctor_active false and url_portal null;
            consumers omit them only from physician-card membership.
          content:
            application/json:
              schema:
                type: object
                required:
                  - consultations
                  - meta
                additionalProperties: false
                properties:
                  consultations:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - cause
                        - starts_at
                        - doctor_name
                        - doctor_speciality_es
                        - doctor_speciality_en
                        - organization_name
                        - doctor_speciality
                        - doctor_active
                        - url_portal
                      additionalProperties: false
                      properties:
                        id:
                          type: integer
                        cause:
                          type:
                            - string
                            - 'null'
                        starts_at:
                          type:
                            - string
                            - 'null'
                          format: date-time
                        doctor_name:
                          type:
                            - string
                            - 'null'
                        doctor_speciality_es:
                          type:
                            - string
                            - 'null'
                        doctor_speciality_en:
                          type:
                            - string
                            - 'null'
                        organization_name:
                          type:
                            - string
                            - 'null'
                        doctor_speciality:
                          type:
                            - string
                            - 'null'
                        doctor_active:
                          type: boolean
                          description: >-
                            Whether the historical physician account is active.
                            Consumers use this field to exclude inactive
                            physicians from "Mis médicos" while retaining the
                            consultation in clinical history.
                        url_portal:
                          type:
                            - string
                            - 'null'
                          description: >-
                            Personal booking URL when the historical physician
                            is active, has a username and present schedule
                            configuration, and has use_portal exactly true
                            (missing defaults to true); otherwise null. Null
                            does not remove the physician's consultation summary
                            from history.
                  meta:
                    type: object
                    required:
                      - total_pages
                    additionalProperties: false
                    properties:
                      total_pages:
                        type: integer
        '401':
          description: Missing, expired, invalid, or unauthorized patient portal token.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                additionalProperties: false
                properties:
                  error:
                    type: string
              examples:
                unauthorized:
                  value:
                    error: Unauthorized
        '404':
          description: >-
            The requested resource was not found or is outside the authorized
            patient scope.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                additionalProperties: false
                properties:
                  error:
                    type: string
              examples:
                not_found:
                  value:
                    error: Not found
      security:
        - PatientPortalToken: []
components:
  securitySchemes:
    PatientPortalToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >
        Patient portal JWT accepted either as a raw Authorization header value
        or as a Bearer token for client compatibility.

````