PSA/docs/api/api_getting_started_guide.md
Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

5.4 KiB

API Getting Started Guide

This guide will help you get started with using the Alga PSA APIs. It's designed for API consumers who want to integrate with our system.

Note: This document describes pre-release APIs. Many features are not yet available, and APIs are subject to change.

1. Introduction

The Alga PSA APIs provide programmatic access to our Professional Services Automation platform. You can use these APIs to:

  • Manage tenants and their configurations
  • Access and update business data
  • Automate workflows
  • Integrate with your existing systems

Our APIs follow REST principles and use JSON for request/response payloads. All API access is over HTTPS, and all data is sent and received as JSON.

📝 Note: The Alga PSA hosted environment is available at algapsa.com. If you are running an on-premise installation, replace this with your configured domain.

2. Obtaining API Access

Prerequisites

  • An active Alga PSA account
  • Appropriate permissions to generate API keys

Generating an API Key

API keys can be generated through our web interface:

  1. Log in to your Alga PSA account
  2. Click on your profile in the top-right corner
  3. Navigate to your User Profile settings
  4. Scroll down to the "API Keys" section
  5. Click "Generate New API Key"
  6. Provide a description (e.g., "Integration Testing")
  7. Optionally set an expiration date
  8. Save the generated API key securely - it will only be shown once and cannot be retrieved later

3. Authentication

All API requests must include your API key in the x-api-key header:

GET /api/v1/endpoint
Host: algapsa.com
x-api-key: your-api-key-here

Example using cURL:

curl -H "x-api-key: your-api-key-here" https://algapsa.com/api/v1/endpoint

Example using JavaScript/Node.js:

const response = await fetch('https://algapsa.com/api/v1/endpoint', {
  headers: {
    'x-api-key': 'your-api-key-here'
  }
});

Example using Python:

import requests

headers = {
    'x-api-key': 'your-api-key-here'
}
response = requests.get('https://algapsa.com/api/v1/endpoint', headers=headers)

4. Making Your First API Call

Let's verify your API access by making a simple request:

curl -H "x-api-key: your-api-key-here" https://algapsa.com/api/health

Expected successful response:

{
  "status": "ok",
  "version": "1.0.0"
}

5. Understanding Responses

Success Responses

Successful responses will have a 2xx status code and return JSON data:

{
  "data": {
    "id": "123",
    "name": "Example Resource"
  }
}

Error Responses

Error responses will have a 4xx or 5xx status code and include error details:

{
  "error": {
    "message": "Invalid API key",
    "code": "AUTH001"
  }
}

Common HTTP Status Codes:

  • 200: Success
  • 201: Created
  • 400: Bad Request
  • 401: Unauthorized (invalid or missing API key)
  • 403: Forbidden (valid API key but insufficient permissions)
  • 404: Not Found
  • 429: Too Many Requests
  • 500: Internal Server Error

6. Available APIs

Community Edition APIs

Our Community Edition includes core functionality APIs for:

  • Asset Management
  • Billing
  • Companies/Clients
  • Contacts
  • Documents
  • Projects
  • Support Ticketing
  • Time Management

Enterprise Edition APIs

Enterprise Edition includes additional APIs for:

  • Tenant Provisioning
  • Advanced Workflows
  • Custom Integrations

For detailed API documentation, refer to:

7. Best Practices

Security

  • Keep your API keys secure and never share them
  • Rotate API keys periodically
  • Use separate API keys for different integrations
  • Set appropriate expiration dates for API keys

Performance

  • Implement proper error handling
  • Cache responses when appropriate
  • Handle rate limits gracefully
  • Use pagination for large data sets

Integration Tips

  • Start with a test environment
  • Implement proper logging
  • Set up monitoring for API usage
  • Keep track of API versions and changes

8. Rate Limiting

To ensure fair usage and system stability:

  • Implement exponential backoff when encountering rate limits
  • Watch for 429 (Too Many Requests) status codes
  • Consider implementing request queuing for high-volume operations

Example handling of rate limits:

async function makeRequest(url, apiKey, retries = 3) {
  for (let i = 0; i < retries; i++) {
    try {
      const response = await fetch(url, {
        headers: { 'x-api-key': apiKey }
      });
      
      if (response.status === 429) {
        // Wait for 2^i seconds before retrying
        await new Promise(resolve => 
          setTimeout(resolve, Math.pow(2, i) * 1000)
        );
        continue;
      }
      
      return await response.json();
    } catch (error) {
      if (i === retries - 1) throw error;
    }
  }
}

9. Support and Resources

  • Documentation: Visit our API Overview for detailed documentation
  • Support: Contact our API support team at api-support@algapsa.com
  • Updates: Subscribe to our API changelog for updates
  • Community: Join our developer community for discussions and best practices

10. Next Steps

  1. Generate your API key
  2. Make your first API call to verify access
  3. Review the detailed API documentation
  4. Start building your integration
  5. Monitor your API usage
  6. Join our developer community

Remember to always test your integration thoroughly in a non-production environment before deploying to production.