Stitchflow
Targetprocess logo

Targetprocess User Management API Guide

API workflow

How to automate user lifecycle operations through APIs with caveats that matter in production.

UpdatedMar 16, 2026

Summary and recommendation

Targetprocess exposes a REST API v1 at https://{account}.tpondemand.com/api/v1 supporting full CRUD on user objects.

Authentication accepts an Access Token passed as a Bearer header (preferred) or as an access_token query parameter - avoid the query parameter in production as it exposes credentials in server logs.

No SCIM endpoint exists;

all programmatic provisioning must go through the REST API.

There are no published rate limits and no rate-limit response headers, so callers must implement conservative retry logic without server guidance.

API quick reference

Has user APIYes
Auth methodAPI Access Token (Bearer) or Basic Auth (username:password). Token-based auth is recommended.
Base URLOfficial docs
SCIM availableNo
SCIM plan requiredEnterprise

Authentication

Auth method: API Access Token (Bearer) or Basic Auth (username:password). Token-based auth is recommended.

Setup steps

  1. Log in to your Targetprocess account.
  2. Navigate to your user profile > Settings > Access Tokens.
  3. Generate a new Access Token and copy it.
  4. Pass the token as a query parameter: ?access_token={token}, or as an Authorization header: 'Authorization: Bearer {token}'.
  5. Alternatively, use HTTP Basic Auth with username and password (less recommended for automation).

User object / data model

Field Type Description On create On update Notes
Id integer Unique user identifier auto-assigned read-only System-generated
FirstName string User's first name required optional
LastName string User's last name required optional
Email string User's email address required optional Must be unique
Login string Username for login required optional
Password string User password (write-only) required (non-SSO) optional Not returned in GET responses
Role object User's system role (e.g., Developer, Administrator) optional optional Reference object with Id and Name
IsActive boolean Whether the user account is active optional optional Defaults to true
IsAdministrator boolean Whether the user has admin privileges optional optional
Teams array Teams the user belongs to optional optional Collection of Team references
Avatar object User avatar image reference optional optional
CreateDate datetime Account creation timestamp auto-assigned read-only ISO 8601
ModifyDate datetime Last modification timestamp auto-assigned auto-assigned ISO 8601
DeleteDate datetime Soft-delete timestamp null set on delete Null if active
Kind string Entity kind discriminator auto read-only Always 'GeneralUser' for users

Core endpoints

List Users

  • Method: GET
  • URL: https://{account}.tpondemand.com/api/v1/Users?format=json&take=25&skip=0
  • Watch out for: Deleted users are excluded by default. Use ?where=(DeleteDate is null) or include IsActive filter explicitly.

Request example

GET /api/v1/Users?format=json&take=25&skip=0&access_token={token}

Response example

{
  "Items": [
    {"Id":1,"FirstName":"Jane","LastName":"Doe","Email":"jane@example.com","IsActive":true}
  ],
  "Next":"..."
}

Get User by ID

  • Method: GET
  • URL: https://{account}.tpondemand.com/api/v1/Users/{id}?format=json
  • Watch out for: Use the ?include=[Fields] parameter to retrieve non-default fields such as Teams or Role.

Request example

GET /api/v1/Users/42?format=json&access_token={token}

Response example

{
  "Id":42,
  "FirstName":"Jane",
  "LastName":"Doe",
  "Email":"jane@example.com",
  "Login":"jane.doe",
  "IsActive":true,
  "Role":{"Id":3,"Name":"Developer"}
}

Create User

  • Method: POST
  • URL: https://{account}.tpondemand.com/api/v1/Users?format=json
  • Watch out for: Password is required for non-SSO accounts. For SSO environments with JIT provisioning, users are created on first login and manual creation may conflict.

Request example

POST /api/v1/Users?format=json
Content-Type: application/json
{
  "FirstName":"John",
  "LastName":"Smith",
  "Email":"john@example.com",
  "Login":"john.smith",
  "Password":"SecurePass1!"
}

Response example

{
  "Id":99,
  "FirstName":"John",
  "LastName":"Smith",
  "Email":"john@example.com",
  "IsActive":true
}

Update User

  • Method: POST
  • URL: https://{account}.tpondemand.com/api/v1/Users/{id}?format=json
  • Watch out for: Targetprocess REST API v1 uses POST (not PUT/PATCH) for updates to existing entities. Include only fields to be changed.

Request example

POST /api/v1/Users/99?format=json
Content-Type: application/json
{
  "FirstName":"Jonathan",
  "IsActive":false
}

Response example

{
  "Id":99,
  "FirstName":"Jonathan",
  "IsActive":false
}

Delete User

  • Method: DELETE
  • URL: https://{account}.tpondemand.com/api/v1/Users/{id}?format=json
  • Watch out for: Deletion is a soft delete; the user record is retained with a DeleteDate set. Deleted users cannot log in but data is preserved.

Request example

DELETE /api/v1/Users/99?format=json&access_token={token}

Response example

HTTP 200 OK
{}

Filter Users by Email

  • Method: GET
  • URL: https://{account}.tpondemand.com/api/v1/Users?where=(Email eq 'jane@example.com')&format=json
  • Watch out for: The where clause uses Targetprocess query language syntax, not OData. String values must be single-quoted.

Request example

GET /api/v1/Users?where=(Email+eq+'jane@example.com')&format=json&access_token={token}

Response example

{
  "Items": [
    {"Id":42,"Email":"jane@example.com","IsActive":true}
  ]
}

List Roles

  • Method: GET
  • URL: https://{account}.tpondemand.com/api/v1/Roles?format=json
  • Watch out for: Role Ids are needed when assigning roles during user create/update. Fetch this list to map role names to Ids.

Request example

GET /api/v1/Roles?format=json&access_token={token}

Response example

{
  "Items": [
    {"Id":1,"Name":"Administrator"},
    {"Id":3,"Name":"Developer"}
  ]
}

List Teams

  • Method: GET
  • URL: https://{account}.tpondemand.com/api/v1/Teams?format=json
  • Watch out for: Team membership is managed via TeamMembers entity, not directly on the User object.

Request example

GET /api/v1/Teams?format=json&access_token={token}

Response example

{
  "Items": [
    {"Id":10,"Name":"Alpha Team"},
    {"Id":11,"Name":"Beta Team"}
  ]
}

Rate limits, pagination, and events

  • Rate limits: Targetprocess does not publicly document specific rate limits or request quotas in its official API docs. No explicit rate-limit tiers are published.

  • Rate-limit headers: No

  • Retry-After header: No

  • Rate-limit notes: No official rate-limit documentation found. Practical limits may be enforced server-side without explicit header signaling.

  • Pagination method: offset

  • Default page size: 25

  • Max page size: 1000

  • Pagination pointer: take / skip

  • Webhooks available: No

  • Webhook notes: Targetprocess does not expose a native outbound webhook system for user lifecycle events in its official documentation. Event-driven integrations typically rely on polling the REST API.

  • Alternative event strategy: Poll GET /api/v1/Users with a ModifyDate filter to detect changes. Targetprocess supports Zapier and other iPaaS connectors for event-driven workflows.

SCIM API status

  • SCIM available: No
  • SCIM version: Not documented
  • Plan required: Enterprise
  • Endpoint: Not documented

Limitations:

  • No native SCIM 2.0 support documented by Targetprocess/IBM Apptio.
  • User provisioning via SSO uses SAML 2.0 with Just-In-Time (JIT) provisioning - users are created on first login.
  • No SCIM connector endpoint is published; third-party SCIM bridges are not officially supported.
  • Manual user management or REST API scripting is required for bulk provisioning outside of JIT.

Common scenarios

Three automation scenarios are well-supported by the API.

First, bulk provisioning from an HR system: fetch Role IDs via GET /api/v1/Roles, then POST /api/v1/Users per user with FirstName, LastName, Email, Login, Password, and Role.Id;

follow up with POST /api/v1/TeamMembers for team assignments.

Caveat: if SAML JIT is active, API-created users may conflict with IdP-asserted records if Login or Email values diverge.

Second, offboarding: locate the user by email via the where filter, then POST /api/v1/Users/{id} with {"IsActive": false};

this revokes login without deleting data.

Third, role sync: poll GET /api/v1/Users?where=(ModifyDate gt '{timestamp}') to detect changes, then update roles via POST /api/v1/Users/{id} with the target Role.Id.

No webhooks exist;

polling interval directly determines sync latency.

Bulk-provision users from an HR system

  1. Authenticate using an admin Access Token.
  2. GET /api/v1/Roles to retrieve Role Id mappings.
  3. For each user in the HR export, POST /api/v1/Users with FirstName, LastName, Email, Login, Password, and Role.Id.
  4. Store the returned Id for each created user for future updates.
  5. Optionally, POST to /api/v1/TeamMembers to assign users to teams using the stored User Id and target Team Id.

Watch out for: If the account uses SAML SSO with JIT, creating users via API before their first SSO login may cause duplicate or conflicting records if Login/Email values differ from IdP assertions.

Deactivate departed employees

  1. GET /api/v1/Users?where=(Email eq '{email}')&format=json to locate the user by email.
  2. Extract the user's Id from the response.
  3. POST /api/v1/Users/{id} with body {"IsActive": false} to deactivate the account.
  4. Verify by GET /api/v1/Users/{id} and confirm IsActive is false.

Watch out for: Setting IsActive=false prevents login but does not delete the user or their data. Use DELETE /api/v1/Users/{id} for a soft delete if full removal is needed.

Sync user role changes from an identity source

  1. GET /api/v1/Roles to build a name-to-Id map.
  2. GET /api/v1/Users?where=(ModifyDate gt '{last_sync_timestamp}') to find recently modified users.
  3. For each user requiring a role change, POST /api/v1/Users/{id} with body {"Role": {"Id": {newRoleId}}}.
  4. Update last_sync_timestamp to current time for the next polling cycle.

Watch out for: ModifyDate filtering requires ISO 8601 format and correct URL encoding. There are no webhooks, so polling frequency determines sync latency.

Why building this yourself is a trap

Several non-obvious behaviors create integration risk. The API uses POST for both create and update - there is no PUT or PATCH verb; sending a POST to /Users/{id} updates the existing record.

DELETE is a soft delete only: DeleteDate is set and the record is retained, so active-user queries must explicitly filter on IsActive eq true or DeleteDate is null to avoid stale results. Non-default fields including Teams and Role details require explicit ?include=[FieldName] parameters; omitting them returns a partial object silently.

The where clause uses Targetprocess's own query language - not OData or SQL - and syntax errors return a 400 with minimal diagnostic detail.

For teams building an identity graph across their SaaS stack, the absence of SCIM and webhooks means Targetprocess user state must be derived entirely from REST polling, with ModifyDate and IsActive as the primary signals for change detection. Pagination tops out at take=1000; large accounts require multiple offset pages with take/skip parameters.

Automate Targetprocess workflows without one-off scripts

Stitchflow builds and maintains end-to-end IT automation across your SaaS stack, including apps without APIs. Built for exactly how your company works, with human approvals where they matter.

Every app coverage, including apps without APIs
60+ app integrations plus browser automation for apps without APIs
IT graph reconciliation across apps and your IdP
Less than a week to launch, maintained as APIs and admin consoles change
SOC 2 Type II. ~2 hours of your team's time

UpdatedMar 16, 2026

* Details sourced from official product documentation and admin references.

Keep exploring

Related apps

Abnormal Security logo

Abnormal Security

API Only
AutomationAPI only
Last updatedMar 2026

Abnormal Security is an enterprise email security platform focused on detecting and investigating threats such as phishing, account takeover (ATO), and vendor email compromise. It does not support SCIM provisioning, which means every app in your stack

ActiveCampaign logo

ActiveCampaign

API Only
AutomationAPI only
Last updatedFeb 2026

ActiveCampaign uses a group-based permission model: every user belongs to exactly one group, and all feature-area access (Contacts, Campaigns, Automations, Deals, Reports, Templates) is configured at the group level, not per individual. The default Adm

ADP logo

ADP

API Only
AutomationAPI only
Last updatedFeb 2026

ADP Workforce Now is a mid-market to enterprise HCM platform that serves as the HR source of record for employee data — payroll, benefits, time, and talent. User access is governed by a hybrid permission model: predefined security roles (Security Maste