Skip to main content
POST
/
v2
/
auth
/
generate_signature
Generate Signature
curl --request POST \
  --url https://api.velt.dev/v2/auth/generate_signature \
  --header 'Content-Type: application/json' \
  --header 'x-velt-api-key: <x-velt-api-key>' \
  --header 'x-velt-auth-token: <x-velt-auth-token>' \
  --data '{
  "data": {
    "permissions": [
      {
        "userId": "<string>",
        "resourceId": "<string>",
        "type": "<string>",
        "hasAccess": true,
        "accessRole": "<string>",
        "expiresAt": 123
      }
    ]
  }
}'
{
  "result": {
    "status": "success",
    "message": "Signature generated successfully.",
    "data": {
      "signature": "a1b2c3d4e5f67890abcdef1234567890abcdef1234567890abcdef1234567890"
    }
  }
}
Use this API to generate a secure signature for Permission Provider responses. The signature validates the integrity of permission decisions returned from your authorization service.
Security Critical: This endpoint must be called from your backend server, never from client-side code. The signature ensures that permission responses haven’t been tampered with.
Permission Provider IntegrationThis API is used in conjunction with the Permission Provider configuration mode. When your onResourceAccessRequired function is called, use this endpoint to generate a secure signature for your permission response.

Endpoint

POST https://api.velt.dev/v2/auth/generate_signature

Headers

x-velt-api-key
string
required
Your API key.
x-velt-auth-token
string
required

Body

Params

data
object
required

Example Requests

1. Generate signature for document access with viewer role and expiration

{
  "data": {
    "permissions": [
      {
        "userId": "user123",
        "resourceId": "document456",
        "type": "document",
        "hasAccess": true,
        "accessRole": "viewer",
        "expiresAt": 1759745729823
      }
    ]
  }
}

2. Generate signature for multiple resources (organization and folder)

{
  "data": {
    "permissions": [
      {
        "userId": "user123",
        "resourceId": "org789",
        "type": "organization",
        "hasAccess": true
      },
      {
        "userId": "user123",
        "resourceId": "folder101",
        "type": "folder",
        "hasAccess": true
      }
    ]
  }
}

3. Generate signature denying access

{
  "data": {
    "permissions": [
      {
        "userId": "user456",
        "resourceId": "document789",
        "type": "document",
        "hasAccess": false
      }
    ]
  }
}

4. Generate signature for document with editor role

{
  "data": {
    "permissions": [
      {
        "userId": "user789",
        "resourceId": "document123",
        "type": "document",
        "hasAccess": true,
        "accessRole": "editor"
      }
    ]
  }
}

5. Generate signature for document with viewer role

{
  "data": {
    "permissions": [
      {
        "userId": "user456",
        "resourceId": "document123",
        "type": "document",
        "hasAccess": true,
        "accessRole": "viewer"
      }
    ]
  }
}

Response

Success Response

{
  "result": {
    "status": "success",
    "message": "Signature generated successfully.",
    "data": {
      "signature": "a1b2c3d4e5f6..."
    }
  }
}

Failure Response

{
  "error": {
    "message": "ERROR_MESSAGE",
    "status": "INVALID_ARGUMENT"
  }
}
{
  "result": {
    "status": "success",
    "message": "Signature generated successfully.",
    "data": {
      "signature": "a1b2c3d4e5f67890abcdef1234567890abcdef1234567890abcdef1234567890"
    }
  }
}
I