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