Skip to content

AcuOps API Reference

Acumatica Customization API endpoints used by AcuOps.

Authentication

POST /entity/auth/login

Establish a session. Returns a session cookie.

{
  "name": "api-user",
  "password": "password",
  "tenant": "TenantName"
}
  • Success: HTTP 204 (No Content), session cookie in Set-Cookie header
  • 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 (not projectContent)
  • Method: POST only (PUT/GET return 404/405)
  • Success: HTTP 200 or 204

POST /CustomizationApi/getProject

Download an existing published package.

{
  "projectName": "MyCustomization"
}
  • Success: HTTP 200, body is base64-encoded .zip content (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: Set true for 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.