APIs and Applications
Last update: Aug 04, 2023.
Basic details
Send API call to the right place
Acrobat Sign Commercial and Acrobat Sign for Government services reside on different top-level domains. Both the domain and extension are different:
-
Commercial Cloud, PCI and HIPAA compliant (note .com):
https://secure.adobesign.com -
US Government Cloud, FedRAMP Moderate compliant (note .us):
https://secure.na1.adobesign.us
Endpoint summary
-
GET https://secure.na1.adobesign.us/api/gateway/adobesignauthservice/api/v1/authorize: Start the authorization code flow to login and consent to application permissions
-
POST https://secure.na1.adobesign.us/api/gateway/adobesignauthservice/api/v1/token: Obtain an access_token and, except for impersonation, a
refresh_tokenupon successful completion and redirect back from the authorization code flow -
POST https://secure.na1.adobesign.us/api/gateway/adobesignauthservice/api/v1/validate_token: Validate an existing token
-
POST https://secure.na1.adobesign.us/api/gateway/adobesignauthservice/api/v1/invalidate_token: Invalidate/revoke a particular token
-
GET https://secure.na1.adobesign.us/api/gateway/adobesignauthservice/api/v1/logout: Invalidate/revoke all tokens related to the user to which the token belongs
data-slots=header, text
Debugging
It’s recommended to pass an x-request-id header with APIs as a way to track requests for debugging.
Impersonation
Some workflows are more efficient (and even possible) when a holder of one token can act on behalf of other users; in other words, when a user or client can perform actions on behalf of other users or clients (impersonate them). Impersonation occurs when the subject of the authentication identified by the original credentials differs from the one that will perform a certain action. An application or API cannot determine from a token if the subject is the logged in entity, so it’s often advantageous to use anonymous tokens to get work done.
Since it’s inefficient to have every user get an OAuth token, admins benefit when a token is available to all users. In Sign Gov, admins exchange their admin token for a user-specific token since, unlike the Acrobat Sign commercial instance, x-api-user is unsupported. Doing so avoids having every user log in, get a unique token, and so on.
Note that impersonation in Acrobat Sign for Government varies from the commercial instance. Sign Gov:
-
Does not support the
x-api-userheader for impersonation due to security Okta restrictions. -
Supports OAuth only–not integration keys.
-
Supports impersonation from account-admin scoped tokens, not group-admin tokens.
-
Both direct customers and Acrobat Sign Embed partners have to ask Adobe to enable impersonation for an application.
- Impersonation is enabled on an application via the
acc_impscope. - Refresh tokens are enabled via
offline_accessscope.
- Impersonation is enabled on an application via the
data-slots=header, text
autoLogin: true for Sign /view APIs by the user_login scope.How to use impersonation
For impersonation, API applications need to exchange the Sign admin token for another user-impersonation token. Usage details:
-
Only admins can generate an
admin_tokenand associatedadmin_refresh_token. -
The admin uses the
admin_tokento generate animpersonation_token. Anadmin_tokencan only be used to generate the impersonation token for users in the same account as the account admin for which the admin token was generated. -
The lifespan of the admin_token is 5 min.
-
The
admin_refresh_tokenlifetime is unlimited but will expire if not used for more than 30 days. -
The
admin_refresh_tokenshould be persisted in a secure storage location (for headless/background processing).
APIs
Authorize
Summary: The request redirects the user agent to the specified (or default) identity provider for authentication. The actual UI that is displayed to the user depends on your client type in your respective identity provider.
This is a starting point for browser-based OpenID Connect flows such as authorization code flow. This request authenticates the user and returns an authorization code to the client application as a part of the callback response (redirect URI).
Request
-
Method: GET
-
Authorization required: No
-
Available versions:
https://secure.na1.adobesign.us/api/gateway/adobesignauthservice/api/v1/authorize
Request QueryParameters
&scope=email,openid.Response
Once the user is authenticated by the identity provider, determines whether authorization can be granted, then redirects the user agent to the URI that you have supplied or configured for your client’s start page. The redirect contains the authorization grant, in the form of the code or token appropriate to your grant type.
Note: When making requests to the /authorize endpoint, the browser (user agent) should be redirected to the endpoint. You can’t use AJAX with this endpoint but you can have a link or button directly or indirectly via JS navigates to the /authorize URL: https://secure.na1.adobesign.us/api/gateway/adobesignauthservice/api/v1/authorize?clientId=…&response_type=…&scope=…&state=…&login_hint=…&redirectUri=<insert url here>
Success Response
The following is returned as URL query parameters from the identity provider (Okta or Adobe IMS) as part of a 302 redirect:
code is returned if the response_type includes codeaccess_token expires. This is only returned if the response included an access_token.state value from the request.Error response
The API returns the following URL query parameters on error:
Error Codes
<Parameter Name> is missing or empty/invalid.Token
Summary: This endpoint returns access tokens, ID tokens, and refresh tokens, depending on the request parameters. Please refer to specific grant_type flows for a list of required parameters.
Common Request Aspects
-
Method: POST
-
Authorization required: No
-
Content-Type::
application/x-www-form-urlencoded -
Available versions:
https://secure.na1.adobesign.us/api/gateway/adobesignauthservice/api/v1/token
Request with Authorization Code
For the authorization code flow, calling /token is the second step of the flow.
Request Body Parameters
urn:ietf:params:oauth:client-assertion-type:jwt-bearer. This must be present if client_secret is not provided.client_assertion_type above. It must be present if the client_secret is not provided. The audience used to generate this assertion must be token_endpoint provided as a part of application onboarding.client_assertion_type. It must be present if BOTH client_assertion_type and client_assertion are not provided.authorization_code./authorize endpoint.redirect_uri parameter that was passed to the /authorize endpoint.data-slots=header, text
offline_access enabled. In the authorization code flow, this means that you need to include offline_access as part of scope in your GET request to /authorize.Request with Refresh Token
Request Body Parameters
urn:ietf:params:oauth:client-assertion-type:jwt-bearer. This must be present if client_secret is not provided.client_assertion_type above. It must be present if the client_secret is not provided. The audience used to generate this assertion must be token_endpoint provided as a part of application onboarding.client_assertion_type. It must be present if BOTH client_assertion_type and client_assertion are not provided.refresh_token. It determines the mechanism the identity provider uses to initiate the creation of the tokens.Request Impersonation
Exchanges a previously acquired token for an account/group admin inside an organization and scope to one for a selected user inside the organization. The parameters are based on RFC 8693.
Request Body Parameters
urn:ietf:params:oauth:client-assertion-type:jwt-bearer. This must be present if client_secret is not provided.client_assertion_type above. It must be present if the client_secret is not provided. The audience used to generate this assertion must be token_endpoint provided as a part of application onboarding.client_assertion_type. It must be present if BOTH client_assertion_type and client_assertion are not provided.:urn:ietf:params:oauth:grant-type:token- exchangeacc_imp,group_imp), even though they will be granted to actor_token.access_token. Though not specified to be passed in tables above the access_toke is granted for 3.1 and 3.2 as well.jwtNote: The passed admin token should have an impersonation scope of acc_imp or group_imp.Value
eyJhbGciOiJub25lIn0=.eyJ1c2VyX2VtYWlsIj< snip >5pbnRlZ3JhdGlvbnNkZW1vLmNvbSJ9
Success Response
The API returns the following JSON attributes on success:
Error response
The API returns the following JSON attributes on error:
Error Codes
refresh_token or redirect_uri in combination with grant_type is invalid.<Parameter Name> is missing or empty or invalid.grant_type isn’t authorization_code , refresh_token or token_exchange.actor_token or user_id provided ineligible for issuing a token.Validate Token
Summary: This endpoint takes an access, ID, or refresh token, and returns a boolean that indicates whether it is active or not. If the token is active, additional data about the token is also returned. If the token is invalid, expired, or revoked, it is considered inactive.
Common request elements
-
Method: POST
-
Authorization required: No
-
Content-Type:: application/x-www-form-urlencoded
-
Available versions:
https://secure.na1.adobesign.us/api/gateway/adobesignauthservice/api/v1/validate_token
Request Body Parameters
urn:ietf:params:oauth:client-assertion-type:jwt-bearer. This must be present if client_secret is not provided.client_assertion_type above. It must be present if the client_secret is not provided. The audience used to generate this assertion must be token_endpoint provided as a part of application onboarding.client_assertion_type. It must be present if BOTH client_assertion_type and client_assertion are not provided.id_token, authorization_code, refresh_token).Success Response
The API returns the following JSON attributes on success:
Error response
The API returns the following JSON attributes on error:
Error Codes
<Parameter Name> is missing or empty/invalid.token_type_mismatchtype field was specified in the request, but it does not match the actual token typeInvalidate Token
Summary: The API takes an access or refresh token and revokes it.
Request
-
Method: POST
-
Authorization required: No
-
Content-Type:: application/x-www-form-urlencoded
-
Available versions:
https://secure.na1.adobesign.us/api/gateway/adobesignauthservice/api/v1/invalidate_token
Request Body Parameters
urn:ietf:params:oauth:client-assertion-type:jwt-bearer. This must be present if client_secret is not provided.client_assertion_type above. It must be present if the client_secret is not provided. The audience used to generate this assertion must be token_endpoint provided as a part of application onboarding.client_assertion_type. It must be present if BOTH client_assertion_type and client_assertion are not provided.Success Response
On success, the response has the HTTP 200 (OK) status code. This means only that the authorization was accepted, but it does not indicate the success or failure of the operation. The validate token API can be used to confirm that the token was successfully invalidated.
Error Response
The API returns the following JSON attributes on error:
Error Codes
<Parameter Name> is missing or empty/invalid.token_type_mismatchtype field was specified in the request, but it does not match the actual token typeLogout
This endpoint logs the web browser user out of the identity provider if the subject matches that in the current identity provider session. An optional redirect_uri may be specified to redirect the browser after the logout is performed. Otherwise, the browser is redirected to the identity provider sign-in page.
Logout is meant to be used as a URL link navigation from an interactive web browser UI, whereas Invalidate Token is meant to be used as a service API call.
Request
-
Request method: GET
-
Authorization required: No
-
Available versions:
https://secure.na1.adobesign.us/api/gateway/adobesignauthservice/api/v1/logout
Request Query Parameters
Success Response
After internal redirects, the identity provider redirects the user agent back to the supplied redirect_uri location (if provided).
Error response
The API returns the following JSON attributes on error:
Error Codes
<Parameter Name> is missing or empty/invalid.Clickjacking defense for sign views
API Applications using Sign Views in iframes or WebViews must leverage the clickjacking defense for Sign APIs. To do so, use the frameParent property with Sign POST .../agreements/.../views
-
frameParent: <domain suffix>; for example, “adobe.com”. -
The domain suffix is the domain to at least the 2nd level; for example, “adobe.com” but NOT just the top level “com”.
-
The domain suffix will also support a full origin such as
https://secure.adobesign.com, but it will not support a wildcard (*) domain prefix. -
You can also use multiple domains as comma-separated values.
data-slots=header, text
Signer authentication mechanisms
The following signer authentication mechanisms are available:
-
Email
-
Password
-
Phone
-
Knowledge-Based Authentication (KBA)
-
Acrobat Sign
-
Government ID
-
Digital Identity Gateway
© Copyright 2022, Adobe Inc.. Last update: Aug 04, 2023.