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

213 lines
5.4 KiB
Markdown

# 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:
```http
GET /api/v1/endpoint
Host: algapsa.com
x-api-key: your-api-key-here
```
Example using cURL:
```bash
curl -H "x-api-key: your-api-key-here" https://algapsa.com/api/v1/endpoint
```
Example using JavaScript/Node.js:
```javascript
const response = await fetch('https://algapsa.com/api/v1/endpoint', {
headers: {
'x-api-key': 'your-api-key-here'
}
});
```
Example using Python:
```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:
```bash
curl -H "x-api-key: your-api-key-here" https://algapsa.com/api/health
```
Expected successful response:
```json
{
"status": "ok",
"version": "1.0.0"
}
```
## 5. Understanding Responses
### Success Responses
Successful responses will have a 2xx status code and return JSON data:
```json
{
"data": {
"id": "123",
"name": "Example Resource"
}
}
```
### Error Responses
Error responses will have a 4xx or 5xx status code and include error details:
```json
{
"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:
- [API Overview](api_overview.md)
- [Tenant Provisioning API](tenant_provisioning_api.md)
## 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:
```javascript
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](api_overview.md) 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.