> For the complete documentation index, see [llms.txt](https://docs.papelship.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.papelship.com/qpapel-web-api-reference/staff-management.md).

# Staff Management

Temporary and scope-limited web portal URLs for support moderators.

## List Staff URLs

> Retrieve all active and historical temporary access links created for staff moderators.

```json
{"openapi":"3.0.3","info":{"title":"qPapel Protection Web API","version":"1.0.0"},"tags":[{"name":"Staff Management","description":"Temporary and scope-limited web portal URLs for support moderators."}],"servers":[{"url":"https://papelship.com/api/qpapel/v1","description":"Production Server"}],"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]},{"ApiKeyHeaderLegacy":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API_KEY","description":"Standard HTTP Bearer token authentication header (e.g. `Authorization: Bearer pk_live_...`)."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Custom header API key authentication parameter (`x-api-key: pk_live_...`)."},"ApiKeyHeaderLegacy":{"type":"apiKey","in":"header","name":"api-key","description":"Legacy custom header API key fallback parameter (`api-key: pk_live_...`)."}},"schemas":{"StaffUrl":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"allowed_product_ids":{"type":"array","items":{"type":"integer"}},"usage_limit":{"type":"integer","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"url_path":{"type":"string"},"access_key":{"type":"string"},"is_active":{"type":"integer"}}},"StandardErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}},"responses":{"UnauthorizedError":{"description":"Authentication failed. Missing or invalid developer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/staff-urls":{"get":{"tags":["Staff Management"],"summary":"List Staff URLs","description":"Retrieve all active and historical temporary access links created for staff moderators.","operationId":"listStaffUrls","responses":{"200":{"description":"List of staff management URLs.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"urls":{"type":"array","items":{"$ref":"#/components/schemas/StaffUrl"}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}}}}
```

## Create Staff URL

> Create a time-limited or scoped moderator dashboard URL with explicit capability permissions.

```json
{"openapi":"3.0.3","info":{"title":"qPapel Protection Web API","version":"1.0.0"},"tags":[{"name":"Staff Management","description":"Temporary and scope-limited web portal URLs for support moderators."}],"servers":[{"url":"https://papelship.com/api/qpapel/v1","description":"Production Server"}],"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]},{"ApiKeyHeaderLegacy":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API_KEY","description":"Standard HTTP Bearer token authentication header (e.g. `Authorization: Bearer pk_live_...`)."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Custom header API key authentication parameter (`x-api-key: pk_live_...`)."},"ApiKeyHeaderLegacy":{"type":"apiKey","in":"header","name":"api-key","description":"Legacy custom header API key fallback parameter (`api-key: pk_live_...`)."}},"schemas":{"StaffUrl":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"allowed_product_ids":{"type":"array","items":{"type":"integer"}},"usage_limit":{"type":"integer","nullable":true},"expires_at":{"type":"string","format":"date-time","nullable":true},"url_path":{"type":"string"},"access_key":{"type":"string"},"is_active":{"type":"integer"}}},"StandardErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}},"responses":{"BadRequestError":{"description":"Invalid request body or query parameter structure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"UnauthorizedError":{"description":"Authentication failed. Missing or invalid developer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/staff-urls":{"post":{"tags":["Staff Management"],"summary":"Create Staff URL","description":"Create a time-limited or scoped moderator dashboard URL with explicit capability permissions.","operationId":"createStaffUrl","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["title","description","permissions"],"properties":{"title":{"type":"string","description":"Descriptive label for the staff link."},"description":{"type":"string","description":"Detailed reason or assigned moderator notes."},"permissions":{"type":"array","description":"Action permissions granted to this portal session.","items":{"type":"string","enum":["create_key","delete_key","reset_hwid","ban_key","freeze_key"]}},"allowed_product_ids":{"type":"array","description":"Restrict actions to specific product IDs.","items":{"type":"integer"}},"usage_limit":{"type":"integer","description":"Maximum allowed portal accesses before revocation."},"expires_at":{"type":"string","format":"date-time","description":"Absolute expiration timestamp."},"url_path":{"type":"string","description":"Optional custom URL segment (auto-generated if omitted)."},"access_key":{"type":"string","description":"Optional secret access token (auto-generated if omitted)."}}}}}},"responses":{"200":{"description":"Staff URL created.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"url":{"$ref":"#/components/schemas/StaffUrl"}}}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}}}}
```

## Update Staff URL

> Modify parameters, permissions, or toggle access validity on an existing staff URL.

```json
{"openapi":"3.0.3","info":{"title":"qPapel Protection Web API","version":"1.0.0"},"tags":[{"name":"Staff Management","description":"Temporary and scope-limited web portal URLs for support moderators."}],"servers":[{"url":"https://papelship.com/api/qpapel/v1","description":"Production Server"}],"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]},{"ApiKeyHeaderLegacy":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API_KEY","description":"Standard HTTP Bearer token authentication header (e.g. `Authorization: Bearer pk_live_...`)."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Custom header API key authentication parameter (`x-api-key: pk_live_...`)."},"ApiKeyHeaderLegacy":{"type":"apiKey","in":"header","name":"api-key","description":"Legacy custom header API key fallback parameter (`api-key: pk_live_...`)."}},"schemas":{"StandardSuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"StandardErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}},"responses":{"BadRequestError":{"description":"Invalid request body or query parameter structure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"UnauthorizedError":{"description":"Authentication failed. Missing or invalid developer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/staff-urls/{id}":{"put":{"tags":["Staff Management"],"summary":"Update Staff URL","description":"Modify parameters, permissions, or toggle access validity on an existing staff URL.","operationId":"updateStaffUrl","parameters":[{"name":"id","in":"path","required":true,"description":"Unique database ID of the staff URL record.","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"is_active":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Staff URL updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardSuccessResponse"}}}},"400":{"$ref":"#/components/responses/BadRequestError"},"401":{"$ref":"#/components/responses/UnauthorizedError"}}}}}}
```

## Delete Staff URL

> Permanently revoke and delete a staff URL.

```json
{"openapi":"3.0.3","info":{"title":"qPapel Protection Web API","version":"1.0.0"},"tags":[{"name":"Staff Management","description":"Temporary and scope-limited web portal URLs for support moderators."}],"servers":[{"url":"https://papelship.com/api/qpapel/v1","description":"Production Server"}],"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]},{"ApiKeyHeaderLegacy":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API_KEY","description":"Standard HTTP Bearer token authentication header (e.g. `Authorization: Bearer pk_live_...`)."},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key","description":"Custom header API key authentication parameter (`x-api-key: pk_live_...`)."},"ApiKeyHeaderLegacy":{"type":"apiKey","in":"header","name":"api-key","description":"Legacy custom header API key fallback parameter (`api-key: pk_live_...`)."}},"schemas":{"StandardSuccessResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}},"StandardErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}},"responses":{"UnauthorizedError":{"description":"Authentication failed. Missing or invalid developer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}},"NotFoundError":{"description":"The requested resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardErrorResponse"}}}}}},"paths":{"/staff-urls/{id}":{"delete":{"tags":["Staff Management"],"summary":"Delete Staff URL","description":"Permanently revoke and delete a staff URL.","operationId":"deleteStaffUrl","parameters":[{"name":"id","in":"path","required":true,"description":"Unique database ID of the staff URL record.","schema":{"type":"integer"}}],"responses":{"200":{"description":"Staff URL deleted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardSuccessResponse"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"404":{"$ref":"#/components/responses/NotFoundError"}}}}}}
```
