REST API Reference
This API requires the optional add-on mageb2b/customerdocuments-api (MageB2B_CustomerDocumentsApi).
Authentication
Use an Admin/Integration Bearer token.
curl -X POST "https://your-store.com/rest/V1/integration/admin/token" \ -H "Content-Type: application/json" \ -d '{"username":"admin","password":"***"}'
Then call endpoints with:
-H "Authorization: Bearer "
Endpoint Overview
Documents
| Method | URL |
|---|
| GET | /V1/customerdocuments/:id |
| GET | /V1/customerdocuments/search |
| POST | /V1/customerdocuments |
| PUT | /V1/customerdocuments/:id |
| DELETE | /V1/customerdocuments/:id |
Customer Assignments
| Method | URL |
|---|
| GET | /V1/customerdocuments/customer/:id |
| GET | /V1/customerdocuments/customer/search |
| POST | /V1/customerdocuments/customer |
| PUT | /V1/customerdocuments/customer/:id |
| DELETE | /V1/customerdocuments/customer/:id |
Customer Group Assignments
| Method | URL |
|---|
| GET | /V1/customerdocuments/customergroup/:id |
| GET | /V1/customerdocuments/customergroup/search |
| POST | /V1/customerdocuments/customergroup |
| PUT | /V1/customerdocuments/customergroup/:id |
| DELETE | /V1/customerdocuments/customergroup/:id |
Product Assignments
| Method | URL |
|---|
| GET | /V1/customerdocuments/product/:id |
| GET | /V1/customerdocuments/product/search |
| POST | /V1/customerdocuments/product |
| PUT | /V1/customerdocuments/product/:id |
| DELETE | /V1/customerdocuments/product/:id |
| DELETE | /V1/customerdocuments/product/by-product/:productId |
| DELETE | /V1/customerdocuments/product/by-document/:documentId |
Categories
| Method | URL |
|---|
| GET | /V1/customerdocuments/category/:id |
| GET | /V1/customerdocuments/category/search |
| POST | /V1/customerdocuments/category |
| PUT | /V1/customerdocuments/category/:id |
| DELETE | /V1/customerdocuments/category/:id |
Links
| Method | URL |
|---|
| GET | /V1/customerdocuments/links |
| POST | /V1/customerdocuments/links |
| DELETE | /V1/customerdocuments/links/:id |
Request Payloads
General Notes
GET and DELETE routes do not require a request body..../search routes use standard Magento searchCriteria query parameters.
Example:
/V1/customerdocuments/product/search?searchCriteria[filter_groups][0][filters][0][field]=document_id&searchCriteria[filter_groups][0][filters][0][value]=1777&searchCriteria[filter_groups][0][filters][0][condition_type]=eq&searchCriteria[currentPage]=1&searchCriteria[pageSize]=20
POST/PUT /V1/customerdocuments (wrapper: document)
{ "document": { "id": 1777, "name": "Invoice 1001", "description": "January invoice", "is_external": 1, "external_url": "https://example.com/invoice-1001.pdf", "path": "customerdocuments/invoice-1001.pdf", "is_public": 0, "category_id": 829, "website_id": 0, "show_in_sidebar": 1, "valid_from": "2026-01-01", "valid_to": "2026-12-31", "customer_ids": [4801], "customer_group_ids": [1, 3], "document_data": { "base_name": "invoice-1001.pdf", "base64_data": "data:application/pdf;base64,JVBERi0xLjQK..." } } }
POST/PUT /V1/customerdocuments/customer (wrapper: documentCustomer)
{ "documentCustomer": { "id": 4099, "document_id": 1777, "customer_id": 4801 } }
POST/PUT /V1/customerdocuments/customergroup (wrapper: customerGroup)
{ "customerGroup": { "id": 3196, "document_id": 1777, "customer_group_id": 3 } }
POST/PUT /V1/customerdocuments/product (wrapper: documentProduct)
{ "documentProduct": { "id": 385, "document_id": 1777, "product_id": 43432, "store_id": 0, "position": 10 } }
POST/PUT /V1/customerdocuments/category (wrapper: documentCategory)
{ "documentCategory": { "id": 829, "name": "Security Policies" } }
POST /V1/customerdocuments/links (wrapper: documentLink)
{ "documentLink": { "id": 1, "customer_document_id": 1777, "link_entity_type": "customer", "link_entity_id": 4801 } }
Error Codes
| Code | Meaning |
|---|
| 200 | Request accepted/successful |
| 400 | Payload parsing/validation error |
| 401 | Unauthorized |
| 403 | ACL denied |
| 404 | Entity does not exist |
| 500 | Internal API/service-contract/runtime error |