API reference / Admin
12 operations.
/api/v1/admin/plansLive grants (default), past ones (ended or revoked), or one person’s history (?user=).
collector.listAdminPlanGrants()admin:users:read(API keys are coming soon)If-None-MatchX-Request-Id| Name | In | Type | About |
|---|---|---|---|
statusrequired | query | enum | active (live and scheduled, the default) or past (ended or revoked).One of active, pastdefault "active" |
useroptional | query | string (uuid) | One person’s grants. |
countsobjectrequiredactivenumberrequiredpastnumberrequiredcurl 'https://collection.id/api/v1/admin/plans' \
-H "Authorization: Bearer $COLLECTOR_TOKEN"await collector.listAdminPlanGrants({ query: { … } });/api/v1/admin/plansCollector or Pro until a date (or indefinitely), with a reason. Audited; replaces their live grant.
collector.grantAdminPlan()admin:users:write(API keys are coming soon)Idempotency-KeyX-Request-Idobject
userIdstring (uuid)requiredplanenumrequiredOne ofcollectorpro
endsAtstring (date-time) or nullrequiredreasonstringrequired3–500 charactersobject
grantobjectrequiredidstringrequiredplanstringrequiredends_atstring or nullrequiredreplacedarray of stringrequiredGrants this one replaced.
invalid_request: The query or body doesn’t match the schema (see errors[]).
invalid_json: The body isn’t JSON.
invalid_idempotency_key: The Idempotency-Key isn’t 1–255 visible ASCII characters.
not_found: Not an admin (moderator): the same 404 as a missing route.
idempotency_in_progress: The first request with this key is still running.
idempotency_key_reused: This key was used for a different request.
internal: Something went wrong on our side (quote the requestId).
curl -X POST 'https://collection.id/api/v1/admin/plans' \
-H "Authorization: Bearer $COLLECTOR_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H 'Content-Type: application/json' \
-d @body.jsonawait collector.grantAdminPlan({ body: { … } });/api/v1/admin/plans/{id}/revokeAudited; the collector is told.
collector.revokeAdminPlanGrant()admin:users:write(API keys are coming soon)X-Request-Id| Name | In | Type | About |
|---|---|---|---|
idrequired | path | string (uuid) |
object
reasonstringoptionalat most 500 charactersobject
grantobjectrequiredidstringrequiredrevoked_atstringrequiredcurl -X POST 'https://collection.id/api/v1/admin/plans/<id>/revoke' \
-H "Authorization: Bearer $COLLECTOR_TOKEN" \
-H 'Content-Type: application/json' \
-d @body.jsonawait collector.revokeAdminPlanGrant({ path: { id }, body: { … } });/api/v1/admin/reportsBy status (oldest open first), with what was reported and who is responsible.
collector.listAdminReports()admin:users:read(API keys are coming soon)If-None-MatchX-Request-Id| Name | In | Type | About |
|---|---|---|---|
statusoptional | query | enum | Which items (default open).One of open, dismissed, actioneddefault "open" |
countsmap of numberrequiredcurl 'https://collection.id/api/v1/admin/reports' \
-H "Authorization: Bearer $COLLECTOR_TOKEN"await collector.listAdminReports({ query: { … } });/api/v1/admin/reports/{id}Dismiss it, hide the content, suspend the store or disable the account. Audited.
collector.resolveAdminReport()admin:users:write(API keys are coming soon)X-Request-Id| Name | In | Type | About |
|---|---|---|---|
idrequired | path | string (uuid) |
object
actionenumrequiredOne ofdismisshide_contentsuspend_storedisable_account
notestringoptionalat most 1000 charactersobject
invalid_request: The query or body doesn’t match the schema (see errors[]).
invalid_json: The body isn’t JSON.
unsupported_action: That action doesn’t apply to this kind of report.
not_found: Not an admin (moderator): the same 404 as a missing route.
already_resolved: It was already handled.
self_disable: Admins can’t disable their own account.
target_is_admin: The account is an admin; remove admin access first.
internal: Something went wrong on our side (quote the requestId).
curl -X POST 'https://collection.id/api/v1/admin/reports/<id>' \
-H "Authorization: Bearer $COLLECTOR_TOKEN" \
-H 'Content-Type: application/json' \
-d @body.jsonawait collector.resolveAdminReport({ path: { id }, body: { … } });/api/v1/admin/reports/{id}/restoreAudited.
collector.restoreAdminReportedContent()admin:users:write(API keys are coming soon)X-Request-Id| Name | In | Type | About |
|---|---|---|---|
idrequired | path | string (uuid) |
object
curl -X POST 'https://collection.id/api/v1/admin/reports/<id>/restore' \
-H "Authorization: Bearer $COLLECTOR_TOKEN"await collector.restoreAdminReportedContent({ path: { id } });/api/v1/admin/storesWith verification and fee overrides. ?filter=unverified lists active shops awaiting review.
collector.listAdminStores()admin:users:read(API keys are coming soon)If-None-MatchX-Request-Id| Name | In | Type | About |
|---|---|---|---|
qoptional | query | string | |
filteroptional | query | enum | One of all, unverifieddefault "all" |
platformFeeBpsnumberrequiredcurl 'https://collection.id/api/v1/admin/stores' \
-H "Authorization: Bearer $COLLECTOR_TOKEN"await collector.listAdminStores({ query: { … } });/api/v1/admin/stores/{id}Verify or unverify a shop, suspend or reinstate it, set or clear its seller-fee override. Audited.
collector.updateAdminStore()admin:users:write(API keys are coming soon)X-Request-Id| Name | In | Type | About |
|---|---|---|---|
idrequired | path | string (uuid) |
object
isVerifiedbooleanoptionalfeeBpsinteger or nulloptional0–3000statusenumoptionalOne ofactivesuspended
object
storeobjectrequiredisVerifiedbooleanrequiredfeeBpsnumber or nullrequiredstatusstringoptionalcurl -X PATCH 'https://collection.id/api/v1/admin/stores/<id>' \
-H "Authorization: Bearer $COLLECTOR_TOKEN" \
-H 'Content-Type: application/json' \
-d @body.jsonawait collector.updateAdminStore({ path: { id }, body: { … } });/api/v1/admin/supportFrom the Help/Contact form, newest first.
collector.listAdminSupportMessages()admin:support:write(API keys are coming soon)If-None-MatchX-Request-Id| Name | In | Type | About |
|---|---|---|---|
statusoptional | query | enum | Which items (default open).One of open, closed, alldefault "open" |
countsobjectrequiredopennumberrequiredclosednumberrequiredinvalid_request: The query or body doesn’t match the schema (see errors[]).
not_found: Not an admin (moderator): the same 404 as a missing route.
internal: Something went wrong on our side (quote the requestId).
not_migrated: The tool needs a database update that hasn’t been applied yet.
curl 'https://collection.id/api/v1/admin/support' \
-H "Authorization: Bearer $COLLECTOR_TOKEN"await collector.listAdminSupportMessages({ query: { … } });/api/v1/admin/support/{id}Set a support message to closed or back to open.
collector.updateAdminSupportMessage()admin:support:write(API keys are coming soon)X-Request-Id| Name | In | Type | About |
|---|---|---|---|
idrequired | path | string (uuid) |
object
statusenumrequiredOne ofopenclosed
object
invalid_request: The query or body doesn’t match the schema (see errors[]).
invalid_json: The body isn’t JSON.
not_found: Not an admin (moderator): the same 404 as a missing route.
internal: Something went wrong on our side (quote the requestId).
not_migrated: The tool needs a database update that hasn’t been applied yet.
curl -X PATCH 'https://collection.id/api/v1/admin/support/<id>' \
-H "Authorization: Bearer $COLLECTOR_TOKEN" \
-H 'Content-Type: application/json' \
-d @body.jsonawait collector.updateAdminSupportMessage({ path: { id }, body: { … } });/api/v1/admin/usersBy email, username, display name or id, newest first.
collector.searchAdminUsers()admin:users:read(API keys are coming soon)If-None-MatchX-Request-Id| Name | In | Type | About |
|---|---|---|---|
qoptional | query | string | |
offsetoptional | query | integer | 0–100000 · default 0 |
totalnumberrequiredoffsetnumberrequiredlimitnumberrequiredcurl 'https://collection.id/api/v1/admin/users' \
-H "Authorization: Bearer $COLLECTOR_TOKEN"await collector.searchAdminUsers({ query: { … } });/api/v1/admin/users/{id}Grant or remove the admin or moderator role; disable or enable the account. Audited.
collector.updateAdminUser()admin:users:write(API keys are coming soon)X-Request-Id| Name | In | Type | About |
|---|---|---|---|
idrequired | path | string (uuid) |
object
adminbooleanoptionalmoderatorbooleanoptionaldisabledbooleanoptionalobject
invalid_request: The query or body doesn’t match the schema (see errors[]).
invalid_json: The body isn’t JSON.
not_found: Not an admin (moderator): the same 404 as a missing route.
self_demotion: Admins can’t remove their own admin access.
self_disable: Admins can’t disable their own account.
already_admin: Admins already work the moderation queues.
internal: Something went wrong on our side (quote the requestId).
auth_update_failed: The sign-in service refused the change.
curl -X PATCH 'https://collection.id/api/v1/admin/users/<id>' \
-H "Authorization: Bearer $COLLECTOR_TOKEN" \
-H 'Content-Type: application/json' \
-d @body.jsonawait collector.updateAdminUser({ path: { id }, body: { … } });