--- 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: X-Auth-SharedKey: ``` ### Via Query String (Context Id) ``` ?ContextId=&SharedKey= ``` ### Via Request Headers (External Id) ``` X-Auth-ExternalId: X-Auth-SharedKey: ``` ### Via Query String (External Id) ``` ?ExternalId=&SharedKey= ``` ## 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): ``` ?page=&pagesize=&orderby=&sortorder= ``` | 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': description: Transaction deleted successfully '401': description: Unauthorized '404': description: Transaction not found "/transactions/{transactionId}/data": parameters: - "$ref": "#/components/parameters/transactionId" get: summary: Get Transaction Data description: Returns the data (key-value pairs) for a given transaction. See the Transaction Data Keys appendix in the introduction for the full list of available keys. tags: - Transactions responses: '200': description: Transaction data returned successfully content: application/json: schema: type: object additionalProperties: type: string '401': description: Unauthorized '404': description: Transaction not found post: summary: Set Transaction Data description: Sets the data for a given transaction. The `mode` parameter controls whether supplied data is merged with existing data (default) or replaces it entirely. tags: - Transactions parameters: - in: query name: mode schema: type: string enum: - Merge - Replace default: Merge description: Merge (default) adds to existing data; Replace removes existing data and sets the new values. requestBody: required: true content: application/json: schema: type: object additionalProperties: type: string description: Key-value pairs of transaction data. See Transaction Data Keys in the introduction. responses: '200': description: Transaction data updated successfully '401': description: Unauthorized '404': description: Transaction not found "/transactions/{transactionId}/apply/{templateId}": parameters: - "$ref": "#/components/parameters/transactionId" - "$ref": "#/components/parameters/templateId" get: summary: Apply Template to Transaction description: Applies a template to a specified transaction. tags: - Templates responses: '200': description: Template applied successfully '403': description: Forbidden '500': description: Internal server error "/transactions/{transactionId}/forms": parameters: - "$ref": "#/components/parameters/transactionId" get: summary: Get Form List description: Returns the list of forms for a given transaction. Forms are distinguished by `contentType` having a value of `form`. tags: - Forms and Documents responses: '200': description: Form list returned successfully content: application/json: schema: type: object properties: value: type: array items: "$ref": "#/components/schemas/DocumentItem" '401': description: Unauthorized '404': description: Transaction not found "/transactions/{transactionId}/documents": parameters: - "$ref": "#/components/parameters/transactionId" get: summary: Get Document List description: Returns the list of documents and forms for a given transaction, in the same order as the zipForm® Plus UI. Use `excludeforms=true` to return only non-form documents. tags: - Forms and Documents parameters: - in: query name: excludeforms schema: type: boolean description: If true, only non-form documents are returned - in: query name: page schema: type: integer - in: query name: pagesize schema: type: integer - in: query name: orderby schema: type: string enum: - name - ContentType - in: query name: sortorder schema: type: string enum: - asc - desc responses: '200': description: Document list returned successfully content: application/json: schema: type: object properties: value: type: array items: "$ref": "#/components/schemas/DocumentItem" '204': description: No content — transaction has no documents '401': description: Unauthorized '404': description: Transaction not found "/transactions/{transactionId}/documents/form": parameters: - "$ref": "#/components/parameters/transactionId" post: summary: Add Form to Transaction description: Adds a form (by its GUID) to a transaction. Form GUIDs are obtained from the Get Library Forms endpoint. tags: - Forms and Documents requestBody: required: true content: application/json: schema: type: object required: - id properties: id: type: string format: uuid description: Form GUID from the library responses: '201': description: Form added successfully. Returns the form GUID. content: application/json: schema: type: string format: uuid '401': description: Unauthorized '404': description: Transaction or form not found "/transactions/{transactionId}/documents/file": parameters: - "$ref": "#/components/parameters/transactionId" post: summary: Upload File Document description: |- Uploads a file document to a transaction. If `Id` is omitted, a new document is created at version 1. If `Id` is provided and matches an existing document, a new version is added. **Supported MIME types:** `application/pdf`, `application/msword`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `application/vnd.ms-excel`, `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`, `image/jpeg`, `image/png`, `image/bmp`, `image/gif` tags: - Forms and Documents parameters: - in: query name: Name required: true schema: type: string description: Document name - in: query name: Description required: true schema: type: string description: Document description - in: query name: ContainerId schema: type: string description: Optional folder ID to store the document in - in: query name: Id schema: type: string description: Optional document ID. If provided and found, adds a new version. requestBody: required: true content: application/pdf: schema: type: string format: binary application/msword: schema: type: string format: binary image/jpeg: schema: type: string format: binary responses: '201': description: Document uploaded. Returns the endpoint URL for the uploaded document. '401': description: Unauthorized '404': description: Document ID provided but not found '415': description: Unsupported media type "/transactions/{transactionId}/documents/{documentId}": parameters: - "$ref": "#/components/parameters/transactionId" - "$ref": "#/components/parameters/documentId" get: summary: Get Document Contents description: |- Returns the content of the specified form or document. If a form GUID is specified, returns it as a PDF. Otherwise returns the document in its existing format. Optionally append `/` to the URL to specify the form version or document version number. tags: - Forms and Documents responses: '200': description: Document contents returned as a byte stream '401': description: Unauthorized '403': description: Blank PDF Not Allowed — form has no user-entered contents '404': description: Document not found delete: summary: Delete Document description: Deletes the specified form or document from the transaction. tags: - Forms and Documents responses: '200': description: Document deleted successfully '401': description: Unauthorized '404': description: Document not found "/transactions/{transactionId}/documents/{documentId}/meta": parameters: - "$ref": "#/components/parameters/transactionId" - "$ref": "#/components/parameters/documentId" get: summary: Get Document Metadata description: 'Returns the metadata associated with a form or document. For forms, `size` is always 0. `signed` values: 0=not signed, 1=Docusign, 2=zipLogix Digital Ink, 3=zipLogix Digital Ink TouchSign.' tags: - Forms and Documents responses: '200': description: Document metadata returned successfully content: application/json: schema: "$ref": "#/components/schemas/DocumentItem" '401': description: Unauthorized '404': description: Document not found "/transactions/{transactionId}/documents/{documentId}/hash": parameters: - "$ref": "#/components/parameters/transactionId" - "$ref": "#/components/parameters/documentId" get: summary: Get Form Hash description: Returns an MD5 hash of the form, calculated upon PDF generation. Useful for determining whether a form has changed since it was last retrieved. tags: - Forms and Documents responses: '200': description: MD5 hash returned content: text/plain: schema: type: string example: a933e383fcaf699a8041497bca7654a7 '401': description: Unauthorized '404': description: Form not found "/transactions/{transactionId}/title-order-status/{status}": parameters: - "$ref": "#/components/parameters/transactionId" - name: status in: path required: true schema: type: string enum: - Pending - Delivered - Open - Closed - Cancelled - ClearCleared description: New title order status post: summary: Update Title Order Status description: Allows a title partner to update the status of a title order associated with a transaction. tags: - Title Integration responses: '200': description: Title order status updated successfully '401': description: Unauthorized '404': description: Transaction not found "/transactions/{transactionId}/title-order-note": parameters: - "$ref": "#/components/parameters/transactionId" post: summary: Add Note to Title Order description: Allows a title partner to add a note to the title order associated with a transaction. tags: - Title Integration requestBody: required: true content: application/json: schema: type: object required: - message properties: message: type: string example: Submitted order responses: '200': description: Note added successfully '401': description: Unauthorized '404': description: Transaction not found get: summary: Retrieve All Title Order Notes description: Retrieves all title notes associated with a transaction. tags: - Title Integration responses: '200': description: Title order notes returned successfully content: application/json: schema: type: array items: "$ref": "#/components/schemas/TitleNote" '401': description: Unauthorized '404': description: Transaction not found "/agents/libraries": get: summary: Get Agent Libraries description: Returns the list of form libraries available to the authenticated user. Each user may have access to one or more libraries through their entitlements or purchases. tags: - Form Libraries parameters: - in: query name: page schema: type: integer - in: query name: pagesize schema: type: integer - in: query name: orderby schema: type: string enum: - name - state - in: query name: sortorder schema: type: string enum: - asc - desc responses: '200': description: Library list returned successfully content: application/json: schema: type: object properties: value: type: array items: "$ref": "#/components/schemas/Library" '401': description: Unauthorized "/libraries/{libraryId}/{libraryName}/{libraryVersion}": parameters: - name: libraryId in: path required: true schema: type: string description: Library ID - name: libraryName in: path required: true schema: type: string description: Library Name - name: libraryVersion in: path required: true schema: type: string description: Library Version get: summary: Get Library Forms description: Returns the list of forms available in a specific library. Since this method is about forms, `contentType` always has a value of `form` in the response. tags: - Form Libraries parameters: - in: query name: page schema: type: integer - in: query name: pagesize schema: type: integer - in: query name: orderby schema: type: string enum: - name - ContentType - in: query name: sortorder schema: type: string enum: - asc - desc responses: '200': description: Library forms returned successfully content: application/json: schema: type: object properties: value: type: array items: "$ref": "#/components/schemas/DocumentItem" '401': description: Unauthorized '404': description: Library not found "/templates": get: summary: Get List of Templates description: Returns the list of templates available to the authenticated user. Optionally filter by office using the path `/templates/`. tags: - Templates responses: '200': description: Template list returned successfully content: application/json: schema: type: array items: "$ref": "#/components/schemas/Template" '401': description: Unauthorized '403': description: Forbidden "/teams": post: summary: Get List of Teams for an Agent description: Returns the list of teams the authenticated agent belongs to. A team may be a standalone team or a brokerage team. Returns an empty response if the agent is not part of any team. tags: - Teams responses: '200': description: Team list returned successfully content: application/json: schema: type: array items: "$ref": "#/components/schemas/Team" '401': description: Unauthorized "/transactions/{transactionId}/get-authentisign-url": parameters: - "$ref": "#/components/parameters/transactionId" get: summary: Create Signing Packet description: Generates an Authentisign 2 (AS2) SSO signing URL for the specified transaction. Builds a signing session using the authenticated member's profile, the specified transaction, and the provided document list and packet name. The returned URL can be used to redirect the user directly into the Authentisign signing experience. tags: - Authentisign parameters: - name: docList in: query required: true description: Comma-separated list of form or document IDs to include in the signing packet. schema: type: string example: form-id-1,form-id-2,doc-id-3 - name: packetName in: query required: true description: The name to assign to the Authentisign e-sign packet. schema: type: string example: Purchase Agreement Signing responses: '200': description: Signing URL generated successfully. content: application/json: schema: "$ref": "#/components/schemas/AuthentisignUrl" example: url: https://cloud.authentisign.com/sso?sso=eyJhbGci...&signingId=97757ef1-2a4c-ee11-a3f1-6045bddacb97&redirectUrl=https%3a%2f%2fzipformplus.com%2fdefault.aspx '400': description: Bad request. Missing or invalid parameters. '401': description: Unauthorized. '404': description: Transaction not found. tags: - name: Authentication description: Authenticate partner applications and users. Obtain a Context Id for use in all other requests. - name: Transactions description: Create, retrieve, update, and delete transactions and their associated data. - name: Forms and Documents description: Manage forms and file documents within transactions. - name: Form Libraries description: Browse available form libraries and the forms within them. - name: Templates description: List and apply transaction templates. - name: Teams description: Manage team-based transaction access for agents in brokerage or team scenarios. - name: Title Integration description: Allow title partners to update title order status and manage notes on transactions. - name: Authentisign description: Endpoints for creating and managing Authentisign e-signing sessions within transactions.