Change a PDF’s permission flags (edit, print, copy, forms, annotations, etc.) by uploading it to the Solutions API, polling until completion, then returning a download URL for the updated PDF.
# change-pdf-permissions
## Purpose
This skill changes the permission flags of a PDF (e.g., whether it can be printed, edited, or copied) by:
1) accepting a PDF file from the user,
2) accepting desired permission settings (true/false),
3) uploading them to the Solutions API,
4) polling the job status until it is finished,
5) returning the download URL for the updated PDF.
## Credentials
The API requires an API key used as a Bearer token:
- `Authorization: Bearer <API_KEY>`
How the user gets an API key:
- https://login.cross-service-solutions.com/register
- Or the user can provide an API key directly.
**Rule:** never echo or log the API key.
## API endpoints
Base URL:
- `https://api.xss-cross-service-solutions.com/solutions/solutions`
Create permission-change job:
- `POST /api/75`
- `multipart/form-data` parameters:
- `file` — required — PDF file
- `canModify` — required — "true" or "false"
- `canModifyAnnotations` — required — "true" or "false"
- `canPrint` — required — "true" or "false"
- `canPrintHighQuality` — required — "true" or "false"
- `canAssembleDocument` — required — "true" or "false"
- `canFillInForm` — required — "true" or "false"
- `canExtractContent` — required — "true" or "false"
- `canExtractForAccessibility` — required — "true" or "false"
Get result by ID:
- `GET /api/<ID>`
When done, the response contains:
- `output.files[]` with `{ name, path }` where `path` is a downloadable URL.
## Inputs
### Required
- PDF file (binary)
- Permission flags (boolean-like), all required by API:
- canModify
- canModifyAnnotations
- canPrint
- canPrintHighQuality
- canAssembleDocument
- canFillInForm
- canExtractContent
- canExtractForAccessibility
- API key (string)
### Optional
- None
## Defaults (recommended)
If the user does not specify permissions, use a conservative default that disallows modification and extraction, but allows printing:
- canModify: f...
README excerpt
---
## `README.md`
```md
# change-pdf-permissions (OpenClaw Skill)
Change PDF permission flags (edit, print, copy/extract, forms, annotations, etc.) using the Solutions API and return a download URL for the updated PDF.
## What this does
PDF “permissions” are flags that PDF viewers should respect, such as:
- allow printing (and high-quality printing),
- allow editing content,
- allow adding/modifying annotations,
- allow extracting/copying content,
- allow form filling,
- allow assembling pages (insert/delete/rotate).
Note: different viewers may enforce these flags differently.
## What you need
- A PDF file
- Permission flag values (true/false)
- A Solutions API key (Bearer token)
- Register / get key: https://login.cross-service-solutions.com/register
## Defaults (if you don’t specify anything)
- Disallow editing and extracting
- Allow printing (including high quality)
- Allow form filling
- Allow accessibility extraction
You can override all flags via CLI.
## How it works
1) Upload PDF + flags to:
`POST https://api.xss-cross-service-solutions.com/solutions/solutions/api/75`
2) Poll:
`GET https://api.xss-cross-service-solutions.com/solutions/solutions/api/<job_id>`
3) Return `output.files[0].path` as download URL
## Script (CLI)
```bash
python scripts/change_pdf_permissions.py \
--pdf "/path/to/file.pdf" \
--can-modify false \
--can-modify-annotations false \
--can-print true \
--can-print-high-quality true \
--can-assemble-document false \
--can-fill-in-form true \
--can-extract-content false \
--can-extract-for-accessibility true \
--api-key "$SOLUTIONS_API_KEY"