API Documentation

List Projects

GET /api/v1/projects

Get a paginated list of decentralized identity projects and consortia. Includes basic information about each project along with managing entity details and scoring metrics. In depth details for each project or Consortia can be queried by ID using /api/v1/projects/{id}

Request

Query Parameters

Parameter Type Required Default Description
page integer No 1 Page number (1-indexed)
per_page integer No 20 Results per page (1-100)
q string No - Search/filter text for project names
type string No - Filter by project type: "DID Project" or "Consortium"

Example Requests

bash
# Get first page of projects
curl -X GET "https://www.weboftrust.org/api/v1/projects" \
  -H "X-API-Key: YOUR_API_KEY"

# Search for projects containing "identity"
curl -X GET "https://www.weboftrust.org/api/v1/projects?q=identity" \
  -H "X-API-Key: YOUR_API_KEY"

# Get only consortia, 50 per page
curl -X GET "https://www.weboftrust.org/api/v1/projects?type=Consortium&per_page=50" \
  -H "X-API-Key: YOUR_API_KEY"

# Get page 3 of results
curl -X GET "https://www.weboftrust.org/api/v1/projects?page=3&per_page=20" \
  -H "X-API-Key: YOUR_API_KEY"

Response

Success Response (200 OK)

Response Headers

Header Value Description
X-License CC-BY-4.0 License identifier
X-Attribution Web of Trust Map - Key State Capital Required attribution
Cache-Control public, max-age=30, s-maxage=120, stale-while-revalidate=600 Caching directives

Response Schema

typescript
interface ProjectListResponse {
  data: ProjectSummary[];
  pagination: {
    page: number;       // Current page (1-indexed)
    per_page: number;   // Items per page
    total: number;      // Total number of projects
    total_pages: number; // Total number of pages
  };
}

interface ProjectSummary {
  id: number;
  title: string;
  type: "DID Project" | "Consortium";
  website?: string;
  logo_url?: string;  // Full URL to project logo
  status?: "Announced" | "Pilot" | "Launched" | "Discontinued" | "Active" | "Inactive";
  launch_date?: string;
  announcement_date?: string;
  mission_statement?: string;
  country?: {             // Country information from managing entity
    id: number;
    name: string;
    code: string;         // ISO 3166-1 alpha-2 code
  };
  region?: string;        // Geographic region name
  managing_entity?: {
    id: number;
    name: string;
  };
  stats: {
    total_links: number;  // Total number of relationships
    score: number;       // Weighted importance score
  };
}

Example Response

json
{
  "data": [
    {
      "id": 118,
      "title": "TradeTrust",
      "type": "DID Project",
      "website": "https://www.tradetrust.io/",
      "logo_url": "https://weboftrust.org/icons/tradetrust.io.webp",
      "status": "Launched",
      "launch_date": "2019",
      "announcement_date": "2019",
      "mission_statement": "TradeTrust is a digital utility that comprises a set of globally-accepted standards and frameworks that connects governments and businesses to a public blockchain.",
      "country": {
        "id": 167,
        "name": "Singapore",
        "code": "SG"
      },
      "region": "Southeast Asia",
      "managing_entity": {
        "id": 36,
        "name": "Infocomm Media Development Authority"
      },
      "stats": {
        "total_links": 85,
        "score": 12.5
      }
    },
    {
      "id": 325,
      "title": "EU Digital Identity Wallet",
      "type": "DID Project",
      "website": "https://ec.europa.eu/digital-building-blocks/sites/display/EUDIGITALIDENTITYWALLET/EU+Digital+Identity+Wallet+Home",
      "logo_url": null,
      "status": "Pilot",
      "launch_date": null,
      "announcement_date": "2021",
      "mission_statement": "The European Digital Identity Wallet will enable citizens to identify and authenticate online across the EU.",
      "country": null,
      "region": null,
      "managing_entity": {
        "id": 649,
        "name": "European Commission"
      },
      "stats": {
        "total_links": 122,
        "score": 18.7
      }
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 2,
    "total": 446,
    "total_pages": 223
  }
}

Error Responses

400 Bad Request

Invalid query parameters

json
{
  "error": {
    "code": "invalid_parameter",
    "message": "Invalid page parameter"
  }
}

500 Internal Server Error

json
{
  "error": {
    "code": "internal_error",
    "message": "Failed to fetch projects"
  }
}

Field Descriptions

Project Fields

  • status: Current project status
    • Announced - Project has been announced but not launched
    • Pilot - Project is in pilot/testing phase
    • Launched - Project is live and operational
    • Discontinued - Project has been shut down
    • Active - Consortium is active
    • Inactive - Consortium is inactive
  • logo_url: Automatically derived from website domain. Cached and optimized WebP format
  • region: Geographic region based on the project's headquarters country
  • stats.score: Calculated based on number and quality of connections to other nodes in the network

Pagination

  • Default page size is 20 items
  • Maximum page size is 100 items
  • Pages are 1-indexed (first page is page=1)
  • Total count includes all matching projects (considering filters)

Performance Tips

  • Results are cached at the edge
  • Use smaller page sizes for faster response times
  • Consider using search parameter to reduce result set
  • Logo URLs point to optimized WebP images for fast loading