> ## 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.

# Retrieve a deal

> Returns the deal when the member the key belongs to can read it. A deal that does not exist and a deal that member cannot see both return 404 NOT_FOUND with an identical body. Requires the `deals:read` scope.



## OpenAPI

````yaml https://api.myabode.ca/v1/openapi.json get /v1/deals/{id}
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/deals/{id}:
    get:
      summary: Retrieve a deal
      description: >-
        Returns the deal when the member the key belongs to can read it. A deal
        that does not exist and a deal that member cannot see both return 404
        NOT_FOUND with an identical body. Requires the `deals:read` scope.
      operationId: deals.get
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Deal'
        '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:
    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.
    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.
  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.