Trustless Work
  • Welcome
    • Why Escrows Matter
    • ๐Ÿ›ค๏ธOur Journey so Far
      • ๐Ÿค”The Problem: Origins of Trustless Work
      • ๐Ÿ‘พThe team comes together
      • ๐Ÿ’กThe Solution: Escrows
      • ๐Ÿ†Key Milestones
        • ๐ŸŒ DraperU Stellar Astro Hacker House: A Pivotal Moment
        • Launching the API V1 at ETH Pura Vida Hackathon
      • ๐Ÿš€Current Programs
        • ๐ŸŒŸDraperU Embark Program
        • ๐Ÿ’ปOD Hack Campaigns
      • ๐Ÿ› ๏ธVertical Development
      • ๐Ÿ”ฎFuture Vision
  • ๐Ÿ“ŒStart Here
    • โ˜€๏ธAbout Trustless Work
      • Vision and Mission
      • Team
  • โš’๏ธUnderstanding Smart Escrows
    • ๐ŸฅธSmart Escrow Design
      • What does a Smart Escrow "look like"?
      • Roles in Trustless Work
      • Escrow Lifecycle
        • Initiation Phase
        • Funding Phase
        • Complete phase
        • Approval phase
        • Release phase
        • Dispute Resolution
    • ๐Ÿ’ตUSDC: The Stablecoin Powering Trustless Work
    • ๐ŸŒŸStellar & Soroban: The Backbone of Trustless Work
  • ๐Ÿ’ปDeveloper Resources
    • Introduction
    • Schema
    • Types
      • Basic
      • Entities
      • Payloads
      • Responses
      • Errors
    • Quickstart
      • Integration Demo Project
        • Getting Started
        • Configuration
        • Context API
        • Wallet Setup
        • Trustlines
        • Services
        • Helpers
        • Error Handling
        • Forms
          • Initialize Escrow
          • Fund Escrow
          • Get Escrow
          • Get Multiple Escrow Balances
          • Resolve Dispute
          • Change Milestone Status
          • Change Milestone Flag
          • Change Dispute Flag
          • Release Funds
          • Update Escrow
        • UI Components
          • Pages
          • Cards
          • Tabs
          • Utils
    • Authentication
      • Request Api Key
    • API Reference
      • Deploy
        • Initialize Escrow
      • Escrows
        • Fund Escrow
        • Get Escrow
        • Resolve Dispute
        • Change Milestone Status
        • Change Milestone Flag
        • Start Dispute
        • Release Funds
        • Update Escorw
      • Helpers
        • Set Trustline
        • Send Transaction
        • Get Multiple Escrow Balance
    • React Library
      • Getting Started
      • useSendTransaction
      • useGetEscrow
      • useGetMultipleEscrowBalances
      • useInitializeEscrow
      • useUpdateEscrow
      • useFundEscrow
      • useChangeMilestoneApprovedFlag
      • useChangeMilestoneStatus
      • useReleaseFunds
      • useStartDispute
      • useResolveDispute
    • ๐Ÿš€Smart Escrow API
    • ๐ŸงฐEssential Tools for Developers
      • Stellar Wallets
        • Freighter Wallet
        • Albedo Wallet
        • xBull Wallet
        • Rabet Wallet
        • Lobstr Wallet
        • Hana Wallet
        • Additional Resources
        • Troubleshooting & FAQs
      • How to Get Testnet Tokens
  • ๐ŸŒUse Cases by Industry
    • Marketplaces & E-commerce
    • Grants, Bounties, and Hackathons
    • P2P Exchanges and OTC Desks
    • Security Deposits
    • Milestone-based Freelance & Contract Work
    • Crowdfunding & Pre-orders
    • DAO Treasury & Working Group Budgets
    • Education & Online Courses
    • Subscription + Performance-based Retainers
  • ๐Ÿค–Using the dApp
    • Step 1: Accessing the Trustless Work Dapp and Logging In
    • Step 2: Creating a Profile and Requesting an API Key
    • Step 3: Creating an Escrow
    • Step 4: Funding an Escrow
    • Step 5: Marking a Milestone as Done โœ…
    • Step 6: Approving the Milestone
    • Step 7: Releasing the Payment
    • Resolving Disputes
  • ๐Ÿดโ€โ˜ ๏ธCommunity
    • ๐ŸŒŽSpotlight: Kindfi
    • ๐Ÿ›ฃ๏ธRoadmap: The Journey Ahead
    • Contributor's Guide
    • ๐Ÿ“‚Open-Source Templates & Developer Tools
  • โœ’๏ธBackground & Theory
    • ๐Ÿ“˜Core Concepts & Escrow Glossary
    • ๐ŸŽ’Historical Context
      • ๐Ÿ“œEscrow History:
        • ๐Ÿ—ฟAncient to Colonial Era
        • ๐ŸฆBanking Era (19th - 20th Century)
        • ๐Ÿ’ปThe Digital Era and Online Escrow
      • โ›“๏ธBlockchain Era: Smart Escrows
  • Links
    • โš’๏ธTrustless Work dApp
    • ๐ŸŒTrustless Work Website
    • ๐Ÿ“ฃTelegram Chat
    • ๐Ÿ’ŽOnly Dust Profile
    • ๐Ÿ‘ฉโ€๐Ÿ’ปSwagger for API
    • ๐Ÿ“œGithub
  • ๐Ÿ“ขAppendices
    • Contact and Support
    • Notion for Startups
    • Meru
Powered by GitBook
LogoLogo

Links

  • Website
On this page

Was this helpful?

Export as PDF
  1. Developer Resources
  2. API Reference
  3. Escrows

Update Escorw

This endpoint allows you to change the properties of an escrow as long as a series of requirements are met, which will be mentioned in this section.

Requirements to use:

  1. Only the entity with the platform role has permissions to execute this endpoint

  2. You cannot change the properties of an escrow which already has an approved milestone

  3. You cannot change the properties of an escrow which already has funds

  4. You cannot change the properties of an escrow which is in dispute.

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Roles:

Name
Type
Description

approver

string

Address of the entity requiring the service.

serviceProvider

string

Address of the entity providing the service.

plataformAddress

string

Address of the entity that owns the escrow

releaseSigner

string

Address of the user in charge of releasing the escrow funds to the service provider.

disputeResolver

string

Address in charge of resolving disputes within the escrow.

receiver

string

Address where escrow proceeds will be sent to

Milestone:

Name
Type
Description

description

string

Text describing the function of the milestone.

status

string

Milestone status. Ex: Approved, In dispute, etc...

approvedFlag

boolean

Flag indicating whether a milestone has been approved by the approver.

Flags

Name
Type
Description

disputeFlag

boolean

Flag indicating that an escrow is in dispute.

releaseFlag

boolean

Flag indicating that escrow funds have already been released.

resolvedFlag

boolean

Flag indicating that a disputed escrow has already been resolved.

Trustline

Name
Type
Description

address

string

Public address establishing permission to accept and use a specific token.

decimals

number

Number of decimals into which the token is divided.

Open API

What this Endpoint returns?

This endpoint returns the transaction unsigned so that the transaction can be signed by means of a customer wallet.

Use Example:

import axios from "axios";

const http = axios.create({
  baseURL: "https://dev.api.trustlesswork.com",
  timeout: 10000,
  headers: {
    "Content-Type": "application/json",
    Authorization: `Bearer your_api_key`,
  },
});

export const useExample = async () => {
    // Get the signer address
    const { address } = await kit.getAddress();

    const response = await http.put(
      "/escrow/update-escrow-by-contract-id",
      {
        // body requested for the endpoint
      },
    ); 
    
    // Get the unsigned transaction hash
    const { unsignedTransaction } = response.data;

    // Sign the transaction by wallet
    const { signedTxXdr } = await signTransaction(unsignedTransaction, {
      address,
      networkPassphrase: WalletNetwork.TESTNET,
    });

    // Send the transaction to Stellar Network
    const tx = await http.post("/helper/send-transaction", {
      signedXdr: signedTxXdr,
    });

    const { data } = tx;

    return data;
}
PreviousRelease FundsNextHelpers

Last updated 16 days ago

Was this helpful?

๐Ÿ’ป
  • Requirements to use:
  • Headers
  • Roles:
  • Milestone:
  • Flags
  • Trustline
  • Open API
  • PUT/escrow/update-escrow-by-contract-id
  • What this Endpoint returns?
  • Use Example:
put
Body
signerstringRequired

Entity that signs the transaction that deploys and initializes the escrow

Example: GSIGN...XYZ
contractIdstringRequired

ID (address) that identifies the escrow contract

Example: CAZ6UQX7...
escrowall ofRequired

Escrow data to update

Responses
200
This endpoint returns an unsigned transaction in XDR format. This XDR is then used to sign the transaction using the โ€œ/helper/send-transactionโ€ endpoint.
application/json
400
Bad request
401
Unauthorized access
429
Too Many Requests
500

Possible errors:

  • Escrow not found
  • Only the platform address should be able to execute this function
  • You can't change the escrow properties after the milestone is approved
  • Escrow has funds
  • Escrow has been opened for dispute resolution
  • An unexpected error occurred
application/json
put
PUT /escrow/update-escrow-by-contract-id HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 885

{
  "signer": "GAPPROVER1234567890...",
  "contractId": "CAZ6UQX7...",
  "escrow": {
    "signer": "GAPPROVER1234567890...",
    "engagementId": "ENG12345",
    "title": "Project Title",
    "description": "This is a detailed description of the project.",
    "roles": {
      "approver": "GAPPROVER1234567890...",
      "serviceProvider": "GAPPROVER1234567890...",
      "platformAddress": "GAPPROVER1234567890...",
      "releaseSigner": "GAPPROVER1234567890...",
      "disputeResolver": "GAPPROVER1234567890...",
      "receiver": "GAPPROVER1234567890..."
    },
    "amount": "1000",
    "platformFee": "50",
    "milestones": [
      {
        "description": "test1",
        "status": "pending",
        "evidence": "Any evidence that the milestone is completed"
      },
      {
        "description": "test2",
        "status": "pending",
        "evidence": "Any evidence that the milestone is completed"
      }
    ],
    "flags": {
      "disputeFlag": false,
      "releaseFlag": true,
      "resolvedFlag": false
    },
    "receiverMemo": 456789,
    "trustline": {
      "address": "GAPPROVER1234567890...",
      "decimals": 10000000
    }
  }
}
{
  "status": "SUCCESS",
  "unsignedTransaction": "AAAAAgAAAAAtWsgedQ...."
}