> ## Documentation Index
> Fetch the complete documentation index at: https://docs.myabode.ca/llms.txt
> Use this file to discover all available pages before exploring further.

# List tasks

> Every filter ANDs with the others. `assignee_role` reads a role queue and never matches a person or Abby; `accountable_role` matches who answers for the work, whoever holds it. `sort=priority` is the inbox queue order: `priority` ascending, then newest first. `expand=deal` needs `deals:read`. Requires `tasks:read`.



## OpenAPI

````yaml https://api.myabode.ca/v1/openapi.json get /v1/tasks
openapi: 3.1.1
info:
  title: myAbode Public API
  version: 1.0.0
  description: >-
    The `/v1` surface. Authenticate with `Authorization: Bearer mya_…`. A member
    key reads what its member reads; a service key reads its brokerage. Every
    failure is an RFC 9457 Problem Details body served as
    `application/problem+json`; branch on its `code`.
servers:
  - url: https://api.myabode.ca
security:
  - apiKey: []
paths:
  /v1/tasks:
    get:
      summary: List tasks
      description: >-
        Every filter ANDs with the others. `assignee_role` reads a role queue
        and never matches a person or Abby; `accountable_role` matches who
        answers for the work, whoever holds it. `sort=priority` is the inbox
        queue order: `priority` ascending, then newest first. `expand=deal`
        needs `deals:read`. Requires `tasks:read`.
      operationId: tasks.list
      parameters:
        - name: id
          in: query
          schema:
            type: array
            maxItems: 100
            items:
              type: string
              minLength: 1
          style: form
          explode: true
          allowEmptyValue: true
          allowReserved: true
        - name: brokerage
          in: query
          schema:
            type: array
            maxItems: 100
            items:
              type: string
              minLength: 1
          style: form
          explode: true
          allowEmptyValue: true
          allowReserved: true
        - name: deal
          in: query
          schema:
            type: string
            minLength: 1
          allowEmptyValue: true
          allowReserved: true
        - name: status
          in: query
          schema:
            type: array
            maxItems: 100
            items:
              enum:
                - open
                - held
                - done
                - dismissed
              type: string
              description: >-
                Task status. New values may be added; this is not a breaking
                change. Handle unknown values.
          style: form
          explode: true
          allowEmptyValue: true
          allowReserved: true
        - name: type
          in: query
          schema:
            type: array
            maxItems: 100
            items:
              enum:
                - address_rejected_tradesheet
                - answer_deal_question
                - answer_inbound_message
                - approve_deal_update
                - approve_for_tradesheet_gen
                - approve_mutual_release
                - approve_tradesheet
                - chase_deal_question
                - chase_overdue_condition
                - confirm_client_payment
                - confirm_commission
                - confirm_deal_closed
                - create_commission_stmt
                - create_final_tradesheet
                - create_upload_invoice
                - create_upload_tradesheet
                - materialization_failed
                - obtain_client_payment
                - obtain_lawyer_info
                - process_segment
                - process_source_document
                - provide_client_payment
                - release_deposit_funds
                - resolve_new_deal_intent
                - review_agent_help_request
                - review_agent_message
                - review_amendment
                - review_condition_resolution
                - review_conversation_thread
                - review_document_classification
                - review_extraction_issues
                - review_listing
                - review_listing_suspension
                - review_listing_cancellation
                - approve_listing_update
                - review_unclassified_deal
                - review_unread_conditions
                - review_unsupported_deal_type
                - send_initial_checklist
                - sign_tradesheet
                - upload_agent_payment
                - upload_agent_payment_coop
                - upload_coop_invoice
                - upload_coop_payment
                - upload_deposit_receipt
                - upload_listing_brokerage_receipt
                - upload_vendor_payment
              type: string
              description: >-
                Task type. New values may be added; this is not a breaking
                change. Handle unknown values.
          style: form
          explode: true
          allowEmptyValue: true
          allowReserved: true
        - name: assignee_type
          in: query
          schema:
            enum:
              - user
              - role
              - ai_agent
            type: string
            description: >-
              Assignee type. New values may be added; this is not a breaking
              change. Handle unknown values.
          allowEmptyValue: true
          allowReserved: true
        - name: assignee_user
          in: query
          schema:
            type: string
            minLength: 1
          allowEmptyValue: true
          allowReserved: true
        - name: assignee_role
          in: query
          schema:
            type: array
            maxItems: 100
            items:
              enum:
                - system_admin
                - org_admin
                - brokerage_admin
                - office_admin
                - team_leader
                - deal_processor
                - closing_processor
                - listing_processor
                - deal_processor_manager
                - agent
                - assistant
              type: string
              description: >-
                Role. New values may be added; this is not a breaking change.
                Handle unknown values.
          style: form
          explode: true
          allowEmptyValue: true
          allowReserved: true
        - name: accountable_role
          in: query
          schema:
            type: array
            maxItems: 100
            items:
              enum:
                - system_admin
                - org_admin
                - brokerage_admin
                - office_admin
                - team_leader
                - deal_processor
                - closing_processor
                - listing_processor
                - deal_processor_manager
                - agent
                - assistant
              type: string
              description: >-
                Role. New values may be added; this is not a breaking change.
                Handle unknown values.
          style: form
          explode: true
          allowEmptyValue: true
          allowReserved: true
        - name: updated_since
          in: query
          schema:
            type: string
            format: date-time
          allowEmptyValue: true
          allowReserved: true
        - name: sort
          in: query
          schema:
            enum:
              - updated_at
              - priority
            type: string
            description: >-
              Sort. New values may be added; this is not a breaking change.
              Handle unknown values.
            default: updated_at
          allowEmptyValue: true
          allowReserved: true
        - name: expand
          in: query
          schema:
            type: array
            maxItems: 100
            items:
              enum:
                - deal
              type: string
              description: >-
                Expandable field. New values may be added; this is not a
                breaking change. Handle unknown values.
          style: form
          explode: true
          allowEmptyValue: true
          allowReserved: true
        - name: cursor
          in: query
          schema:
            type: string
            minLength: 1
            description: 'Opaque: send back a next_cursor unchanged.'
          allowEmptyValue: true
          allowReserved: true
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
          allowEmptyValue: true
          allowReserved: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskList'
        '400':
          description: >-
            A parameter failed validation — a filter, a paging value or the path
            id. `errors[]` names each rejected value with a JSON Pointer. A
            `cursor` this API cannot read, or one sent with a different `sort`,
            is `INVALID_CURSOR` and fails the same way on every retry: drop it
            and re-run the initial sync (on `/v1/events`, from `start=latest`,
            as for a 410).
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: >-
            No `Authorization: Bearer mya_…` header (`API_KEY_REQUIRED`), or a
            credential this API will not accept (`API_KEY_INVALID`). Unknown,
            revoked and expired keys are one outcome.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: >-
            The key is valid but does not hold the scope this route requires
            (`INSUFFICIENT_SCOPE`).
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: >-
            No such resource, or none this key may read — the two answers are
            identical bar `request_id` (`NOT_FOUND`).
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: >-
            The key spent its per-minute request budget (`RATE_LIMITED`).
            `Retry-After` carries the seconds to wait.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    TaskList:
      type: object
      properties:
        object:
          const: list
        data:
          type: array
          items:
            $ref: '#/components/schemas/Task'
        has_more:
          type: boolean
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
      required:
        - object
        - data
        - has_more
        - next_cursor
      description: >-
        Tasks, newest `updated_at` first (or queue order with `sort=priority`).
        A cursor records its sort.
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          format: uri
        title:
          type: string
        status:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        detail:
          type: string
        code:
          type: string
        request_id:
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              pointer:
                type: string
              code:
                type: string
              detail:
                type: string
              resource:
                type: string
            required:
              - pointer
              - code
              - detail
      required:
        - type
        - title
        - status
        - detail
        - code
        - request_id
      additionalProperties: false
      description: >-
        RFC 9457 Problem Details — the only error body the `/v1` surface emits,
        served as `application/problem+json` on every failure. Branch on `code`,
        not on `title` or `detail`; quote `request_id` (also the `Request-Id`
        response header) in a support request. `errors` is present only on a
        400, carrying one entry per rejected field.
    Task:
      type: object
      properties:
        object:
          const: task
        id:
          type: string
        brokerage:
          type: string
        deal:
          anyOf:
            - anyOf:
                - type: string
                - $ref: '#/components/schemas/Deal'
            - type: 'null'
          description: >-
            The deal id; the whole deal with `expand=deal`; null for work with
            no deal.
        type:
          enum:
            - address_rejected_tradesheet
            - answer_deal_question
            - answer_inbound_message
            - approve_deal_update
            - approve_for_tradesheet_gen
            - approve_mutual_release
            - approve_tradesheet
            - chase_deal_question
            - chase_overdue_condition
            - confirm_client_payment
            - confirm_commission
            - confirm_deal_closed
            - create_commission_stmt
            - create_final_tradesheet
            - create_upload_invoice
            - create_upload_tradesheet
            - materialization_failed
            - obtain_client_payment
            - obtain_lawyer_info
            - process_segment
            - process_source_document
            - provide_client_payment
            - release_deposit_funds
            - resolve_new_deal_intent
            - review_agent_help_request
            - review_agent_message
            - review_amendment
            - review_condition_resolution
            - review_conversation_thread
            - review_document_classification
            - review_extraction_issues
            - review_listing
            - review_listing_suspension
            - review_listing_cancellation
            - approve_listing_update
            - review_unclassified_deal
            - review_unread_conditions
            - review_unsupported_deal_type
            - send_initial_checklist
            - sign_tradesheet
            - upload_agent_payment
            - upload_agent_payment_coop
            - upload_coop_invoice
            - upload_coop_payment
            - upload_deposit_receipt
            - upload_listing_brokerage_receipt
            - upload_vendor_payment
          type: string
          description: >-
            Task type. New values may be added; this is not a breaking change.
            Handle unknown values.
        label:
          type: string
        description:
          anyOf:
            - type: string
            - type: 'null'
          description: What the work is, in words a person can act on. May name clients.
        priority:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: >-
            A relative queue rank: lower is more urgent. Values may be re-scaled
            and are comparable only within one brokerage.
        status:
          enum:
            - open
            - held
            - done
            - dismissed
          type: string
          description: >-
            Task status. New values may be added; this is not a breaking change.
            Handle unknown values.
        outcome:
          anyOf:
            - enum:
                - abandoned
                - accepted_as_is
                - answered
                - applied
                - approved
                - bound_to_existing
                - bound_to_existing_listing
                - chased
                - classified
                - completed
                - corrected
                - deal_created
                - discarded
                - materialized
                - nothing_owed
                - not_applicable
                - not_a_deal
                - not_extractable
                - no_residual_owed
                - rejected
                - replied
                - returned_for_corrections
                - routed_manually
                - settled
                - superseded
                - typed
                - unprocessable
                - withdrawn
              type: string
              description: >-
                Task outcome, read together with the task type. New values may
                be added; this is not a breaking change. Handle unknown values.
            - type: 'null'
        assignee:
          anyOf:
            - type: object
              properties:
                type:
                  const: user
                id:
                  type: string
                name:
                  anyOf:
                    - type: string
                    - type: 'null'
              required:
                - type
                - id
                - name
              additionalProperties: false
            - type: object
              properties:
                type:
                  const: role
                role:
                  enum:
                    - system_admin
                    - org_admin
                    - brokerage_admin
                    - office_admin
                    - team_leader
                    - deal_processor
                    - closing_processor
                    - listing_processor
                    - deal_processor_manager
                    - agent
                    - assistant
                  type: string
                  description: >-
                    Role. New values may be added; this is not a breaking
                    change. Handle unknown values.
              required:
                - type
                - role
              additionalProperties: false
            - type: object
              properties:
                type:
                  const: ai_agent
                id:
                  const: abby
                name:
                  const: Abby
              required:
                - type
                - id
                - name
              additionalProperties: false
        assigned_at:
          type: string
          format: date-time
          description: >-
            When the task reached its current holder. Tasks created before
            2026-10-10 carry created_at.
        accountable_role:
          enum:
            - system_admin
            - org_admin
            - brokerage_admin
            - office_admin
            - team_leader
            - deal_processor
            - closing_processor
            - listing_processor
            - deal_processor_manager
            - agent
            - assistant
          type: string
          description: >-
            Role. New values may be added; this is not a breaking change. Handle
            unknown values.
        due_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: >-
            The due date, when the task has one. No workflow sets one yet, so
            expect null and use the deal's dates.
        created_at:
          type: string
          format: date-time
        created_by:
          anyOf:
            - type: object
              properties:
                type:
                  const: user
                id:
                  type: string
                name:
                  anyOf:
                    - type: string
                    - type: 'null'
              required:
                - type
                - id
                - name
              additionalProperties: false
            - type: object
              properties:
                type:
                  const: ai_agent
                id:
                  const: abby
                name:
                  const: Abby
                on_behalf_of:
                  anyOf:
                    - type: object
                      properties:
                        type:
                          const: user
                        id:
                          type: string
                        name:
                          anyOf:
                            - type: string
                            - type: 'null'
                      required:
                        - type
                        - id
                        - name
                      additionalProperties: false
                    - type: 'null'
              required:
                - type
                - id
                - name
                - on_behalf_of
              additionalProperties: false
            - type: object
              properties:
                type:
                  const: system
              required:
                - type
              additionalProperties: false
        resolved_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
        resolved_by:
          anyOf:
            - anyOf:
                - type: object
                  properties:
                    type:
                      const: user
                    id:
                      type: string
                    name:
                      anyOf:
                        - type: string
                        - type: 'null'
                  required:
                    - type
                    - id
                    - name
                  additionalProperties: false
                - type: object
                  properties:
                    type:
                      const: ai_agent
                    id:
                      const: abby
                    name:
                      const: Abby
                    on_behalf_of:
                      anyOf:
                        - type: object
                          properties:
                            type:
                              const: user
                            id:
                              type: string
                            name:
                              anyOf:
                                - type: string
                                - type: 'null'
                          required:
                            - type
                            - id
                            - name
                          additionalProperties: false
                        - type: 'null'
                  required:
                    - type
                    - id
                    - name
                    - on_behalf_of
                  additionalProperties: false
                - type: object
                  properties:
                    type:
                      const: system
                  required:
                    - type
                  additionalProperties: false
            - type: 'null'
        url:
          type: string
          description: >-
            Opens the task in the myAbode web app at /go/task/<id>. This path is
            part of the public contract.
        updated_at:
          type: string
          format: date-time
          description: >-
            Also moves when unpublished fields change, so `updated_since` can
            return a task with no visible change.
      required:
        - object
        - id
        - brokerage
        - deal
        - type
        - label
        - description
        - priority
        - status
        - outcome
        - assignee
        - assigned_at
        - accountable_role
        - due_at
        - created_at
        - created_by
        - resolved_at
        - resolved_by
        - url
        - updated_at
      additionalProperties: false
      description: A piece of work on a brokerage's deals, and who holds it.
    Deal:
      type: object
      properties:
        object:
          const: deal
        id:
          type: string
        brokerage:
          type: string
        office:
          anyOf:
            - type: string
            - type: 'null'
        status:
          enum:
            - SUBMITTED
            - IN_PROGRESS
            - READY_FOR_PAYOUT
            - PAID_OUT
            - COMPLETED
            - FELL_THROUGH
          type: string
          description: >-
            Deal status. New values may be added; this is not a breaking change.
            Handle unknown values.
        deal_type:
          anyOf:
            - type: string
            - type: 'null'
        title:
          anyOf:
            - type: string
            - type: 'null'
        mls_number:
          anyOf:
            - type: string
            - type: 'null'
        jurisdiction_code:
          anyOf:
            - type: string
            - type: 'null'
        address:
          type: object
          properties:
            line1:
              anyOf:
                - type: string
                - type: 'null'
            line2:
              anyOf:
                - type: string
                - type: 'null'
            city:
              anyOf:
                - type: string
                - type: 'null'
            province:
              anyOf:
                - type: string
                - type: 'null'
            postal_code:
              anyOf:
                - type: string
                - type: 'null'
          required:
            - line1
            - line2
            - city
            - province
            - postal_code
          additionalProperties: false
        list_price:
          anyOf:
            - type: string
              pattern: ^-?\d+\.\d{2}$
            - type: 'null'
        accepted_price:
          anyOf:
            - type: string
              pattern: ^-?\d+\.\d{2}$
            - type: 'null'
        sale_price:
          anyOf:
            - type: string
              pattern: ^-?\d+\.\d{2}$
            - type: 'null'
        monthly_rent:
          anyOf:
            - type: string
              pattern: ^-?\d+\.\d{2}$
            - type: 'null'
        lease_term_months:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
        offer_date:
          anyOf:
            - type: string
              format: date
            - type: 'null'
        accepted_date:
          anyOf:
            - type: string
              format: date
            - type: 'null'
        firm_date:
          anyOf:
            - type: string
              format: date
            - type: 'null'
        close_date:
          anyOf:
            - type: string
              format: date
            - type: 'null'
        lease_start_date:
          anyOf:
            - type: string
              format: date
            - type: 'null'
        listing_expiry_date:
          anyOf:
            - type: string
              format: date
            - type: 'null'
        is_exclusive_listing:
          anyOf:
            - type: boolean
            - type: 'null'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        url:
          type: string
        agents:
          type: array
          items:
            type: object
            properties:
              user:
                type: object
                properties:
                  type:
                    const: user
                  id:
                    type: string
                  name:
                    anyOf:
                      - type: string
                      - type: 'null'
                required:
                  - type
                  - id
                  - name
                additionalProperties: false
              role:
                anyOf:
                  - enum:
                      - PRIMARY
                      - CO_AGENT
                      - ASSISTANT
                      - REFERRAL
                    type: string
                    description: >-
                      Agent role. New values may be added; this is not a
                      breaking change. Handle unknown values.
                  - type: 'null'
              side:
                anyOf:
                  - enum:
                      - LISTING
                      - COOP
                    type: string
                    description: >-
                      Deal side. New values may be added; this is not a breaking
                      change. Handle unknown values.
                  - type: 'null'
              is_primary:
                type: boolean
            required:
              - user
              - role
              - side
              - is_primary
            additionalProperties: false
        parties:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              type:
                enum:
                  - PERSON
                  - ORGANIZATION
                type: string
                description: >-
                  Party type. New values may be added; this is not a breaking
                  change. Handle unknown values.
              name:
                anyOf:
                  - type: string
                  - type: 'null'
              organization_name:
                anyOf:
                  - type: string
                  - type: 'null'
              role:
                enum:
                  - BUYER
                  - SELLER
                  - TENANT_PARTY
                  - LANDLORD_PARTY
                  - BUYER_LAWYER
                  - SELLER_LAWYER
                  - COOP_AGENT
                  - LISTING_AGENT
                type: string
                description: >-
                  Party role. New values may be added; this is not a breaking
                  change. Handle unknown values.
              participant_type:
                enum:
                  - CLIENT
                  - COUNTERPARTY
                  - PROFESSIONAL
                  - EXTERNAL_AGENT
                type: string
                description: >-
                  Participant type. New values may be added; this is not a
                  breaking change. Handle unknown values.
              side:
                enum:
                  - LISTING
                  - COOP
                type: string
                description: >-
                  Deal side. New values may be added; this is not a breaking
                  change. Handle unknown values.
              email:
                anyOf:
                  - type: string
                  - type: 'null'
              phone:
                anyOf:
                  - type: string
                  - type: 'null'
            required:
              - id
              - type
              - name
              - organization_name
              - role
              - participant_type
              - side
              - email
              - phone
            additionalProperties: false
      required:
        - object
        - id
        - brokerage
        - office
        - status
        - deal_type
        - title
        - mls_number
        - jurisdiction_code
        - address
        - list_price
        - accepted_price
        - sale_price
        - monthly_rent
        - lease_term_months
        - offer_date
        - accepted_date
        - firm_date
        - close_date
        - lease_start_date
        - listing_expiry_date
        - is_exclusive_listing
        - created_at
        - updated_at
        - url
        - agents
        - parties
      additionalProperties: false
      description: >-
        A deal as `/v1` publishes it: the deal itself plus its assignments
        (`agents`) and parties. Money is a fixed-2dp decimal string, calendar
        dates are `YYYY-MM-DD`, timestamps are ISO 8601 UTC, and `null` means
        the column is not captured rather than zero or empty.
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        An API key of the form `mya_…`, sent as `Authorization: Bearer mya_…`.
        The secret is shown once, when the key is created.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.