Update integrated account credentials ​
You can use this endpoint to update only the credential fields in an integrated account's context. This endpoint will only accept and update credential-related fields such as API keys, tokens, passwords, and other sensitive authentication data, while preserving all other context fields. Updatable credential fields include: - oauth.token (OAuth tokens and refresh tokens) - api_key, api_token, token - password, client_secret - application_key, app_key, app_secret - access_token, api_secret - auth_code, webhook_secret, webhook_password - token_secret
Endpoint ​
PATCH /integrated-account/{id}/credentialsPath parameters ​
The ID of the integrated account you want to update credentials for.
1ba1f401-7183-47c5-9e39-e8e257e3c795Request Body ​
The credential fields to update in the integrated account context
{
  "oauth": {
    "token": {
      "access_token": "new_access_token",
      "refresh_token": "new_refresh_token"
    }
  }
}Response Body ​
The ID of the integrated account.
1ba1f401-7183-47c5-9e39-e8e257e3c795The ID of the tenant.
acme-1The ID of the environment integration (installed integration).
b179ad55-db02-4bd4-b7a4-d2c173eee9aeThe context of the integrated account. You can find these in the Variables section of an integrated account in the Truto UI.
{
  "zendesk_subdomain": "truto"
}Status of the integrated account.
- active- Everything is fine and the account should work
- connecting- Post install and validation steps are being run
- post_install_error- There was an error while running post install steps
- validation_error- There was an error while running validation steps
- needs_reauth- There was an error while refreshing the credentials in case of OAuth authentication or the credentials are no longer valid in other authentication methods. The integrated account needs to be reauthorized.
- active
- connecting
- post_install_error
- validation_error
- needs_reauth
The last error that occurred while running the post install or validation steps.
The results of the post install and validation steps that ran on the integrated account.
The date and time when the integrated account was created.
2021-08-10T10:00:00.000ZThe date and time when the integrated account was last updated.
2021-08-10T10:00:00.000ZWhether the integrated account is in sandbox mode or not. Sandbox integrated accounts do not allow any "write" operations.
Type of authentication used.
- oauth2
- api_key
- oauth2_client_credentials
- keka_oauth
The ID of the environment this integrated account belongs to.
8a2b104d-74a6-47f2-b93e-c6b611e82391The integration associated with this integrated account.
The ID of the integration.
4a4de828-f4db-4c9e-adfd-434e0864c3c7The name of the integration.
zendeskThe category of the integration.
helpdeskWhether the integration is in beta or not. Beta integrations might not have been tested completely and are not recommended for production environments.
The configuration object defining the underlying API of the integration.
{
  "base_url": "https://api.example.com",
  "label": "Example API Integration",
  "logo": "https://example.com/logo.png",
  "icon": "https://example.com/icon.png",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "User-Agent": "truto"
  },
  "query": {
    "search": "{{search_query}}",
    "filter": "{{filter_criteria}}"
  },
  "query_array_format": "comma",
  "actions": {
    "sync_users": {
      "type": "request",
      "config": {
        "method": "post",
        "path": "/sync/users",
        "headers": {
          "Authorization": "Bearer {{oauth.token.access_token}}"
        },
        "body": {
          "users": "{{context.users}}"
        }
      }
    }
  },
  "credentials": {
    "oauth2": {
      "format": "oauth2",
      "config": {
        "client": {
          "id": "your-client-id",
          "secret": "your-client-secret"
        },
        "auth": {
          "tokenHost": "https://auth.example.com",
          "tokenPath": "/oauth/token",
          "refreshPath": "/oauth/refresh"
        },
        "options": {
          "scopeSeparator": " ",
          "authorizationMethod": "header",
          "bodyFormat": "form"
        },
        "fields": [
          {
            "name": "client_id",
            "label": "Client ID",
            "type": "text",
            "required": true
          },
          {
            "name": "client_secret",
            "label": "Client Secret",
            "type": "password",
            "required": true
          }
        ],
        "tokenParams": {
          "grant_type": "client_credentials"
        },
        "refreshParams": {
          "grant_type": "refresh_token"
        },
        "tokenExpiryDuration": "3600"
      }
    }
  },
  "authorization": {
    "format": "bearer",
    "config": {
      "token": "{{oauth.token.access_token}}"
    }
  },
  "pagination": {
    "format": "page",
    "config": {
      "page_key": "page",
      "limit_key": "per_page"
    }
  },
  "rate_limit": {
    "is_rate_limited": true,
    "retry_after_header_expression": "Retry-After",
    "rate_limit_header_expression": "X-RateLimit-Remaining"
  },
  "resources": {
    "users": {
      "list": {
        "method": "get",
        "path": "/users",
        "response_path": "data.users",
        "headers": {
          "Authorization": "Bearer {{oauth.token.access_token}}"
        },
        "query": {
          "page": "{{pagination.page}}",
          "per_page": "{{pagination.per_page}}"
        },
        "pagination": {
          "format": "page",
          "config": {
            "page_key": "page",
            "limit_key": "per_page"
          }
        },
        "authorization": {
          "format": "bearer",
          "config": {
            "token": "{{oauth.token.access_token}}"
          }
        },
        "rate_limit": {
          "is_rate_limited": true,
          "retry_after_header_expression": "Retry-After",
          "rate_limit_header_expression": "X-RateLimit-Remaining"
        },
        "examples": {
          "response": "{\n  \"data\": {\n    \"users\": [\n      {\n        \"id\": \"123e4567-e89b-12d3-a456-426614174000\",\n        \"name\": \"John Doe\",\n        \"email\": \"john.doe@example.com\"\n      }\n    ]\n  }\n}\n"
        }
      }
    },
    "orders": {
      "create": {
        "method": "post",
        "path": "/orders",
        "body": {
          "user_id": "{{context.user_id}}",
          "items": "{{context.items}}"
        },
        "response_path": "data.order",
        "headers": {
          "Authorization": "Bearer {{oauth.token.access_token}}"
        },
        "authorization": {
          "format": "bearer",
          "config": {
            "token": "{{oauth.token.access_token}}"
          }
        }
      }
    }
  },
  "webhook": {
    "signature_verification": {
      "format": "HMAC-SHA256",
      "config": {
        "secret": "your-webhook-secret",
        "algorithm": "sha256",
        "parts": [
          "header",
          "body"
        ]
      }
    },
    "handle_verification": "verify_webhook_signature"
  },
  "error_expression": "{{response.error}}"
}The ID of the team that owns this integration.
05daecaf-4365-42e8-8370-8127de5dd717The sharing policy of the integration.
- allow
- ask
- deny
allowThe date and time when the integration was created.
2021-08-10T10:00:00.000ZThe date and time when the integration was last updated.
2021-08-10T10:00:00.000ZThe list of context fields that are stored in the object store.