Submit a platform registration application for BCCCR review.
{ "name": "<applicant_name>", "email": "<applicant_email>", "password": "<password>", "password_confirmation": "<password>", "platform_name": "<platform_name>", "platform_address": "<business_address>", "tin_number": "<tax_id>", "platform_phone": "<phone_number>", "platform_email": "<platform_contact_email>", "bank_account_number": "<account_number>", "bank_routing_number": "<routing_number>", "bank_name": "<bank_name>", "api_endpoint": "<optional_api_endpoint>" }
{ "success": true, "message": "Platform registration submitted successfully. Your application will be reviewed by BCCCR administrators.", "data": { "platform_name": "<platform_name>", "status": "pending", "registration_date": "<timestamp>" } }
Check the status of a platform registration application.
{ "success": true, "message": "Registration status retrieved", "data": { "platform_name": "<platform_name>", "status": "<pending|active|inactive>", "registration_date": "<timestamp>", "approved_at": "<timestamp>", "admin_notes": "<notes>" } }
Get all pending platform applications (admin only).
{ "success": true, "message": "Pending applications retrieved", "data": [ { "id": <application_id>, "name": "<applicant_name>", "email": "<email>", "platform_name": "<platform_name>", "platform_address": "<address>", "tin_number": "<tax_id>", "platform_phone": "<phone>", "platform_email": "<contact_email>", "bank_name": "<bank>", "created_at": "<timestamp>", "admin_notes": "<notes>" } ] }
Approve a platform application (admin only).
{ "notes": "<optional_admin_notes>" }
{ "success": true, "message": "Platform application approved successfully", "data": { "platform_name": "<platform_name>", "status": "active", "approved_at": "<timestamp>", "api_key": "<generated_api_key>" } }
Reject a platform application (admin only).
{ "notes": "<rejection_reason>" }
{ "success": true, "message": "Platform application rejected", "data": { "platform_name": "<platform_name>", "status": "inactive" } }
Register up to 250 contract hashes for a single publication.
{ "ipfs_hash": "<IPFS hash for the publication>", "metadata_cid": "<IPFS CID for the metadata>", "contract_hashes": [ "<contract_hash_1>", "<contract_hash_2>" // ... up to 250 ] }
{ "success": true, "message": "Contracts registered successfully", "data": { "registered_count": <number>, "ipfs_hash": "<IPFS hash>", "metadata_cid": "<metadata CID>", "contract_hashes": [ ... ] } }
{ "success": false, "message": "Validation failed", "errors": { "contract_hashes": ["Contract hashes already exist: ..."] } }
X-API-Key
headercurl -X POST http://localhost:8000/api/contracts/register \ -H "Content-Type: application/json" \ -H "X-API-Key: <your-api-key>" \ -d '{"ipfs_hash":"QmTest123","metadata_cid":"QmMeta456","contract_hashes":["hash1","hash2"]}'
Validate a contract hash and return legitimacy and usage information.
{ "contract_hash": "<contract_hash>" }
{ "success": true, "message": "Contract found", "data": { "contract_hash": "<contract_hash>", "status": "active", "ipfs_hash": "<IPFS hash>", "metadata_cid": "<metadata CID>", "originating_platform_id": <platform_id>, "originating_platform_name": "<platform name>", "registered_at": "<timestamp>" } }
{ "success": false, "message": "Contract not found", "data": null }
X-API-Key
headercurl -X POST http://localhost:8000/api/contracts/validate \ -H "Content-Type: application/json" \ -H "X-API-Key: <your-api-key>" \ -d '{"contract_hash":"hash1"}'
Revoke a contract. Only the publishing platform can revoke its own contracts.
{ "reason": "<reason for revocation>" }
{ "success": true, "message": "Contract revoked successfully", "data": { "contract_hash": "<contract_hash>", "status": "revoked", "revoked_at": "<timestamp>", "reason": "<reason>" } }
{ "success": false, "message": "Only the publishing platform can revoke this contract", "data": null }
{ "success": false, "message": "Contract is already revoked", "data": null }
X-API-Key
headercurl -X PUT http://localhost:8000/api/contracts/hash1/revoke \ -H "Content-Type: application/json" \ -H "X-API-Key: <your-api-key>" \ -d '{"reason":"No longer valid"}'
Report a cross-platform sale to track royalty obligations between platforms.
{ "contract_hash": "0x1234567890abcdef...", "buyer_wallet_address": "0xabcdef1234567890...", "sale_amount": 29.99, "royalty_amount": 2.99, "transaction_hash": "0x9876543210fedcba...", "metadata": { "payment_method": "credit_card", "currency": "USD", "platform_fee": 1.50 }, "sold_at": "2024-01-15T10:30:00Z" }
{ "success": true, "message": "Sale reported successfully", "data": { "transaction_id": 123, "royalty_id": 456, "contract_hash": "0x1234567890abcdef...", "sale_amount": 29.99, "royalty_amount": 2.99, "sold_at": "2024-01-15T10:30:00Z" } }
{ "success": false, "message": "Validation failed", "errors": { "contract_hash": ["Contract hash is not registered."], "royalty_amount": ["Royalty amount cannot exceed sale amount."] } }
X-API-Key
headercurl -X POST http://localhost:8000/api/sales \ -H "Content-Type: application/json" \ -H "X-API-Key: <your-api-key>" \ -d '{"contract_hash":"0x1234567890abcdef","sale_amount":29.99,"royalty_amount":2.99}'
Report content mirroring with IPFS locations to create a decentralized backup system.
{ "contract_hash": "0x1234567890abcdef...", "mirrored_ipfs_hash": "QmMirroredContent123", "mirror_location": "ipfs-node-1", "access_count": 0, "mirrored_at": "2024-01-15T10:30:00Z" }
{ "success": true, "message": "Content mirror created successfully", "data": { "mirror_id": 123, "contract_hash": "0x1234567890abcdef...", "ipfs_hash": "QmOriginalContent", "mirrored_ipfs_hash": "QmMirroredContent123", "mirror_location": "ipfs-node-1", "access_count": 0, "mirrored_at": "2024-01-15T10:30:00Z", "action": "created" } }
X-API-Key
headercurl -X POST http://localhost:8000/api/mirrors \ -H "Content-Type: application/json" \ -H "X-API-Key: <your-api-key>" \ -d '{"contract_hash":"0x1234567890abcdef","mirrored_ipfs_hash":"QmMirroredContent123"}'
Retrieve all mirrors for a specific IPFS hash to find available content locations.
{ "success": true, "message": "Mirrors retrieved successfully", "data": { "ipfs_hash": "QmOriginalContent", "mirrors": [ { "mirror_id": 123, "mirrored_ipfs_hash": "QmMirroredContent123", "mirror_location": "ipfs-node-1", "platform_name": "Platform A", "access_count": 5, "last_accessed_at": "2024-01-15T10:30:00Z", "mirrored_at": "2024-01-10T09:00:00Z" } ], "total_mirrors": 1 } }
X-API-Key
headercurl -X GET http://localhost:8000/api/mirrors/QmOriginalContent \ -H "X-API-Key: <your-api-key>"