Lone Wolf zipForm Partner API

The zipForm REST web service (v5.1), exposing zipForm transaction data, PDF forms and selected zipForm application functionality for integration into partner applications. Explicitly made available on a licensed basis to third-party application partners. Authentication combines a Shared Key with either a Context Id or an External Id, passed via X-Auth-ContextId / X-Auth-SharedKey headers or query string. 22 paths / 28 operations, with production and staging base URLs both published.

OpenAPI Specification

lone-wolf-zipform-api-openapi.yml Raw ↑
---
openapi: 3.0.3
info:
  title: ZipForm Partner API
  description: |-
    The zipForm® REST web service is made available on a licensed basis to third-party application partners. It exposes zipForm® transaction data, PDF forms, and certain zipForm® application functionality for integration into partner applications.

    **Base URLs:**
    - Production: `https://ws.zipformplus.com/api`
    - Staging/QA: `https://api.pre.zipformplus.com/api`

    ## Authentication

    All requests (except authentication endpoints) must include a **Shared Key** and either a **Context Id** or **External Id**, passed via request headers or query string.

    ### Via Request Headers (Context Id)
    ```
    X-Auth-ContextId: <Context Id>
    X-Auth-SharedKey: <Client Shared Key>
    ```

    ### Via Query String (Context Id)
    ```
    <URL>?ContextId=<Context Id>&SharedKey=<Client Shared Key>
    ```

    ### Via Request Headers (External Id)
    ```
    X-Auth-ExternalId: <Client External Id>
    X-Auth-SharedKey: <Client Shared Key>
    ```

    ### Via Query String (External Id)
    ```
    <URL>?ExternalId=<External Id>&SharedKey=<Client shared key>
    ```

    ## Response Codes

    | Code | Description |
    |---|---|
    | 200 | OK |
    | 201 | Created |
    | 204 | No Content — success but resource has no content |
    | 304 | Not Modified |
    | 400 | Bad Request |
    | 401 | Unauthorized |
    | 403 | Forbidden / Blank PDF Not Allowed |
    | 404 | Not Found |
    | 409 | Account Linking Failed |
    | 415 | Unsupported Media Type |
    | 500 | Internal Server Error |
    | 503 | Service Unavailable |

    ## Terminology

    | Term | Definition |
    |---|---|
    | Shared Key | A unique identifier granted to the partner that authenticates its Foreign Application |
    | Context Id | A session identifier returned after authentication, uniquely identifying the current interaction |
    | External Id | A partner-supplied identifier that uniquely identifies a user in the partner's application |
    | Foreign Application (FA) | An external application that consumes the zipForm® web service |
    | MD5 | Message-digest algorithm used for data encryption |

    ## Pagination and Sorting

    Supported on collection endpoints (Get Transaction List, Get Document List, Get Library Documents, Get Agent Libraries):

    ```
    <URL>?page=<page number>&pagesize=<page size>&orderby=<sort field>&sortorder=<sort order>
    ```

    | Collection | Sort Fields |
    |---|---|
    | Transactions | `name`, `created` |
    | Forms/Documents | `name`, `ContentType` |
    | Libraries | `name`, `state` |

    `sortorder`: `asc` or `desc`

    ## Universal Global Fields

    Below is a list of the fields related to a transaction that can be updated through the API for the ZipForms System.

    ### 1. Property Listing Address
    - `REData_REProperties_ResidentialProperty_Listing_StreetAddress_CompositeAddress`
    - `REData_REProperties_ResidentialProperty_Listing_StreetAddress_City`
    - `REData_REProperties_ResidentialProperty_Listing_StreetAddress_StateOrProvince`
    - `REData_REProperties_ResidentialProperty_Listing_StreetAddress_PostalCode`

    ### 2. Listing Agent Information
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REAgent_FullName`
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REAgent_AgentID`

    #### Contact Information
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REAgent_ContactInformation_OfficePhone`
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REAgent_ContactInformation_CellPhone`
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REAgent_ContactInformation_Pager`
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REAgent_ContactInformation_Email`

    ### 3. Listing Office Information
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REOffice_Name`
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REOffice_OfficeID`

    #### Contact Information
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REOffice_ContactInformation_OfficePhone`
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REOffice_ContactInformation_Fax`

    #### Address
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REOffice_StreetAddress_CompositeAddress`
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REOffice_StreetAddress_City`
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REOffice_StreetAddress_StateOrProvince`
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_REOffice_StreetAddress_PostalCode`

    ### 4. Listing Details
    - `REData_REProperties_ResidentialProperty_Listing_ListingID`
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_ListDate`
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_ListPrice`
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_ExpirationDate`
    - `REData_REProperties_ResidentialProperty_Listing_ListingData_Remarks`

    ### 5. Geographic Information
    - `REData_REProperties_ResidentialProperty_Listing_GeographicData_County`

    ### 6. Sales Agent Information
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REAgent_FullName`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REAgent_AgentID`

    #### Contact Information
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REAgent_ContactInformation_OfficePhone`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REAgent_ContactInformation_CellPhone`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REAgent_ContactInformation_Pager`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REAgent_ContactInformation_Email`

    ### 7. Sales Office Information
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REOffice_Name`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REOffice_OfficeID`

    #### Contact Information
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REOffice_ContactInformation_OfficePhone`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REOffice_ContactInformation_Fax`

    #### Address
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REOffice_StreetAddress_CompositeAddress`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REOffice_StreetAddress_City`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REOffice_StreetAddress_StateOrProvince`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_REOffice_StreetAddress_PostalCode`

    ### 8. Sales Information
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_ContractDate`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_ClosePrice`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_CloseDate`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_AmountFinanced`

    ### 9. School Information
    - `REData_REProperties_ResidentialProperty_Listing_SchoolData_SchoolDistrict`

    ### 10. Tax Information
    - `REData_REProperties_ResidentialProperty_Listing_TaxData_TaxID`
    - `REData_REProperties_ResidentialProperty_Listing_TaxData_County`
    - `REData_REProperties_ResidentialProperty_Listing_TaxData_LegalDescription`
    - `REData_REProperties_ResidentialProperty_Listing_ParcelNumber`

    ### 11. Property Characteristics
    - `REData_REProperties_ResidentialProperty_Subdivision`
    - `REData_REProperties_ResidentialProperty_AssociationFee`
    - `REData_REProperties_ResidentialProperty_YearBuilt`

    ---

    ## Parties

    ### 12. Seller 1

    #### Identity
    - `Other_Seller1_FirstName`
    - `Other_Seller1_MiddleName`
    - `Other_Seller1_LastName`
    - `Other_Seller1_FullName`
    - `Other_Seller1_Relationship`

    #### Address
    - `Other_Seller1_StreetAddress_CompositeAddress`
    - `Other_Seller1_StreetAddress_City`
    - `Other_Seller1_StreetAddress_StateOrProvince`
    - `Other_Seller1_StreetAddress_PostalCode`

    #### Contact Information
    - `Other_Seller1_ContactInformation_OfficePhone`
    - `Other_Seller1_ContactInformation_CellPhone`
    - `Other_Seller1_ContactInformation_HomePhone`
    - `Other_Seller1_ContactInformation_Fax`
    - `Other_Seller1_ContactInformation_Email`

    ### 13. Seller 2
    Same structure as Seller 1 — prefix `Other_Seller2_`

    ### 14. Buyer 1

    #### Identity
    - `Other_Buyer1_FirstName`
    - `Other_Buyer1_MiddleName`
    - `Other_Buyer1_LastName`
    - `Other_Buyer1_FullName`
    - `Other_Buyer1_Relationship`

    #### Address
    - `Other_Buyer1_StreetAddress_CompositeAddress`
    - `Other_Buyer1_StreetAddress_City`
    - `Other_Buyer1_StreetAddress_StateOrProvince`
    - `Other_Buyer1_StreetAddress_PostalCode`

    #### Contact Information
    - `Other_Buyer1_ContactInformation_OfficePhone`
    - `Other_Buyer1_ContactInformation_CellPhone`
    - `Other_Buyer1_ContactInformation_HomePhone`
    - `Other_Buyer1_ContactInformation_Fax`
    - `Other_Buyer1_ContactInformation_Email`

    ### 15. Buyer 2
    Same structure as Buyer 1 — prefix `Other_Buyer2_`

    ---

    ## Additional Parties

    ### 16. Seller Attorney
    - `Other_AdditionalInfo_Attorneys_Sellers_Name`
    - `Other_AdditionalInfo_Attorneys_Sellers_ContactName`
    - `Other_AdditionalInfo_Attorneys_Sellers_StreetAddress_CompositeAddress`
    - `Other_AdditionalInfo_Attorneys_Sellers_StreetAddress_City`
    - `Other_AdditionalInfo_Attorneys_Sellers_StreetAddress_StateOrProvince`
    - `Other_AdditionalInfo_Attorneys_Sellers_StreetAddress_PostalCode`
    - `Other_AdditionalInfo_Attorneys_Sellers_ContactInformation_OfficePhone`
    - `Other_AdditionalInfo_Attorneys_Sellers_ContactInformation_Fax`
    - `Other_AdditionalInfo_Attorneys_Sellers_ContactInformation_Email`

    ### 17. Buyer Attorney
    Same structure as Seller Attorney — prefix `Other_AdditionalInfo_Attorneys_Buyers_`

    ### 18. Appraiser
    - `Other_AdditionalInfo_Appraiser_Name`
    - `Other_AdditionalInfo_Appraiser_ContactName`
    - `Other_AdditionalInfo_Appraiser_StreetAddress_CompositeAddress`
    - `Other_AdditionalInfo_Appraiser_StreetAddress_City`
    - `Other_AdditionalInfo_Appraiser_StreetAddress_StateOrProvince`
    - `Other_AdditionalInfo_Appraiser_StreetAddress_PostalCode`
    - `Other_AdditionalInfo_Appraiser_ContactInformation_OfficePhone`
    - `Other_AdditionalInfo_Appraiser_ContactInformation_CellPhone`
    - `Other_AdditionalInfo_Appraiser_ContactInformation_Fax`
    - `Other_AdditionalInfo_Appraiser_ContactInformation_Pager`
    - `Other_AdditionalInfo_Appraiser_ContactInformation_Email`

    ### 19. Escrow
    - `Other_AdditionalInfo_Escrow_Name`
    - `Other_AdditionalInfo_Escrow_ContactName`
    - `Other_AdditionalInfo_Escrow_StreetAddress_CompositeAddress`
    - `Other_AdditionalInfo_Escrow_StreetAddress_City`
    - `Other_AdditionalInfo_Escrow_StreetAddress_StateOrProvince`
    - `Other_AdditionalInfo_Escrow_StreetAddress_PostalCode`
    - `Other_AdditionalInfo_Escrow_ContactInformation_OfficePhone`
    - `Other_AdditionalInfo_Escrow_ContactInformation_Fax`
    - `Other_AdditionalInfo_Escrow_ContactInformation_Email`
    - `Other_AdditionalInfo_Escrow_CaseNumber`

    ### 20. Lender
    - `Other_AdditionalInfo_Lender_Name`
    - `Other_AdditionalInfo_Lender_ContactName`
    - `Other_AdditionalInfo_Lender_StreetAddress_CompositeAddress`
    - `Other_AdditionalInfo_Lender_StreetAddress_City`
    - `Other_AdditionalInfo_Lender_StreetAddress_StateOrProvince`
    - `Other_AdditionalInfo_Lender_StreetAddress_PostalCode`
    - `Other_AdditionalInfo_Lender_ContactInformation_OfficePhone`
    - `Other_AdditionalInfo_Lender_ContactInformation_CellPhone`
    - `Other_AdditionalInfo_Lender_ContactInformation_Fax`
    - `Other_AdditionalInfo_Lender_ContactInformation_Pager`
    - `Other_AdditionalInfo_Lender_ContactInformation_Email`
    - `Other_AdditionalInfo_Lender_LoanNumber`

    ### 21. Title Company
    - `Other_AdditionalInfo_TitleInformation_Name`
    - `Other_AdditionalInfo_TitleInformation_ContactName`
    - `Other_AdditionalInfo_TitleInformation_StreetAddress_CompositeAddress`
    - `Other_AdditionalInfo_TitleInformation_StreetAddress_City`
    - `Other_AdditionalInfo_TitleInformation_StreetAddress_StateOrProvince`
    - `Other_AdditionalInfo_TitleInformation_StreetAddress_PostalCode`
    - `Other_AdditionalInfo_TitleInformation_ContactInformation_OfficePhone`
    - `Other_AdditionalInfo_TitleInformation_ContactInformation_CellPhone`
    - `Other_AdditionalInfo_TitleInformation_ContactInformation_Fax`
    - `Other_AdditionalInfo_TitleInformation_ContactInformation_Email`

    ---

    ## Additional Listing and Sales Data

    ### 22. Listing Condition Information
    - `Other_AdditionalInfo_AdditionalListingData_ConditionInfo_Includes`
    - `Other_AdditionalInfo_AdditionalListingData_ConditionInfo_Excludes`

    ### 23. Listing Encumbrances
    - `Other_AdditionalInfo_AdditionalListingData_Encumberances_MortgageBalance1`
    - `Other_AdditionalInfo_AdditionalListingData_Encumberances_MortgageBalance2`
    - `Other_AdditionalInfo_AdditionalListingData_Encumberances_TotalEncumbrances`
    - `Other_AdditionalInfo_AdditionalListingData_Encumberances_OtherLien`
    - `Other_AdditionalInfo_AdditionalListingData_Encumberances_OtherLienDescription`

    ### 24. Offer & Deposit Information
    - `Other_AdditionalInfo_AdditionalSalesData_OfferDate`
    - `Other_AdditionalInfo_AdditionalSalesData_OfferAcceptDate`
    - `Other_AdditionalInfo_AdditionalSalesData_DepositAmount`

    ### Tax Parcel Metadata
    - `Other_AdditionalInfo_AdditionalTaxData_LotNumber`
    - `Other_AdditionalInfo_AdditionalTaxData_UnitNumber`
    - `Other_AdditionalInfo_AdditionalTaxData_Township`
    - `Other_AdditionalInfo_AdditionalTaxData_BlockNumber`
    - `Other_AdditionalInfo_AdditionalTaxData_PlatBookNumber`
    - `Other_AdditionalInfo_AdditionalTaxData_PlatPageNumber`

    ### Property Type Flags
    - `Other_AdditionalInfo_AdditionalFields_CS_PropertyType_Residential`
    - `Other_AdditionalInfo_AdditionalFields_CS_PropertyType_Multi`
    - `Other_AdditionalInfo_AdditionalFields_CS_PropertyType_Vacant`
    - `Other_AdditionalInfo_AdditionalFields_CS_PropertyType_Commercial`
    - `Other_AdditionalInfo_AdditionalFields_CS_PropertyType_OtherPT`
    - `Other_AdditionalInfo_AdditionalFields_CS_PropertyType_OtherPTDescription`

    ### ZipForms Metadata
    - `Other_ZFMetadata_ZFFilename`
    - `Other_ZFMetadata_ZFBrokerName`
    - `Other_ZFMetadata_ZFUserName_Name`
    - `Other_ZFMetadata_ZFUserName_OfficePhone`
    - `Other_ZFMetadata_ZFUserName_Fax`
    - `Other_ZFMetadata_ZFUserName_CompositeAddress`

    ---

    ## Commission Data

    ### Listing Side
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_ListingCommissionPercent`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_ListingCommissionAmount`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_AdminTransactionFee`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_OtherDeductions`

    #### Agent Splits
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_AgentOneSplitPercent`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_AgentOneSplitAmount`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_AgentOneSplitName`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_AgentTwoSplitPercent`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_AgentTwoSplitAmount`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_AgentTwoSplitName`

    #### Net Values
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_AgentOneNet`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_AgentTwoNet`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_OfficeCommissionNet`

    ### Buy Side
    - `REData_REProperties_ResidentialProperty_BuySideData_BuyerCommissionPercent`
    - `REData_REProperties_ResidentialProperty_BuySideData_BuyerCommissionAmount`
    - `REData_REProperties_ResidentialProperty_BuySideData_AdminTransactionFee`
    - `REData_REProperties_ResidentialProperty_BuySideData_OtherDeductions`

    #### Referrals
    - `REData_REProperties_ResidentialProperty_BuySideData_ReferringAgentFeePercent`
    - `REData_REProperties_ResidentialProperty_BuySideData_ReferringAgentFeeAmount`
    - `REData_REProperties_ResidentialProperty_BuySideData_ReferringAgentName`

    #### Agent Splits
    - `REData_REProperties_ResidentialProperty_BuySideData_AgentOneSplitPercent`
    - `REData_REProperties_ResidentialProperty_BuySideData_AgentOneSplitAmount`
    - `REData_REProperties_ResidentialProperty_BuySideData_AgentOneSplitName`
    - `REData_REProperties_ResidentialProperty_BuySideData_AgentTwoSplitPercent`
    - `REData_REProperties_ResidentialProperty_BuySideData_AgentTwoSplitAmount`
    - `REData_REProperties_ResidentialProperty_BuySideData_AgentTwoSplitName`

    #### Net Values
    - `REData_REProperties_ResidentialProperty_BuySideData_AgentOneNet`
    - `REData_REProperties_ResidentialProperty_BuySideData_AgentTwoNet`
    - `REData_REProperties_ResidentialProperty_BuySideData_OfficeCommissionNet`

    ### Signer Representative
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_SignerRepresentative_FirstName`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_SignerRepresentative_MiddleName`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_SignerRepresentative_LastName`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_SignerRepresentative_Email`
    - `REData_REProperties_ResidentialProperty_Listing_SalesData_SignerRepresentative_Phone`
  version: '5.1'
servers:
- url: https://ws.zipformplus.com/api
  description: Production
- url: https://api.pre.zipformplus.com/api
  description: Staging/QA
security:
- contextAuth: []
components:
  securitySchemes:
    contextAuth:
      type: apiKey
      in: header
      name: X-Auth-ContextId
      description: Context Id obtained from an authentication endpoint. Must be used
        together with X-Auth-SharedKey.
    sharedKey:
      type: apiKey
      in: header
      name: X-Auth-SharedKey
      description: Shared Key provided by zipLogix to authenticate the partner application.
    externalIdAuth:
      type: apiKey
      in: header
      name: X-Auth-ExternalId
      description: External Id for partners authorized to use the External Id authentication
        scheme. Must be used together with X-Auth-SharedKey.
  parameters:
    transactionId:
      name: transactionId
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: Transaction GUID
    documentId:
      name: documentId
      in: path
      required: true
      schema:
        type: string
      description: Document ID or Form GUID
    templateId:
      name: templateId
      in: path
      required: true
      schema:
        type: string
      description: Template ID
  schemas:
    Transaction:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Transaction GUID
        name:
          type: string
          example: 1060 Mountain St
        status:
          type: string
          enum:
          - active
          - pending
          - closed
          - inactive
          - locked
          example: active
        expiration:
          type: string
          format: date-time
        transactionType:
          type: string
          enum:
          - Listing
          - Purchase
          - Lease
          - LeaseListing
        propertyType:
          type: string
          enum:
          - Residential
          - Commercial
          - Industrial
          - VacantLand
          - MultiUnit
          - FarmAndRanch
          - Condominium
          - ManufacturedHome
          - Coop
          - Unlisted
        hasFiles:
          type: boolean
        created:
          type: string
          format: date-time
        lastUpdated:
          type: string
          format: date-time
        ownerName:
          type: string
        number:
          type: integer
          example: 1033771
        seller:
          type: string
        buyer:
          type: string
        propertyAddress:
          type: string
          description: Full address in one value
        address:
          type: string
        city:
          type: string
        state:
          type: string
        zip:
          type: string
        isSigned:
          type: boolean
          description: Whether the transaction has signed documents
        EncryptedOwnerId:
          type: string
          format: uuid
          description: GUID of the agent who owns this transaction
    DocumentItem:
      type: object
      properties:
        id:
          type: string
          description: Document ID or Form GUID
        name:
          type: string
        description:
          type: string
        contentType:
          type: string
          description: form, PDF, doc, etc.
        version:
          type: string
        signed:
          type: integer
          description: 0=not signed, 1=Docusign, 2=zipLogix Digital Ink, 3=zipLogix
            Digital Ink TouchSign
        size:
          type: integer
          description: Size in bytes (0 for forms)
    Library:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        version:
          type: string
        state:
          type: string
        isActive:
          type: boolean
    Template:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    Team:
      type: object
      properties:
        teamId:
          type: string
        name:
          type: string
        address:
          type: string
        created:
          type: string
          format: date-time
    TitleNote:
      type: object
      properties:
        CreatedDate:
          type: string
          format: date-time
        ReadDate:
          type: string
          format: date-time
        Message:
          type: string
        Publisher:
          type: string
    ContextIdResponse:
      type: object
      properties:
        contextId:
          type: string
          description: Session identifier to be used in subsequent requests
    AuthentisignUrl:
      type: object
      properties:
        url:
          type: string
          format: uri
          description: The Authentisign SSO URL to redirect the user to for signing.
paths:
  "/auth/user":
    post:
      summary: Authenticate Using User Credentials
      description: |-
        Authenticates the partner application and a zipForm® user using username/password or user GUID, and returns a Context Id for use in subsequent requests.

        Optionally supply `LinkExternalId` to link the user's account to a partner external ID.

        **Returns 409** if account linking fails.
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - SharedKey
              properties:
                SharedKey:
                  type: string
                  description: Partner shared key
                UserName:
                  type: string
                  description: zipForm® username (use with Password)
                Password:
                  type: string
                  description: zipForm® password
                UserId:
                  type: string
                  description: zipForm® user GUID (alternative to UserName/Password)
                LinkExternalId:
                  type: string
                  description: Optional. Partner external ID to link to this zipForm®
                    account.
      responses:
        '200':
          description: Authentication successful
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ContextIdResponse"
        '401':
          description: Unauthorized — invalid credentials
        '409':
          description: Account linking failed
  "/auth/external-id":
    post:
      summary: Authenticate Using External Id
      description: Authenticates using the partner's External Id and Shared Key, and
        returns a Context Id.
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - SharedKey
              - ExternalId
              properties:
                SharedKey:
                  type: string
                ExternalId:
                  type: string
      responses:
        '200':
          description: Authentication successful
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ContextIdResponse"
        '401':
          description: Unauthorized
  "/auth/end-session":
    post:
      summary: End Session
      description: Ends the current session identified by the Context Id. Partners
        using Context Id authentication should invoke this when their application
        session ends to destroy the Context Id.
      tags:
      - Authentication
      responses:
        '200':
          description: Session ended successfully
        '401':
          description: Unauthorized
  "/auth/unlink":
    post:
      summary: Unlink Account
      description: Unlinks a partner account (identified by External Id) from its
        associated zipForm® account. The zipForm® account becomes available for linking
        to another partner account.
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - SharedKey
              - ExternalId
              properties:
                SharedKey:
                  type: string
                ExternalId:
                  type: string
      responses:
        '200':
          description: Account unlinked successfully
        '304':
          description: Not Modified — External Id could not be removed
        '401':
          description: Unauthorized — partner not recognized or user not found
    get:
      summary: Unlink Account (GET)
      description: Alternative GET form of the unlink method. Supply SharedKey and
        ExternalId as query parameters.
      tags:
      - Authentication
      security: []
      parameters:
      - in: query
        name: SharedKey
        required: true
        schema:
          type: string
      - in: query
        name: ExternalId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Account unlinked successfully
        '304':
          description: Not Modified
        '401':
          description: Unauthorized
  "/transactions":
    get:
      summary: Get Transaction List
      description: Returns the list of transactions available for the authenticated
        user. Supports optional filter parameters.
      tags:
      - Transactions
      parameters:
      - in: query
        name: since
        schema:
          type: string
          format: date-time
        description: Return transactions created from this date onwards
      - in: query
        name: modifiedSince
        schema:
          type: string
          format: date-time
        description: Return transactions modified from this date onwards
      - in: query
        name: status
        schema:
          type: string
        description: 'Filter by status: active (default), pending, closed, inactive,
          locked, all, all:active, all:pending, all:closed, all:inactive, all:locked'
      - in: query
        name: agentId
        schema:
          type: string
        description: Filter transactions by agent ID (brokerage/team scenarios)
      - in: query
        name: filterBy
        schema:
          type: string
        description: Text filter applied to property address, city, zip, transaction
          name, or buyer/seller name
      - in: query
        name: teamId
        schema:
          type: string
        description: Filter by team ID, or use 'all' for all teams the agent belongs
          to
      - in: query
        name: page
        schema:
          type: integer
      - in: query
        name: pagesize
        schema:
          type: integer
      - in: query
        name: orderby
        schema:
          type: string
          enum:
          - name
          - created
      - in: query
        name: sortorder
        schema:
          type: string
          enum:
          - asc
          - desc
      responses:
        '200':
          description: List of transactions
          content:
            application/json:
              schema:
                type: object
                properties:
                  value:
                    type: array
                    items:
                      "$ref": "#/components/schemas/Transaction"
        '401':
          description: Unauthorized
    post:
      summary: Create Transaction
      description: Creates a new transaction for the authenticated user. `name` is
        required. `data` can include key-value pairs from the Transaction Data Keys
        appendix. `transactionType` and `propertyType` accept string or integer enum
        values.
      tags:
      - Transactions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              properties:
                name:
                  type: string
                  example: 123 Main Street
                status:
                  type: string
                  example: active
                transactionType:
                  type: string
                  enum:
                  - Listing
                  - Purchase
                  - Lease
                  - LeaseListing
                  description: 'Integer values: Listing=0, Purchase=1, Lease=2, LeaseListing=3'
                propertyType:
                  type: string
                  enum:
                  - Residential
                  - Commercial
                  - Industrial
                  - VacantLand
                  - MultiUnit
                  - FarmAndRanch
                  - Condominium
                  - ManufacturedHome
                  - Coop
                  - Unlisted
                  description: 'Integer values: Residential=0, Commercial=1, Industrial=2,
                    VacantLand=3, MultiUnit=4, FarmAndRanch=5, Condominium=6, ManufacturedHome=7,
                    Coop=8, Unlisted=9'
                data:
                  type: object
                  additionalProperties:
                    type: string
                  description: Key-value pairs of transaction data. See Transaction
                    Data Keys in the introduction.
      responses:
        '201':
          description: Transaction created successfully
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Transaction"
        '401':
          description: Unauthorized
  "/transactions/{transactionId}":
    parameters:
    - "$ref": "#/components/parameters/transactionId"
    get:
      summary: Get Transaction Metadata
      description: Returns the metadata for a specific transaction. Useful for a quick
        lookup of a transaction by its GUID.
      tags:
      - Transactions
      responses:
        '200':
          description: Transaction metadata returned successfully
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Transaction"
        '401':
          description: Unauthorized
        '404':
          description: Transaction not found
    delete:
      summary: Delete Transaction
      description: Deletes the specified transaction for the authenticated user.
      tags:
      - Transactions
      responses:
        '200'

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