API Authentication

tdondich edited this page Jul 8, 2019 · 4 revisions

ProcessMaker API Authentication

ProcessMaker utilizes OAuth for API Authentication and allows multiple OAuth grant types for use in external user applications as well as service to service communication. Users can have their own tokens created for direct API authentication or authentication clients can be created by the Administrator to represent external applications to authenticate for client based authentication.

Personal API Access Tokens

Personal API Access Tokens are the easiest way to get started with the API and are used to communicate to the API as the user they were generated for. Personal API Access Tokens can be generated by Administrators when manging Users in the system. Once a user is created, the administrator can navigate to the user in Administration and visit the API Tokens tab. Click the Generate New Token button to generate a token which will represent the user. This token can then be utilized for the bearer token when calling the API directly. This bypasses any auth handshake and should not be utilized unless a grant type handshake below is not appropriate.

Once the token is generated, it can be used as a Bearer token in your API calls. As an example:

CURL Example

$ export TOKEN="your generated token"
$ curl -H 'Accept: application/json' -H "Authorization: Bearer ${TOKEN}" https://example.processmaker.net/api/1.0/requests

PHP Example

$token = 'your generated token';
$client = newGuzzleHttp\Client(['base_uri' => 'https://example.processmaker.net/api/1.0/']);
$headers = [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json'
];
$response = $client->request('GET', 'requests', [
'headers' => $headers
]);

Generating Authentication Clients

For client, password and authorization grant types, a application authentication client must be setup in ProcessMaker. Navigate to Auth Clients in Administration to manage the collection of clients. To add a client, provide a unique name as well as the redirect url ProcessMaker should return to when returning an authorization code. When you've created the client, you'll have the Client ID as well as the client secret. These are used to identify the client when using grant types that utilize a client.

Client Credentials Grant

The client credentials grant is utilized for service to service communication. This is used for API calls where user authentication or permission is not necessary. Only special routes in the API are allowed to be accessed by this method.

The following steps are used when using the client credentials grant.

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: client_credentials
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests

Authorization Code Grant

The authorization code grant type is normally used in interactive user applications. The external application would redirect the user to a ProcessMaker login and grant screen. The user will require logging into ProcessMaker and then authorize access to the external application. The system then provides an access token which can then be used for future API requests and act as that user.

The following steps are used when using the authorization code grant.

The client sends a GET request to /oauth/authorization with the following parameters

  • client_id: The numeric ID of the client (Example: 42)
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker authenticates the user and asks for permission

ProcessMaker will check to see if the user is currently logged in. If not, they will be asked to login. Once logged in, they'll be prompted to authorize the external application to access their account. The user most authorize this access in order for the process to continue.

ProcessMaker redirects the user to the redirect url configured for the client

If the user denied access in the previous screen, a url parameter called error will be set with the message access_denied.

If the user approved access, a url parameter called code will be set with the authorization code to exchange for an access token in the next step.

Client exchanges the authorizaton code for an api access token

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: authorization_code
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • redirect_uri: The redirect url of the client. This MUST match the redirect url specified in the client configuration
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests
  • refresh_token: The refresh token which can be used to obtain a new access token if the current access token expires

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

API Authentication

tdondich edited this page Jul 8, 2019 · 4 revisions

ProcessMaker API Authentication

ProcessMaker utilizes OAuth for API Authentication and allows multiple OAuth grant types for use in external user applications as well as service to service communication. Users can have their own tokens created for direct API authentication or authentication clients can be created by the Administrator to represent external applications to authenticate for client based authentication.

Personal API Access Tokens

Personal API Access Tokens are the easiest way to get started with the API and are used to communicate to the API as the user they were generated for. Personal API Access Tokens can be generated by Administrators when manging Users in the system. Once a user is created, the administrator can navigate to the user in Administration and visit the API Tokens tab. Click the Generate New Token button to generate a token which will represent the user. This token can then be utilized for the bearer token when calling the API directly. This bypasses any auth handshake and should not be utilized unless a grant type handshake below is not appropriate.

Once the token is generated, it can be used as a Bearer token in your API calls. As an example:

CURL Example

$ export TOKEN="your generated token"
$ curl -H 'Accept: application/json' -H "Authorization: Bearer ${TOKEN}" https://example.processmaker.net/api/1.0/requests

PHP Example

$token = 'your generated token';
$client = newGuzzleHttp\Client(['base_uri' => 'https://example.processmaker.net/api/1.0/']);
$headers = [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json'
];
$response = $client->request('GET', 'requests', [
'headers' => $headers
]);

Generating Authentication Clients

For client, password and authorization grant types, a application authentication client must be setup in ProcessMaker. Navigate to Auth Clients in Administration to manage the collection of clients. To add a client, provide a unique name as well as the redirect url ProcessMaker should return to when returning an authorization code. When you've created the client, you'll have the Client ID as well as the client secret. These are used to identify the client when using grant types that utilize a client.

Client Credentials Grant

The client credentials grant is utilized for service to service communication. This is used for API calls where user authentication or permission is not necessary. Only special routes in the API are allowed to be accessed by this method.

The following steps are used when using the client credentials grant.

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: client_credentials
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests

Authorization Code Grant

The authorization code grant type is normally used in interactive user applications. The external application would redirect the user to a ProcessMaker login and grant screen. The user will require logging into ProcessMaker and then authorize access to the external application. The system then provides an access token which can then be used for future API requests and act as that user.

The following steps are used when using the authorization code grant.

The client sends a GET request to /oauth/authorization with the following parameters

  • client_id: The numeric ID of the client (Example: 42)
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker authenticates the user and asks for permission

ProcessMaker will check to see if the user is currently logged in. If not, they will be asked to login. Once logged in, they'll be prompted to authorize the external application to access their account. The user most authorize this access in order for the process to continue.

ProcessMaker redirects the user to the redirect url configured for the client

If the user denied access in the previous screen, a url parameter called error will be set with the message access_denied.

If the user approved access, a url parameter called code will be set with the authorization code to exchange for an access token in the next step.

Client exchanges the authorizaton code for an api access token

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: authorization_code
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • redirect_uri: The redirect url of the client. This MUST match the redirect url specified in the client configuration
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests
  • refresh_token: The refresh token which can be used to obtain a new access token if the current access token expires

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

API Authentication

tdondich edited this page Jul 8, 2019 · 4 revisions

ProcessMaker API Authentication

ProcessMaker utilizes OAuth for API Authentication and allows multiple OAuth grant types for use in external user applications as well as service to service communication. Users can have their own tokens created for direct API authentication or authentication clients can be created by the Administrator to represent external applications to authenticate for client based authentication.

Personal API Access Tokens

Personal API Access Tokens are the easiest way to get started with the API and are used to communicate to the API as the user they were generated for. Personal API Access Tokens can be generated by Administrators when manging Users in the system. Once a user is created, the administrator can navigate to the user in Administration and visit the API Tokens tab. Click the Generate New Token button to generate a token which will represent the user. This token can then be utilized for the bearer token when calling the API directly. This bypasses any auth handshake and should not be utilized unless a grant type handshake below is not appropriate.

Once the token is generated, it can be used as a Bearer token in your API calls. As an example:

CURL Example

$ export TOKEN="your generated token"
$ curl -H 'Accept: application/json' -H "Authorization: Bearer ${TOKEN}" https://example.processmaker.net/api/1.0/requests

PHP Example

$token = 'your generated token';
$client = newGuzzleHttp\Client(['base_uri' => 'https://example.processmaker.net/api/1.0/']);
$headers = [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json'
];
$response = $client->request('GET', 'requests', [
'headers' => $headers
]);

Generating Authentication Clients

For client, password and authorization grant types, a application authentication client must be setup in ProcessMaker. Navigate to Auth Clients in Administration to manage the collection of clients. To add a client, provide a unique name as well as the redirect url ProcessMaker should return to when returning an authorization code. When you've created the client, you'll have the Client ID as well as the client secret. These are used to identify the client when using grant types that utilize a client.

Client Credentials Grant

The client credentials grant is utilized for service to service communication. This is used for API calls where user authentication or permission is not necessary. Only special routes in the API are allowed to be accessed by this method.

The following steps are used when using the client credentials grant.

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: client_credentials
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests

Authorization Code Grant

The authorization code grant type is normally used in interactive user applications. The external application would redirect the user to a ProcessMaker login and grant screen. The user will require logging into ProcessMaker and then authorize access to the external application. The system then provides an access token which can then be used for future API requests and act as that user.

The following steps are used when using the authorization code grant.

The client sends a GET request to /oauth/authorization with the following parameters

  • client_id: The numeric ID of the client (Example: 42)
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker authenticates the user and asks for permission

ProcessMaker will check to see if the user is currently logged in. If not, they will be asked to login. Once logged in, they'll be prompted to authorize the external application to access their account. The user most authorize this access in order for the process to continue.

ProcessMaker redirects the user to the redirect url configured for the client

If the user denied access in the previous screen, a url parameter called error will be set with the message access_denied.

If the user approved access, a url parameter called code will be set with the authorization code to exchange for an access token in the next step.

Client exchanges the authorizaton code for an api access token

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: authorization_code
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • redirect_uri: The redirect url of the client. This MUST match the redirect url specified in the client configuration
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests
  • refresh_token: The refresh token which can be used to obtain a new access token if the current access token expires

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

API Authentication

tdondich edited this page Jul 8, 2019 · 4 revisions

ProcessMaker API Authentication

ProcessMaker utilizes OAuth for API Authentication and allows multiple OAuth grant types for use in external user applications as well as service to service communication. Users can have their own tokens created for direct API authentication or authentication clients can be created by the Administrator to represent external applications to authenticate for client based authentication.

Personal API Access Tokens

Personal API Access Tokens are the easiest way to get started with the API and are used to communicate to the API as the user they were generated for. Personal API Access Tokens can be generated by Administrators when manging Users in the system. Once a user is created, the administrator can navigate to the user in Administration and visit the API Tokens tab. Click the Generate New Token button to generate a token which will represent the user. This token can then be utilized for the bearer token when calling the API directly. This bypasses any auth handshake and should not be utilized unless a grant type handshake below is not appropriate.

Once the token is generated, it can be used as a Bearer token in your API calls. As an example:

CURL Example

$ export TOKEN="your generated token"
$ curl -H 'Accept: application/json' -H "Authorization: Bearer ${TOKEN}" https://example.processmaker.net/api/1.0/requests

PHP Example

$token = 'your generated token';
$client = newGuzzleHttp\Client(['base_uri' => 'https://example.processmaker.net/api/1.0/']);
$headers = [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json'
];
$response = $client->request('GET', 'requests', [
'headers' => $headers
]);

Generating Authentication Clients

For client, password and authorization grant types, a application authentication client must be setup in ProcessMaker. Navigate to Auth Clients in Administration to manage the collection of clients. To add a client, provide a unique name as well as the redirect url ProcessMaker should return to when returning an authorization code. When you've created the client, you'll have the Client ID as well as the client secret. These are used to identify the client when using grant types that utilize a client.

Client Credentials Grant

The client credentials grant is utilized for service to service communication. This is used for API calls where user authentication or permission is not necessary. Only special routes in the API are allowed to be accessed by this method.

The following steps are used when using the client credentials grant.

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: client_credentials
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests

Authorization Code Grant

The authorization code grant type is normally used in interactive user applications. The external application would redirect the user to a ProcessMaker login and grant screen. The user will require logging into ProcessMaker and then authorize access to the external application. The system then provides an access token which can then be used for future API requests and act as that user.

The following steps are used when using the authorization code grant.

The client sends a GET request to /oauth/authorization with the following parameters

  • client_id: The numeric ID of the client (Example: 42)
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker authenticates the user and asks for permission

ProcessMaker will check to see if the user is currently logged in. If not, they will be asked to login. Once logged in, they'll be prompted to authorize the external application to access their account. The user most authorize this access in order for the process to continue.

ProcessMaker redirects the user to the redirect url configured for the client

If the user denied access in the previous screen, a url parameter called error will be set with the message access_denied.

If the user approved access, a url parameter called code will be set with the authorization code to exchange for an access token in the next step.

Client exchanges the authorizaton code for an api access token

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: authorization_code
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • redirect_uri: The redirect url of the client. This MUST match the redirect url specified in the client configuration
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests
  • refresh_token: The refresh token which can be used to obtain a new access token if the current access token expires

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

API Authentication

tdondich edited this page Jul 8, 2019 · 4 revisions

ProcessMaker API Authentication

ProcessMaker utilizes OAuth for API Authentication and allows multiple OAuth grant types for use in external user applications as well as service to service communication. Users can have their own tokens created for direct API authentication or authentication clients can be created by the Administrator to represent external applications to authenticate for client based authentication.

Personal API Access Tokens

Personal API Access Tokens are the easiest way to get started with the API and are used to communicate to the API as the user they were generated for. Personal API Access Tokens can be generated by Administrators when manging Users in the system. Once a user is created, the administrator can navigate to the user in Administration and visit the API Tokens tab. Click the Generate New Token button to generate a token which will represent the user. This token can then be utilized for the bearer token when calling the API directly. This bypasses any auth handshake and should not be utilized unless a grant type handshake below is not appropriate.

Once the token is generated, it can be used as a Bearer token in your API calls. As an example:

CURL Example

$ export TOKEN="your generated token"
$ curl -H 'Accept: application/json' -H "Authorization: Bearer ${TOKEN}" https://example.processmaker.net/api/1.0/requests

PHP Example

$token = 'your generated token';
$client = newGuzzleHttp\Client(['base_uri' => 'https://example.processmaker.net/api/1.0/']);
$headers = [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json'
];
$response = $client->request('GET', 'requests', [
'headers' => $headers
]);

Generating Authentication Clients

For client, password and authorization grant types, a application authentication client must be setup in ProcessMaker. Navigate to Auth Clients in Administration to manage the collection of clients. To add a client, provide a unique name as well as the redirect url ProcessMaker should return to when returning an authorization code. When you've created the client, you'll have the Client ID as well as the client secret. These are used to identify the client when using grant types that utilize a client.

Client Credentials Grant

The client credentials grant is utilized for service to service communication. This is used for API calls where user authentication or permission is not necessary. Only special routes in the API are allowed to be accessed by this method.

The following steps are used when using the client credentials grant.

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: client_credentials
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests

Authorization Code Grant

The authorization code grant type is normally used in interactive user applications. The external application would redirect the user to a ProcessMaker login and grant screen. The user will require logging into ProcessMaker and then authorize access to the external application. The system then provides an access token which can then be used for future API requests and act as that user.

The following steps are used when using the authorization code grant.

The client sends a GET request to /oauth/authorization with the following parameters

  • client_id: The numeric ID of the client (Example: 42)
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker authenticates the user and asks for permission

ProcessMaker will check to see if the user is currently logged in. If not, they will be asked to login. Once logged in, they'll be prompted to authorize the external application to access their account. The user most authorize this access in order for the process to continue.

ProcessMaker redirects the user to the redirect url configured for the client

If the user denied access in the previous screen, a url parameter called error will be set with the message access_denied.

If the user approved access, a url parameter called code will be set with the authorization code to exchange for an access token in the next step.

Client exchanges the authorizaton code for an api access token

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: authorization_code
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • redirect_uri: The redirect url of the client. This MUST match the redirect url specified in the client configuration
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests
  • refresh_token: The refresh token which can be used to obtain a new access token if the current access token expires

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

API Authentication

tdondich edited this page Jul 8, 2019 · 4 revisions

ProcessMaker API Authentication

ProcessMaker utilizes OAuth for API Authentication and allows multiple OAuth grant types for use in external user applications as well as service to service communication. Users can have their own tokens created for direct API authentication or authentication clients can be created by the Administrator to represent external applications to authenticate for client based authentication.

Personal API Access Tokens

Personal API Access Tokens are the easiest way to get started with the API and are used to communicate to the API as the user they were generated for. Personal API Access Tokens can be generated by Administrators when manging Users in the system. Once a user is created, the administrator can navigate to the user in Administration and visit the API Tokens tab. Click the Generate New Token button to generate a token which will represent the user. This token can then be utilized for the bearer token when calling the API directly. This bypasses any auth handshake and should not be utilized unless a grant type handshake below is not appropriate.

Once the token is generated, it can be used as a Bearer token in your API calls. As an example:

CURL Example

$ export TOKEN="your generated token"
$ curl -H 'Accept: application/json' -H "Authorization: Bearer ${TOKEN}" https://example.processmaker.net/api/1.0/requests

PHP Example

$token = 'your generated token';
$client = newGuzzleHttp\Client(['base_uri' => 'https://example.processmaker.net/api/1.0/']);
$headers = [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json'
];
$response = $client->request('GET', 'requests', [
'headers' => $headers
]);

Generating Authentication Clients

For client, password and authorization grant types, a application authentication client must be setup in ProcessMaker. Navigate to Auth Clients in Administration to manage the collection of clients. To add a client, provide a unique name as well as the redirect url ProcessMaker should return to when returning an authorization code. When you've created the client, you'll have the Client ID as well as the client secret. These are used to identify the client when using grant types that utilize a client.

Client Credentials Grant

The client credentials grant is utilized for service to service communication. This is used for API calls where user authentication or permission is not necessary. Only special routes in the API are allowed to be accessed by this method.

The following steps are used when using the client credentials grant.

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: client_credentials
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests

Authorization Code Grant

The authorization code grant type is normally used in interactive user applications. The external application would redirect the user to a ProcessMaker login and grant screen. The user will require logging into ProcessMaker and then authorize access to the external application. The system then provides an access token which can then be used for future API requests and act as that user.

The following steps are used when using the authorization code grant.

The client sends a GET request to /oauth/authorization with the following parameters

  • client_id: The numeric ID of the client (Example: 42)
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker authenticates the user and asks for permission

ProcessMaker will check to see if the user is currently logged in. If not, they will be asked to login. Once logged in, they'll be prompted to authorize the external application to access their account. The user most authorize this access in order for the process to continue.

ProcessMaker redirects the user to the redirect url configured for the client

If the user denied access in the previous screen, a url parameter called error will be set with the message access_denied.

If the user approved access, a url parameter called code will be set with the authorization code to exchange for an access token in the next step.

Client exchanges the authorizaton code for an api access token

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: authorization_code
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • redirect_uri: The redirect url of the client. This MUST match the redirect url specified in the client configuration
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests
  • refresh_token: The refresh token which can be used to obtain a new access token if the current access token expires

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

API Authentication

tdondich edited this page Jul 8, 2019 · 4 revisions

ProcessMaker API Authentication

ProcessMaker utilizes OAuth for API Authentication and allows multiple OAuth grant types for use in external user applications as well as service to service communication. Users can have their own tokens created for direct API authentication or authentication clients can be created by the Administrator to represent external applications to authenticate for client based authentication.

Personal API Access Tokens

Personal API Access Tokens are the easiest way to get started with the API and are used to communicate to the API as the user they were generated for. Personal API Access Tokens can be generated by Administrators when manging Users in the system. Once a user is created, the administrator can navigate to the user in Administration and visit the API Tokens tab. Click the Generate New Token button to generate a token which will represent the user. This token can then be utilized for the bearer token when calling the API directly. This bypasses any auth handshake and should not be utilized unless a grant type handshake below is not appropriate.

Once the token is generated, it can be used as a Bearer token in your API calls. As an example:

CURL Example

$ export TOKEN="your generated token"
$ curl -H 'Accept: application/json' -H "Authorization: Bearer ${TOKEN}" https://example.processmaker.net/api/1.0/requests

PHP Example

$token = 'your generated token';
$client = newGuzzleHttp\Client(['base_uri' => 'https://example.processmaker.net/api/1.0/']);
$headers = [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json'
];
$response = $client->request('GET', 'requests', [
'headers' => $headers
]);

Generating Authentication Clients

For client, password and authorization grant types, a application authentication client must be setup in ProcessMaker. Navigate to Auth Clients in Administration to manage the collection of clients. To add a client, provide a unique name as well as the redirect url ProcessMaker should return to when returning an authorization code. When you've created the client, you'll have the Client ID as well as the client secret. These are used to identify the client when using grant types that utilize a client.

Client Credentials Grant

The client credentials grant is utilized for service to service communication. This is used for API calls where user authentication or permission is not necessary. Only special routes in the API are allowed to be accessed by this method.

The following steps are used when using the client credentials grant.

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: client_credentials
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests

Authorization Code Grant

The authorization code grant type is normally used in interactive user applications. The external application would redirect the user to a ProcessMaker login and grant screen. The user will require logging into ProcessMaker and then authorize access to the external application. The system then provides an access token which can then be used for future API requests and act as that user.

The following steps are used when using the authorization code grant.

The client sends a GET request to /oauth/authorization with the following parameters

  • client_id: The numeric ID of the client (Example: 42)
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker authenticates the user and asks for permission

ProcessMaker will check to see if the user is currently logged in. If not, they will be asked to login. Once logged in, they'll be prompted to authorize the external application to access their account. The user most authorize this access in order for the process to continue.

ProcessMaker redirects the user to the redirect url configured for the client

If the user denied access in the previous screen, a url parameter called error will be set with the message access_denied.

If the user approved access, a url parameter called code will be set with the authorization code to exchange for an access token in the next step.

Client exchanges the authorizaton code for an api access token

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: authorization_code
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • redirect_uri: The redirect url of the client. This MUST match the redirect url specified in the client configuration
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests
  • refresh_token: The refresh token which can be used to obtain a new access token if the current access token expires

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

API Authentication

tdondich edited this page Jul 8, 2019 · 4 revisions

ProcessMaker API Authentication

ProcessMaker utilizes OAuth for API Authentication and allows multiple OAuth grant types for use in external user applications as well as service to service communication. Users can have their own tokens created for direct API authentication or authentication clients can be created by the Administrator to represent external applications to authenticate for client based authentication.

Personal API Access Tokens

Personal API Access Tokens are the easiest way to get started with the API and are used to communicate to the API as the user they were generated for. Personal API Access Tokens can be generated by Administrators when manging Users in the system. Once a user is created, the administrator can navigate to the user in Administration and visit the API Tokens tab. Click the Generate New Token button to generate a token which will represent the user. This token can then be utilized for the bearer token when calling the API directly. This bypasses any auth handshake and should not be utilized unless a grant type handshake below is not appropriate.

Once the token is generated, it can be used as a Bearer token in your API calls. As an example:

CURL Example

$ export TOKEN="your generated token"
$ curl -H 'Accept: application/json' -H "Authorization: Bearer ${TOKEN}" https://example.processmaker.net/api/1.0/requests

PHP Example

$token = 'your generated token';
$client = newGuzzleHttp\Client(['base_uri' => 'https://example.processmaker.net/api/1.0/']);
$headers = [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json'
];
$response = $client->request('GET', 'requests', [
'headers' => $headers
]);

Generating Authentication Clients

For client, password and authorization grant types, a application authentication client must be setup in ProcessMaker. Navigate to Auth Clients in Administration to manage the collection of clients. To add a client, provide a unique name as well as the redirect url ProcessMaker should return to when returning an authorization code. When you've created the client, you'll have the Client ID as well as the client secret. These are used to identify the client when using grant types that utilize a client.

Client Credentials Grant

The client credentials grant is utilized for service to service communication. This is used for API calls where user authentication or permission is not necessary. Only special routes in the API are allowed to be accessed by this method.

The following steps are used when using the client credentials grant.

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: client_credentials
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests

Authorization Code Grant

The authorization code grant type is normally used in interactive user applications. The external application would redirect the user to a ProcessMaker login and grant screen. The user will require logging into ProcessMaker and then authorize access to the external application. The system then provides an access token which can then be used for future API requests and act as that user.

The following steps are used when using the authorization code grant.

The client sends a GET request to /oauth/authorization with the following parameters

  • client_id: The numeric ID of the client (Example: 42)
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker authenticates the user and asks for permission

ProcessMaker will check to see if the user is currently logged in. If not, they will be asked to login. Once logged in, they'll be prompted to authorize the external application to access their account. The user most authorize this access in order for the process to continue.

ProcessMaker redirects the user to the redirect url configured for the client

If the user denied access in the previous screen, a url parameter called error will be set with the message access_denied.

If the user approved access, a url parameter called code will be set with the authorization code to exchange for an access token in the next step.

Client exchanges the authorizaton code for an api access token

The client sends a POST request to /oauth/token with the following parameters

  • grant_type: authorization_code
  • client_id: The numeric ID of the client (Example: 42)
  • client_secret: The secret of the client, found in the client list in Auth Clients
  • redirect_uri: The redirect url of the client. This MUST match the redirect url specified in the client configuration
  • response_type: code
  • scope: Optional, provide scope to use for the access token used

ProcessMaker will respond to the request with a JSON object that contains the following properties:

  • token_type: Bearer
  • expires_in: An integer representing the TTL of the access token
  • access_token: The access token to use as the Bearer token in future API requests
  • refresh_token: The refresh token which can be used to obtain a new access token if the current access token expires

Clone this wiki locally