AcuOps API Reference¶
Acumatica Customization API endpoints used by AcuOps.
Authentication¶
POST /entity/auth/login¶
Establish a session. Returns a session cookie.
- Success: HTTP 204 (No Content), session cookie in
Set-Cookieheader - Failure: HTTP 401 (bad credentials), HTTP 500 (API Login Limit)
- Retry: On HTTP 500, wait 15s * attempt, up to 5 attempts
POST /entity/auth/logout¶
Release the session.
- No request body required
- Success: HTTP 204
Package Operations¶
POST /CustomizationApi/Import¶
Upload a customization .zip package.
{
"projectName": "MyCustomization",
"projectDescription": "Deployed via AcuOps",
"projectLevel": 0,
"isReplaceIfExists": true,
"projectContentBase64": "<base64-encoded-zip>"
}
- URL is case-sensitive — must be
/CustomizationApi/Import(capital I) - Field name:
projectContentBase64(notprojectContent) - Method: POST only (PUT/GET return 404/405)
- Success: HTTP 200 or 204
POST /CustomizationApi/getProject¶
Download an existing published package.
- Success: HTTP 200, body is base64-encoded
.zipcontent (may be wrapped in quotes) - Decode: Strip surrounding quotes, then base64 decode
Publish Operations¶
POST /CustomizationApi/publishBegin¶
Start publishing one or more projects.
{
"isMergeWithExistingPackages": false,
"isOnlyValidation": false,
"isOnlyDbUpdates": false,
"projectNames": ["MyCustomization", "VARPackage"],
"tenantMode": "Current"
}
projectNames: Array of ALL active projects to publish together (conflict detection)isOnlyValidation: Settruefor dry-run (import + compile, no publish)tenantMode: Always"Current"for standard deploys- Success: HTTP 200 or 204
POST /CustomizationApi/publishEnd¶
Poll for publish completion. Call repeatedly until done.
- Request body: Empty JSON object
{} - Response formats (both are valid):
- Plain text:
"true"(complete) or"false"(still running) - JSON:
{"isCompleted": true}or{"isFailed": true, "log": "..."} - HTTP status: Returns both 200 and 400 for completed responses
- Poll interval: 10 seconds recommended
- Timeout: 600 seconds default (configurable)
Important Notes¶
URL Casing¶
All Customization API URLs are case-sensitive:
- /CustomizationApi/Import (not /customizationapi/import)
- /CustomizationApi/publishBegin (not /CustomizationApi/PublishBegin)
HTTP Methods¶
All endpoints require POST. GET and PUT return 404 or 405.
Session Limits¶
Acumatica licenses limit concurrent API sessions (typically 2-3). If you hit HTTP 500 on login, another session may need to be released first. The deploy scripts implement retry with backoff.
Publishing Restarts the App Pool¶
Publishing a customization project restarts the Acumatica application pool. Schedule deploys outside business hours or coordinate with users.