Lone Wolf Transact API

Programmatic access to Lone Wolf's transaction management platform across the full transaction lifecycle — creating and updating transactions, managing offers, contacts, folders and documents, sharing transactions across teams via share groups, attaching forms from form libraries, and sending documents out for e-signature. Resources are scoped under /users/{userId}. Collection endpoints on the Transact Workflow service support OData query options ($filter, $expand); this is OData query syntax only and is not a RESO Web API surface. Secured with a bearer token plus a subscription key. 37 paths / 53 operations in the published OpenAPI 3.0.3 definition.

OpenAPI Specification

lone-wolf-transact-api-openapi.yml Raw ↑
---
openapi: 3.0.3
info:
  title: Transact API
  version: 1.0.0
  description: |
    # Transact API


    > **For AI assistants and coding agents:** a machine-readable OpenAPI 3.0.3 definition of this API is available at the `.json` download link on this page (or directly at `https://bump.sh/<org>/doc/transact/download`). <!-- TODO: replace with the real raw spec URL --> Prefer the raw specification over scraping this rendered page.

    The Transact API provides programmatic access to Lone Wolf's transaction management platform. It covers the full transaction lifecycle: creating and updating transactions, managing offers, contacts, folders and documents, sharing transactions across teams via share groups, attaching forms from form libraries, and sending documents out for e-signature through Authentisign.

    ## Index

    1. [Quickstart](#quickstart)
    2. [Authentication](#authentication)
    3. [Conventions](#conventions)
    4. [Universal Global Fields](#universal-global-fields)
    5. [Services](#services)

    ## Quickstart

    Get from zero to a first successful call in two requests.

    **1. Get an access token**

    ```bash
    curl -X POST https://gateway.lwolf.com/oauth/token \
      -H "Content-Type: application/json" \
      -d '{
        "grant_type": "client_credentials",
        "client_id": "<your client id>",
        "client_secret": "<your client secret>",
        "audience": "https://api.lwolf.com",
        "lwt_client_id": "<your Lone Wolf client GUID>"
      }'
    ```

    Copy the `access_token` from the response.

    **2. Make an authenticated call**

    Every request needs **both** the Bearer token and the subscription key:

    ```bash
    curl "https://gateway.lwolf.com/transact-workflow/v1/users/<userId>/transactions" \
      -H "Authorization: Bearer <access_token>" \
      -H "lw-subscription-key: <your subscription key>"
    ```

    A `200` with a JSON list of transactions means you're fully set up. A `401` usually means the token is missing or expired; a `403` usually means the `lw-subscription-key` header is missing or invalid.


    ## Authentication

    All endpoints (except the token endpoint itself) require **two** credentials on every request:

    | Credential | Where | Description |
    |---|---|---|
    | Access token | `Authorization: Bearer <token>` header | JWT obtained via the OAuth 2.0 client credentials flow |
    | Subscription key | `lw-subscription-key` header | API subscription key issued by Lone Wolf |

    ### Obtaining an access token

    Send a `POST` request to `https://gateway.lwolf.com/oauth/token` with a JSON body:

    ```json
    {
        "grant_type": "client_credentials",
        "client_id": "<your client id>",
        "client_secret": "<your client secret>",
        "audience": "https://api.lwolf.com",
        "lwt_client_id": "<your Lone Wolf client GUID>"
    }
    ```

    The response contains an `access_token` to be sent as a Bearer token on subsequent calls. Tokens are short-lived; request a new token when the current one expires.

    ## Conventions

    - **User scoping** — most resources are addressed under `/users/{userId}/…`. The `userId` is the GUID of the user on whose behalf the operation is performed.
    - **OData queries** — collection endpoints on the Transact Workflow service support OData query options. Use `$filter` to restrict results (e.g. `$filter=opportunityId eq <guid>`) and `$expand` to embed related entities (e.g. `$expand=members, opportunities` on share groups).
    - **Partial updates** — `PATCH` endpoints accept a partial resource representation; only the fields provided are updated.
    - **Content type** — request bodies are JSON unless noted otherwise. Document upload and signing creation use `multipart/form-data`.

    ## Universal Global Fields

    A consolidated reference of the transaction-related fields that can be updated through the API. These fields correspond to the request schemas of the create/update endpoints below.

    ### 1. Property fields — `POST /Transactions`, `PATCH /users/{userId}/transactions/{transactionId}`

    `type`, `address1`–`address4`, `locality`, `region`, `subRegion`, `postalCode`, `country`, `legalDescription`, `propertyIncludes`, `propertyExcludes`, `taxNumber`, `mlsNumber`, `note`, `schoolDistrict`, `zoningClass`, `yearBuilt`, `phase`, `propertyType`, `asking`, `deposit`, `taxes`, `closingDate`, `listingExpiration`, `listingGoesLive`

    ### 2. Transaction dates & financials — `POST /Offers`, `PATCH /users/{userId}/Offers/{offerId}`

    `closingDate`, `finalWalkthroughDate`, `possessionDate`, `offerDate`, `expirationDate`, `acceptanceDate`, `purchasePrice`, `deposit`

    ### 3. Contact fields — `POST /Contacts`, `PATCH /users/{userId}/Contacts/{contactId}`

    `contactType`, `slot`, `prefix`, `suffix`, `firstname`, `middlename`, `lastname`, `email`, `phone`, `cellPhone`, `workPhone`, `fax`, `agentId`, `agentLicense`, `companyName`, `officeId`, `officeLicense`, `escrowNumber`, `address1`–`address4`, `locality`, `region`, `postalCode`, `country`, `llcPoa`

    The `slot` field determines the ordering of contacts of the same type (`1` = Buyer 1 / Seller 1, `2` = Buyer 2 / Seller 2). The full `contactType` enumeration (0–21, from Buyer to PestControlCompany) is documented on the Contact schemas.

    ## Services

    The API is composed of several services routed through the same gateway host:

    | Service | Base path | Purpose |
    |---|---|---|
    | Platform | `/platform/v1` | Client users and offices |
    | Transact Workflow | `/transact-workflow/v1` | Transactions, offers, contacts, folders, documents, share groups, templates |
    | Forms Design | `/forms-design/api` | Form libraries and library forms |
    | Forms Editor | `/forms-editor/api/v1` | Forms attached to a transaction (form packages) |
    | Authentisign | `/authentisign/v3` | E-signature signings, participants, and signed documents |
  contact:
    name: Lone Wolf Technologies
    url: https://www.lwolf.com
servers:
- url: https://gateway.lwolf.com
  description: Production API gateway
- url: "{tw_host}"
  description: Environment-specific host (e.g. pre-production)
  variables:
    tw_host:
      default: https://api.pre.lwolf.com
      description: Base host for the target environment.
security:
- bearerAuth: []
  subscriptionKey: []
tags:
- name: Authorization
  description: OAuth 2.0 client credentials token endpoint.
- name: Users and Offices
  description: Users and offices belonging to a client account (Platform service).
- name: Transactions
  description: Create, read, update, and delete transactions.
- name: Share Groups
  description: Share transactions with groups of users and manage group membership.
- name: Transaction Templates
  description: Read transaction templates available to a user.
- name: Offers
  description: Manage offers on transactions.
- name: Contacts
  description: Manage transaction contacts.
- name: Folders
  description: Manage folders within transactions.
- name: Documents
  description: Upload, list, download, and delete transaction documents.
- name: Form Libraries
  description: Browse form libraries and library forms (Forms Design service).
- name: Transaction Forms
  description: Manage forms attached to a transaction's form package (Forms Editor
    service).
- name: Signings
  description: Create signings, manage participants, and retrieve signed documents
    (Authentisign service).
paths:
  "/oauth/token":
    post:
      tags:
      - Authorization
      summary: Obtain an access token
      description: |-
        Exchanges OAuth client credentials for a JWT access token. The returned `access_token` must be sent as a Bearer token in the `Authorization` header on all subsequent requests, together with the `lw-subscription-key` header.

        **Note:** this endpoint is served from the gateway root (`https://gateway.lwolf.com`) rather than a service base path.
      operationId: getToken
      responses:
        '200':
          description: Token issued successfully.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/TokenResponse"
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/TokenRequest"
            example:
              grant_type: client_credentials
              client_id: "<your client id>"
              client_secret: "<your client secret>"
              audience: https://api.lwolf.com
              lwt_client_id: "<your Lone Wolf client GUID>"
      security: []
  "/platform/v1/clients/{clientId}/users":
    get:
      tags:
      - Users and Offices
      summary: List users
      description: Returns the users belonging to the specified client account.
      operationId: getUsers
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: clientId
        in: path
        required: true
        description: GUID of the Lone Wolf client (tenant) account.
        schema:
          type: string
          format: uuid
  "/platform/v1/clients/{clientId}/offices":
    get:
      tags:
      - Users and Offices
      summary: List offices
      description: Returns the offices belonging to the specified client account.
      operationId: getOffices
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: clientId
        in: path
        required: true
        description: GUID of the Lone Wolf client (tenant) account.
        schema:
          type: string
          format: uuid
  "/platform/v1/clients/{clientId}/users/invite":
    post:
      tags:
      - Users and Offices
      summary: Send a user invite
      description: Sends an invitation to add a user to the specified client account.
      operationId: sendUserInvite
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: clientId
        in: path
        required: true
        description: GUID of the Lone Wolf client (tenant) account.
        schema:
          type: string
          format: uuid
      requestBody:
        required: false
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/UserInvite"
  "/transact-workflow/v1/Transactions":
    post:
      tags:
      - Transactions
      summary: Create a transaction
      description: Creates a new transaction for the user specified in the request
        body.
      operationId: createTransaction
      responses:
        '201':
          description: Transaction created.
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/TransactionCreate"
  "/transact-workflow/v1/users/{userId}/transactions":
    get:
      tags:
      - Transactions
      summary: List transactions
      description: Returns the transactions visible to the specified user. Supports
        OData `$filter` (e.g. `$filter=opportunityId eq <guid>`).
      operationId: getTransactions
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
      - name: "$filter"
        in: query
        required: false
        description: OData filter expression used to restrict the result set.
        schema:
          type: string
        example: opportunityId eq 5a283c97-44a9-45a9-2f3a-08de10e96589
  "/transact-workflow/v1/users/{userId}/transactions/{transactionId}":
    get:
      tags:
      - Transactions
      summary: Get a transaction
      description: Returns a single transaction by its key.
      operationId: getTransactionByKey
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
      - name: transactionId
        in: path
        required: true
        description: GUID of the transaction.
        schema:
          type: string
          format: uuid
    patch:
      tags:
      - Transactions
      summary: Update a transaction
      description: Applies a partial update to a transaction. Only the fields present
        in the body are modified.
      operationId: updateTransaction
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
      - name: transactionId
        in: path
        required: true
        description: GUID of the transaction.
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/TransactionUpdate"
    delete:
      tags:
      - Transactions
      summary: Delete a transaction
      description: Deletes the specified transaction.
      operationId: deleteTransaction
      responses:
        '204':
          description: Transaction deleted.
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
      - name: transactionId
        in: path
        required: true
        description: GUID of the transaction.
        schema:
          type: string
          format: uuid
  "/transact-workflow/v1/users/{userId}/ShareGroup":
    get:
      tags:
      - Share Groups
      summary: List share groups
      description: 'Returns the share groups visible to the specified user. Supports
        OData `$expand` (e.g. `$expand=opportunities`) and `$filter`, including lambda
        expressions such as `$filter=opportunities/any(o: o/opportunityId eq <guid>)`.'
      operationId: getShareGroups
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
      - name: "$expand"
        in: query
        required: false
        description: Comma-separated list of related entities to include inline in
          the response.
        schema:
          type: string
        example: members, opportunities
      - name: "$filter"
        in: query
        required: false
        description: OData filter expression used to restrict the result set.
        schema:
          type: string
        example: opportunityId eq 5a283c97-44a9-45a9-2f3a-08de10e96589
    post:
      tags:
      - Share Groups
      summary: Create a share group
      description: Creates a new, empty share group. Use the update endpoint to add
        members and share opportunities.
      operationId: createShareGroup
      responses:
        '201':
          description: Share group created.
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ShareGroupCreate"
  "/transact-workflow/v1/users/{userId}/ShareGroup/{shareGroupId}":
    get:
      tags:
      - Share Groups
      summary: Get a share group
      description: Returns a single share group by its key. Use `$expand=members`
        and/or `$expand=opportunities` to embed group members and shared opportunities
        in the response.
      operationId: getShareGroupByKey
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
      - name: shareGroupId
        in: path
        required: true
        description: GUID of the share group.
        schema:
          type: string
          format: uuid
      - name: "$expand"
        in: query
        required: false
        description: Comma-separated list of related entities to include inline in
          the response.
        schema:
          type: string
        example: members, opportunities
    put:
      tags:
      - Share Groups
      summary: Update a share group (add members and share)
      description: Replaces the share group definition, including its member list
        and the opportunities shared with the group.
      operationId: updateShareGroup
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
      - name: shareGroupId
        in: path
        required: true
        description: GUID of the share group.
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ShareGroupUpdate"
  "/transact-workflow/v1/users/{userId}/templates":
    get:
      tags:
      - Transaction Templates
      summary: List templates
      description: Returns the transaction templates available to the specified user.
      operationId: getTemplates
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
  "/transact-workflow/v1/users/{userId}/templates/{templateId}":
    get:
      tags:
      - Transaction Templates
      summary: Get a template
      description: Returns a single transaction template by its key.
      operationId: getTemplateByKey
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
      - name: templateId
        in: path
        required: true
        description: GUID of the transaction template.
        schema:
          type: string
          format: uuid
  "/transact-workflow/v1/Offers":
    post:
      tags:
      - Offers
      summary: Create an offer
      description: Creates a new offer on a transaction for the user specified in
        the request body. A user-scoped alternative is available at `POST /transact-workflow/v1/users/{userId}/Offers`.
      operationId: createOffer
      responses:
        '201':
          description: Offer created.
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/OfferCreate"
  "/transact-workflow/v1/users/{userId}/Offers":
    get:
      tags:
      - Offers
      summary: List offers
      description: Returns the offers visible to the specified user.
      operationId: getOffers
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
    post:
      tags:
      - Offers
      summary: Create an offer (user-scoped)
      description: Creates a new offer on a transaction under the specified user's
        path. Equivalent to `POST /transact-workflow/v1/Offers` with the user supplied
        in the path instead of the request body.
      operationId: createOfferForUser
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user.
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/OfferCreate"
      responses:
        '201':
          description: Offer created.
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
  "/transact-workflow/v1/users/{userId}/Offers/{offerId}":
    get:
      tags:
      - Offers
      summary: Get an offer
      description: Returns a single offer by its key.
      operationId: getOfferByKey
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
      - name: offerId
        in: path
        required: true
        description: GUID of the offer.
        schema:
          type: string
          format: uuid
    patch:
      tags:
      - Offers
      summary: Update an offer
      description: Applies a partial update to an offer. Only the fields present in
        the body are modified.
      operationId: updateOffer
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
      - name: offerId
        in: path
        required: true
        description: GUID of the offer.
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/OfferUpdate"
    delete:
      tags:
      - Offers
      summary: Delete an offer
      description: Deletes the specified offer.
      operationId: deleteOffer
      responses:
        '204':
          description: Offer deleted.
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
      - name: offerId
        in: path
        required: true
        description: GUID of the offer.
        schema:
          type: string
          format: uuid
  "/transact-workflow/v1/Contacts":
    post:
      tags:
      - Contacts
      summary: Create a contact
      description: Creates a new contact on a transaction for the user specified in
        the request body.
      operationId: createContact
      responses:
        '201':
          description: Contact created.
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ContactCreate"
  "/transact-workflow/v1/users/{userId}/Contacts":
    get:
      tags:
      - Contacts
      summary: List contacts
      description: Returns the transaction contacts visible to the specified user.
      operationId: getContacts
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
  "/transact-workflow/v1/users/{userId}/Contacts/{contactId}":
    get:
      tags:
      - Contacts
      summary: Get a contact
      description: Returns a single contact by its key.
      operationId: getContactByKey
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
          "$ref": "#/components/responses/Forbidden"
        '404':
          "$ref": "#/components/responses/NotFound"
      parameters:
      - name: userId
        in: path
        required: true
        description: Unique identifier (GUID) of the acting user. All Transact Workflow
          resources are scoped to a user.
        schema:
          type: string
          format: uuid
      - name: contactId
        in: path
        required: true
        description: GUID of the contact.
        schema:
          type: string
          format: uuid
    patch:
      tags:
      - Contacts
      summary: Update a contact
      description: Applies a partial update to a contact. Only the fields present
        in the body are modified.
      operationId: updateContact
      responses:
        '200':
          description: Successful response
        '400':
          "$ref": "#/components/responses/BadRequest"
        '401':
          "$ref": "#/components/responses/Unauthorized"
        '403':
     

# --- truncated at 32 KB (82 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lone-wolf/refs/heads/main/openapi/lone-wolf-transact-api-openapi.yml