On this page
No Headings
Use the /v1/oauth2/token endpoint to obtain an access token and pass it as a Bearer token in the Authorization header.
Client CredentialsToken URLhttps://api-m.sandbox.paypal.com/v1/oauth2/tokenInheaderScopes
readwriteapplication/json
TypeScript Definitions
Use the request body type in TypeScript.
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://api-m.sandbox.paypal.com/features" \ -H "Content-Type: application/json" \ -d '{ "code": "seats", "name": "Number of seats", "description": "Number of users allowed in the account", "privileges": [ { "code": "max", "name": "Maximum seats", "value_type": "INTEGER" }, { "code": "max_admins", "name": "Maximum admin users", "value_type": "INTEGER" }, { "code": "root", "name": "Allow root user", "value_type": "BOOLEAN" } ] }'{
"code": "seats",
"name": "Number of seats",
"description": "Number of users allowed in the account",
"privileges": [
{
"code": "max",
"name": "Maximum seats",
"value_type": "INTEGER"
},
{
"code": "max_admins",
"name": "Maximum admin users",
"value_type": "INTEGER"
},
{
"code": "root",
"name": "Allow root user",
"value_type": "BOOLEAN"
}
],
"created_at": "2025-01-28T10:00:00Z"
}{
"name": "INVALID_REQUEST",
"message": "Request is not well-formed, syntactically incorrect, or violates schema.",
"debug_id": "dc99e3955cdd8",
"details": [
{
"field": "/email",
"value": "abc",
"location": "body",
"issue": "INVALID_PARAMETER_VALUE",
"description": "The value of a field does not conform to the expected format."
}
]
}{
"name": "NOT_AUTHORIZED",
"message": "Authorization failed due to insufficient permissions.",
"debug_id": "565f78f101498",
"details": [
{
"issue": "PERMISSION_DENIED",
"description": "You do not have permission to access or perform operations on this resource."
}
]
}{
"name": "UNPROCESSABLE_ENTITY",
"message": "The requested action could not be performed, semantically incorrect, or failed business validation.",
"debug_id": "90957fca61718",
"details": [
{
"field": "transaction_id",
"issue": "RESOURCE_ALREADY_EXISTS",
"description": "The resource identified by `field` already exists."
}
]
}{
"name": "UNPROCESSABLE_ENTITY",
"message": "The requested action could not be performed, semantically incorrect, or failed business validation.",
"debug_id": "90957fca61718",
"details": [
{
"field": "/email",
"value": "[email protected]",
"location": "body",
"issue": "UNSUPPORTED_EMAIL",
"description": "The email provided is not supported."
}
]
}{
"name": "INTERNAL_SERVER_ERROR",
"message": "An internal server error has occurred.",
"debug_id": "90957fca61718"
}Unique identifier for the feature across your entire system. This code is used when creating entitlements and should represent the feature's function (e.g., 'seats', 'api-access', 'API_STORAGE'). Allows alphanumeric characters, underscores, and hyphens.
^[a-zA-Z0-9_-]+$length <= 255Customer-facing name of the feature that clearly describes what functionality or capability it provides. This name appears in billing interfaces and customer portals.
length <= 255Detailed explanation of what this feature provides, its limitations, and how it affects the customer's experience.
length <= 600List of configurable privileges that define what aspects of this feature can be customized when creating entitlements. Each privilege can have different values assigned in different plans or subscriptions. Can be empty if the feature is simply on/off.