Skip to main content
POST
Create or update a CWR registration
This endpoint requires authentication. Include your Bearer token in the Authorization header.

Description

POST /work/registrations Description: Upserts a WorkRegistration keyed on (tenantId, societyCode, workId). workId may be omitted/null for a society-level registration not tied to a specific work. queuedAt is never set by this endpoint — creation always leaves the row un-queued (registrationStatus: pending unless another status is given); use POST .../queue to opt in to PRO submission. Authorization:
  • Required role: admin or higher
Method: POST

Code Examples

Authorizations

Authorization
string
header
required

JWT Authorization header using the Bearer scheme. Format: "Bearer {token}"

Body

application/json

Upsert keyed on (tenantId, societyCode, workId) — an existing row for the same work/society pair is updated (200) rather than duplicated; otherwise a new row is created (201). metadata is shallow-merged into the existing value on update.

societyCode
string
required
Required string length: 2 - 3
societyName
string
required
registrationStatus
enum<string>
required
Available options:
pending,
submitted,
registered,
rejected,
conflict,
cancelled
workId
string<uuid> | null

Omit/null for a society-level registration not tied to a specific work

confirmationNumber
string
registrationId
string
notes
string
metadata
object

Response

Existing registration for this work/society updated

id
string<uuid>
workId
string<uuid> | null
tenantId
integer
societyCode
string

2-3 character society code (e.g. ASCAP, BMI, PRS)

societyName
string
registrationStatus
enum<string>
default:pending
Available options:
pending,
submitted,
registered,
rejected,
conflict,
cancelled
statusDate
string<date-time>
confirmationNumber
string | null
registrationId
string | null

External/society-assigned registration identifier (distinct from the row's own id)

notes
string | null
metadata
object
queuedAt
string<date-time> | null

Set when the row is explicitly queued for PRO submission; null on creation

submittedAt
string<date-time> | null
submissionFileId
string | null
submissionFileHash
string | null
attempts
integer
default:0
lastAttemptAt
string<date-time> | null
lastErrorMessage
string | null
isDeadLettered
boolean
work
object | null

Present when eager-loaded