Google is committed to advancing racial equity for Black communities. See how.

Using acurl

The acurl utility provides a convenience wrapper around a standard curl command. acurl:

  • Exchanges your Apigee credentials for an OAuth2 access token.
  • Detects when an access token has expired, and uses the refresh token to get a fresh access token.
  • Passes that token in the Authorization header of the API request.

You use access tokens to call Edge API endpoints with OAuth2, including LDAP and SAML workflows.

If you use OAuth2 to access the Edge API, but don't use acurl, then you must get an access token and add it to the header of the API request yourself. One way to get an access token is with the get_token utility.

Install acurl

Before you can use acurl, you must install it.

acurl syntax

The acurl utility uses the following syntax:

acurl API_URL -u USERNAME:PASSWORD [-m MFACODE]

or

acurl API_URL -p PASSCODE

Where:

Option Required? Description
API_URL Required The Apigee Edge API endpoint. For a complete list of endpoints, see Apigee API Reference.
USERNAME Optional. A username and password combination or a passcode is required. Your Apigee username, which is usually the email address associated with your Apigee account. You must pass your username or a passcode the first time you call get_token. You will not need to pass your email address in again until the access and refresh tokens have expired. If you are caching tokens for more than one user, you must specify your username in each call.
PASSWORD Optional. A username and password combination or a passcode is required. The password for your Apigee account. If you omit the password, you will be prompted to enter it the first time you use acurl and on any subsequent calls without a valid refresh token. If you do not want to use your password directly in the command, you can use a one-time code passcode instead of your password.
MFACODE Optional A temporary six-digit multi-factor authentication (MFA) code. This code is required if you use -u and have MFA enabled. You will be prompted if omitted (unless in passcode mode). If you do not have MFA enabled, or you have a scripted flow, you can specify -m "" to avoid prompts.
PASSCODE Optional. A username and password combination or a passcode is required. A one-time passcode you can use in place of a password. A passcode is required when authenticating with a SAML IDP, and may be used to authenticate with an LDAP IDP.

For example:

acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval
acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval -u ahamilton@apigee.com
acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval -u ahamilton@apigee.com -p 424242
acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval -u ahamilton@apigee.com:mypassw0rd
acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval -u ahamilton@apigee.com:mypassw0rd -m 123456

In addition to the options shown above, acurl accepts all the curl options. For example, you can pass headers, specify the HTTP verb, add a body, and enable verbosity using standard curl options:

Option acurl meaning curl meaning
-u username username
-m MFA code max time (must use long form --max-time)
-p passcode proxy tunnel (must use long form --proxytunnel)
-v verbose verbose
-h help help (must use long form --help)
acurl -v -X POST -H 'Content-Type: application/json' \
    https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval/apiproducts/myproduct/attributes/attr \
    -u ahamilton@apigee.com -d '{"value":42}'

A successful acurl call returns results based on which Edge API endpoint you called. In addition, acurl stores both the access and refresh tokens in ~/.sso-cli.

You can continue to make calls without entering credentials (password and optional MFA, or passcode) until both the access token and the refresh token expire, as described in Token expiration.

Migrate from curl

If you are using curl, migrating to the acurl utility is straightforward and eliminates the need to manually encode credentials. Once you have downloaded and installed the utility, you can replace:

curl -u username
with:
acurl -u username

The acurl utility will encode your credentials and occasionally prompt you for the additional credentials required to obtain new token pairs.

The acurl utility can also be used to replace curl for machine users. For more information, see OAuth2 for machine users and Machine users in SAML zones.

Call acurl for the first time

The first time you call the API with acurl, you provide your Apigee credentials (the username and password of your Apigee account, or a passcode) so that acurl can exchange them for an access token and refresh token.

The following example shows an initial call with acurl to get details about an organization using the Get Organization endpoint:

acurl https://api.enterprise.apigee.com/v1/organizations/ahamilton-eval \
  -u ahamilton@apigee.com
Enter the password for user 'ahamilton@apigee.com':
[hidden input]
Enter the six-digit code (no spaces) if 'ahamilton@apigee.com' is MFA-enabled or press ENTER:
1a2b3c
{
  "createdAt" : 1491854501264,
  "createdBy" : "noreply_iops@apigee.com",
  "displayName" : "ahamilton",
  "environments" : [ "prod", "test" ],
  "lastModifiedAt" : 1491854501264,
  "lastModifiedBy" : "noreply_iops@apigee.com",
  "name" : "ahamilton",
  "properties" : {
    "property" : [ {
      "name" : "features.isSmbOrganization",
      "value" : "false"
    }, {
      "name" : "features.isCpsEnabled",
      "value" : "true"
    } ]
  },
  "type" : "trial"
}

The acurl utility gets an access token and inserts it into the call to the Edge API endpoint:

curl -H "Authorization: Bearer oauth2_access_token" ...

The access token is stored locally in ~/.sso-cli and used for subsequent calls.

After the access token expires, acurl automatically uses the refresh token to get a new access token. When the refresh token expires, acurl will prompt you for your Apigee credentials.

This request gets details about the "ahamilton-eval" organization. For a complete list of Edge API endpoints, see Apigee API Reference.