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
    • 🚀Smart Escrow API
    • Quickstart
      • Integration Demo Project
        • Getting Started
        • Entities
        • 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
      • dApp locally
      • API Fundamental Code
    • API Reference
      • Introduction
      • Authentication
        • Request Api Key
      • Deploy
        • Initialize Escrow
      • Escrows
        • Schema
        • Fund Escrow
        • Get Escrow by Contract ID
        • Resolve Dispute
        • Change Milestone Status
        • Change Milestone Flag
        • Change Dispute Flag
        • Release Funds
        • Update escrow properties
      • Helpers
        • Set Trustline
        • Send Transaction
        • Get Multiple Escrow Balance
    • 🧰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. Deploy

Initialize Escrow

Deploy the escrow contract and define the escrow properties.

Headers

Name
Value

Content-Type

application/json

Authorization

Bearer <token>

Milestone

Name
Type
Description

description

string

Text describing the function of the milestone

status

string (Default value: "peding")

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

approvedFlag

boolean (Default value: false)

Flag indicating whether a milestone has been approved by the approver

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

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();

    // Execute the endpoint
    const response = await http.post(
      "/deployer/invoke-deployer-contract",
      {
        // 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,
      returnEscrowDataIsRequired: true,
    });

    const { data } = tx;

    return data; 
}
PreviousDeployNextEscrows

Last updated 9 days ago

Was this helpful?

💻
  • Headers
  • Milestone
  • Roles:
  • Trustline:
  • Open API
  • POST/deployer/invoke-deployer-contract
  • What this Endpoint returns?
  • Use Example:
post
Body
signerstringRequired

Entity that signs the transaction that deploys and initializes the escrow

Example: GABC...XYZ
engagementIdstringRequired

Unique identifier for the escrow

Example: ENG12345
titlestringRequired

Name of the escrow

Example: Escrow Test
descriptionstringRequired

Text describing the function of the escrow

Example: Escrow Test description
rolesobject[]Required

Roles that make up the escrow structure

amountstringRequired

Amount to be transferred upon completion of escrow milestones

Example: 1000
platformFeestringRequired

Commission that the platform will receive when the escrow is completed

Example: 5 -> 5%
milestonesobject[]Required

Objectives to be completed to define the escrow as completed. (In this case it is not necessary to send the properties “approvedFlag” and “status” inside the objects of these milestones)

receiverMemonumberOptional

Field used to identify the recipient's address in transactions through an intermediary account. This value is included as a memo in the transaction and allows the funds to be correctly routed to the wallet of the specified recipient

Example: 123456
trustlineobject[]Required

Information on the trustline that will manage the movement of funds in escrow

Responses
201
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:

  • Amount cannot be zero
  • Escrow already initialized
  • An unexpected error occurred
application/json
post
POST /deployer/invoke-deployer-contract HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 631

{
  "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": "Initial phase of the project"
    },
    {
      "description": "Completion of design work"
    }
  ],
  "trusline": {
    "address": "GAPPROVER1234567890...",
    "decimals": 10000000
  },
  "receiverMemo": 456789
}
{
  "status": "SUCCESS",
  "unsignedTransaction": "AAAAAgAAAAAtWsgedQ...."
}