{"openapi":"3.1.0","info":{"title":"Shortn API","version":"1.0.0"},"components":{"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","bearerFormat":"sk_live_…"}},"schemas":{"Link":{"type":"object","properties":{"id":{"type":"string"},"domain":{"type":"string"},"key":{"type":"string"},"url":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"clicks":{"type":"number"},"lastClickAt":{"type":["string","null"]},"createdAt":{"type":"string"},"createdBy":{"type":["string","null"]},"password":{"type":["object","null"],"properties":{"hint":{"type":["string","null"]}},"required":["hint"]},"safety":{"type":"object","properties":{"status":{"type":"string"},"disabled":{"type":"boolean"},"interstitial":{"type":"boolean"}},"required":["status","disabled","interstitial"]},"health":{"type":"object","properties":{"flagged":{"type":"boolean"},"checkedAt":{"type":["string","null"],"format":"date-time"},"nextCheckAt":{"type":"string","format":"date-time"},"checks":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"string","enum":["ok","http_error","unreachable","blocked"]},"httpStatus":{"type":["integer","null"],"minimum":100,"maximum":599},"checkedAt":{"type":"string","format":"date-time"},"streak":{"type":"integer","minimum":0},"failingSince":{"type":["string","null"],"format":"date-time"},"error":{"type":["string","null"]}},"required":["url","status","httpStatus","checkedAt","streak","failingSince","error"]}}},"required":["flagged","checkedAt","nextCheckAt","checks"]},"rules":{"type":"object","properties":{"activeFrom":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"deepLink":{"type":"object","properties":{"ios":{"type":"string","minLength":1,"maxLength":2048},"android":{"type":"string","minLength":1,"maxLength":2048},"fallback":{"type":"string","enum":["web","store"]},"store":{"type":"object","properties":{"ios":{"type":"string","maxLength":2048,"format":"uri"},"android":{"type":"string","maxLength":2048,"format":"uri"}},"additionalProperties":false}},"required":["fallback"],"additionalProperties":false},"maxClicks":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Approximate lifetime non-bot destination visit limit, including scans. Concurrent and queued visits may overshoot."},"rotation":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"weight":{"type":"number","exclusiveMinimum":0,"maximum":1000000}},"required":["url","weight"],"additionalProperties":false},"minItems":1,"maxItems":10},"geo":{"type":"array","items":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$"},"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["country","url"],"additionalProperties":false},"maxItems":10},"device":{"type":"array","items":{"type":"object","properties":{"os":{"type":"string","enum":["ios","android","windows","macos"]},"device":{"type":"string","enum":["mobile","tablet","desktop"]},"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["url"],"additionalProperties":false},"maxItems":10},"expiredUrl":{"type":"string","maxLength":2048,"format":"uri"},"forwardQuery":{"type":"boolean"},"utm":{"type":"object","properties":{"source":{"type":"string","maxLength":200},"medium":{"type":"string","maxLength":200},"campaign":{"type":"string","maxLength":200},"term":{"type":"string","maxLength":200},"content":{"type":"string","maxLength":200}},"additionalProperties":false},"permanent":{"type":"boolean"}},"additionalProperties":false},"og":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":500},"image":{"type":"string","maxLength":2048,"format":"uri"}},"additionalProperties":false},"expanded":{"type":"object","properties":{"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}},"campaign":{"type":"array","items":{"$ref":"#/components/schemas/Campaign"}}}},"qrCodeId":{"type":["string","null"]},"deletedAt":{"type":["string","null"]},"restoreUntil":{"type":["string","null"]},"utm":{"type":"array","items":{"type":"object","properties":{"source":{"type":["string","null"]},"medium":{"type":["string","null"]},"campaign":{"type":["string","null"]},"term":{"type":["string","null"]},"content":{"type":["string","null"]}},"required":["source","medium","campaign","term","content"]}}},"required":["id","domain","key","url","title","description","tags","clicks","lastClickAt","createdAt","createdBy","password","safety","qrCodeId","utm"]},"Tag":{"type":"object","properties":{"id":{"type":"string"},"legacyId":{"type":["string","null"]},"name":{"type":"string"},"createdAt":{"type":"string"},"createdBy":{"type":["string","null"]}},"required":["id","legacyId","name","createdAt","createdBy"]},"Campaign":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":["string","null"]},"linkCount":{"type":"number"},"utmDefaults":{"type":"object","properties":{"sources":{"type":"array","items":{"type":"string"}},"mediums":{"type":"array","items":{"type":"string"}},"terms":{"type":"array","items":{"type":"string"}},"contents":{"type":"array","items":{"type":"string"}}},"required":["sources","mediums","terms","contents"]},"createdAt":{"type":"string"},"createdBy":{"type":["string","null"]}},"required":["id","title","description","linkCount","utmDefaults","createdAt","createdBy"]},"Problem":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"number"},"code":{"type":"string"},"instance":{"type":"string"},"context":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}]}}},"required":["type","title","status","code","instance"]},"CreateLinksBulk":{"type":"object","properties":{"links":{"type":"array","items":{"$ref":"#/components/schemas/CreateLink"},"minItems":1,"maxItems":1000}},"required":["links"],"additionalProperties":false},"CreateLink":{"type":"object","properties":{"url":{"type":"string","maxLength":8192},"rules":{"type":"object","properties":{"activeFrom":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"deepLink":{"type":"object","properties":{"ios":{"type":"string","minLength":1,"maxLength":2048},"android":{"type":"string","minLength":1,"maxLength":2048},"fallback":{"type":"string","enum":["web","store"]},"store":{"type":"object","properties":{"ios":{"type":"string","maxLength":2048,"format":"uri"},"android":{"type":"string","maxLength":2048,"format":"uri"}},"additionalProperties":false}},"required":["fallback"],"additionalProperties":false},"maxClicks":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Approximate lifetime non-bot destination visit limit, including scans. Concurrent and queued visits may overshoot."},"rotation":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"weight":{"type":"number","exclusiveMinimum":0,"maximum":1000000}},"required":["url","weight"],"additionalProperties":false},"minItems":1,"maxItems":10},"geo":{"type":"array","items":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$"},"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["country","url"],"additionalProperties":false},"maxItems":10},"device":{"type":"array","items":{"type":"object","properties":{"os":{"type":"string","enum":["ios","android","windows","macos"]},"device":{"type":"string","enum":["mobile","tablet","desktop"]},"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["url"],"additionalProperties":false},"maxItems":10},"expiredUrl":{"type":"string","maxLength":2048,"format":"uri"},"forwardQuery":{"type":"boolean"},"utm":{"type":"object","properties":{"source":{"type":"string","maxLength":200},"medium":{"type":"string","maxLength":200},"campaign":{"type":"string","maxLength":200},"term":{"type":"string","maxLength":200},"content":{"type":"string","maxLength":200}},"additionalProperties":false},"permanent":{"type":"boolean"}},"additionalProperties":false},"og":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":500},"image":{"type":"string","maxLength":2048,"format":"uri"}},"additionalProperties":false},"domain":{"type":"string","maxLength":253},"key":{"type":"string","maxLength":100},"title":{"type":"string","maxLength":500},"description":{"type":"string","maxLength":5000},"tags":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":100},"password":{"type":"string","maxLength":200},"passwordHint":{"type":"string","maxLength":100}},"required":["url"],"additionalProperties":false},"UpdateLink":{"type":"object","properties":{"url":{"type":"string","maxLength":8192},"rules":{"type":["object","null"],"properties":{"activeFrom":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"deepLink":{"type":"object","properties":{"ios":{"type":"string","minLength":1,"maxLength":2048},"android":{"type":"string","minLength":1,"maxLength":2048},"fallback":{"type":"string","enum":["web","store"]},"store":{"type":"object","properties":{"ios":{"type":"string","maxLength":2048,"format":"uri"},"android":{"type":"string","maxLength":2048,"format":"uri"}},"additionalProperties":false}},"required":["fallback"],"additionalProperties":false},"maxClicks":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Approximate lifetime non-bot destination visit limit, including scans. Concurrent and queued visits may overshoot."},"rotation":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"weight":{"type":"number","exclusiveMinimum":0,"maximum":1000000}},"required":["url","weight"],"additionalProperties":false},"minItems":1,"maxItems":10},"geo":{"type":"array","items":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$"},"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["country","url"],"additionalProperties":false},"maxItems":10},"device":{"type":"array","items":{"type":"object","properties":{"os":{"type":"string","enum":["ios","android","windows","macos"]},"device":{"type":"string","enum":["mobile","tablet","desktop"]},"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["url"],"additionalProperties":false},"maxItems":10},"expiredUrl":{"type":"string","maxLength":2048,"format":"uri"},"forwardQuery":{"type":"boolean"},"utm":{"type":"object","properties":{"source":{"type":"string","maxLength":200},"medium":{"type":"string","maxLength":200},"campaign":{"type":"string","maxLength":200},"term":{"type":"string","maxLength":200},"content":{"type":"string","maxLength":200}},"additionalProperties":false},"permanent":{"type":"boolean"}},"additionalProperties":false},"og":{"type":["object","null"],"properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":500},"image":{"type":"string","maxLength":2048,"format":"uri"}},"additionalProperties":false},"key":{"type":"string","maxLength":100},"title":{"type":"string","maxLength":500},"description":{"type":["string","null"],"maxLength":5000},"tags":{"type":"array","items":{"type":"string","maxLength":100},"maxItems":100},"password":{"type":"string","maxLength":200},"passwordHint":{"type":["string","null"],"maxLength":100},"removePassword":{"type":"boolean"}},"additionalProperties":false},"Workspace":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"personal":{"type":"boolean"},"defaultDomain":{"type":"string"},"plan":{"type":"string","enum":["free","basic","plus","pro","enterprise"]},"role":{"type":"string","enum":["owner","admin","member","viewer"]},"createdAt":{"type":"string"}},"required":["id","name","slug","personal","defaultDomain","plan","role","createdAt"]},"WorkspaceUsage":{"type":"object","properties":{"period":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}},"required":["start","end"]},"links":{"type":"object","properties":{"consumed":{"type":"integer","minimum":0},"limit":{"type":["number","null"]},"remaining":{"type":["number","null"]}},"required":["consumed","limit","remaining"]},"qrCodes":{"type":"object","properties":{"consumed":{"type":"integer","minimum":0},"limit":{"type":["number","null"]},"remaining":{"type":["number","null"]}},"required":["consumed","limit","remaining"]},"bioPages":{"type":"object","properties":{"consumed":{"type":"integer","minimum":0},"limit":{"type":["number","null"]},"remaining":{"type":["number","null"]}},"required":["consumed","limit","remaining"]}},"required":["period","links","qrCodes","bioPages"]},"CreateCampaign":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":5000}},"required":["title"],"additionalProperties":false},"UpdateCampaign":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":80},"description":{"type":["string","null"],"maxLength":5000},"utmDefaults":{"type":"object","properties":{"sources":{"type":"array","items":{"type":"string","maxLength":200},"maxItems":100},"mediums":{"type":"array","items":{"type":"string","maxLength":200},"maxItems":100},"terms":{"type":"array","items":{"type":"string","maxLength":200},"maxItems":100},"contents":{"type":"array","items":{"type":"string","maxLength":200},"maxItems":100}},"required":["sources","mediums","terms","contents"],"additionalProperties":false}},"additionalProperties":false},"QrCode":{"type":"object","properties":{"id":{"type":"string"},"publicId":{"type":"string"},"key":{"type":"string"},"shortUrl":{"type":"string"},"url":{"type":"string"},"title":{"type":"string"},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"scans":{"type":"number"},"lastScanAt":{"type":["string","null"]},"design":{"type":"object","properties":{"width":{"type":"integer","minimum":64,"maximum":4096},"height":{"type":"integer","minimum":64,"maximum":4096},"type":{"type":"string","enum":["svg","canvas"]},"shape":{"type":"string","enum":["square","circle"]},"frameOptions":{"type":"object","properties":{"style":{"type":"string","enum":["none","outline","solid"]},"caption":{"type":"string","maxLength":64}}},"data":{"type":"string","maxLength":2048},"image":{"type":"string","maxLength":2048},"margin":{"type":"integer","minimum":0,"maximum":100},"dotsOptions":{"type":"object","properties":{"color":{"type":"string","maxLength":32},"type":{"type":"string","maxLength":32}}},"backgroundOptions":{"type":"object","properties":{"color":{"type":"string","maxLength":32}}},"cornersSquareOptions":{"type":"object","properties":{"color":{"type":"string","maxLength":32},"type":{"type":"string","maxLength":32}}},"cornersDotOptions":{"type":"object","properties":{"color":{"type":"string","maxLength":32},"type":{"type":"string","maxLength":32}}},"imageOptions":{"type":"object","properties":{"crossOrigin":{"type":"string","maxLength":32},"margin":{"type":"integer","minimum":0,"maximum":50},"hideBackgroundDots":{"type":"boolean"},"imageSize":{"type":"number","minimum":0,"maximum":1}}},"qrOptions":{"type":"object","properties":{"errorCorrectionLevel":{"type":"string","enum":["L","M","Q","H"]}}}}},"storedDesign":{"type":"object","additionalProperties":{}},"attachedLinkKey":{"type":["string","null"]},"createdAt":{"type":"string"},"createdBy":{"type":["string","null"]}},"required":["id","publicId","key","shortUrl","url","title","tags","scans","lastScanAt","design","storedDesign","attachedLinkKey","createdAt","createdBy"]},"CreateQrCode":{"type":"object","properties":{"url":{"type":"string","maxLength":8192},"title":{"type":"string","maxLength":500},"tags":{"type":"array","items":{"type":"string","maxLength":48},"maxItems":50},"design":{"type":"object","properties":{"width":{"type":"integer","minimum":64,"maximum":4096},"height":{"type":"integer","minimum":64,"maximum":4096},"type":{"type":"string","enum":["svg","canvas"]},"shape":{"type":"string","enum":["square","circle"]},"frameOptions":{"type":"object","properties":{"style":{"type":"string","enum":["none","outline","solid"]},"caption":{"type":"string","maxLength":64}}},"data":{"type":"string","maxLength":2048},"image":{"type":"string","maxLength":2048},"margin":{"type":"integer","minimum":0,"maximum":100},"dotsOptions":{"type":"object","properties":{"color":{"type":"string","maxLength":32},"type":{"type":"string","maxLength":32}}},"backgroundOptions":{"type":"object","properties":{"color":{"type":"string","maxLength":32}}},"cornersSquareOptions":{"type":"object","properties":{"color":{"type":"string","maxLength":32},"type":{"type":"string","maxLength":32}}},"cornersDotOptions":{"type":"object","properties":{"color":{"type":"string","maxLength":32},"type":{"type":"string","maxLength":32}}},"imageOptions":{"type":"object","properties":{"crossOrigin":{"type":"string","maxLength":32},"margin":{"type":"integer","minimum":0,"maximum":50},"hideBackgroundDots":{"type":"boolean"},"imageSize":{"type":"number","minimum":0,"maximum":1}}},"qrOptions":{"type":"object","properties":{"errorCorrectionLevel":{"type":"string","enum":["L","M","Q","H"]}}}}},"attachToLinkId":{"type":"string","pattern":"^[a-f\\d]{24}$/i"}},"required":["url"],"additionalProperties":false},"QrZipExportJob":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["pending","running","completed","failed"]},"phase":{"type":"string","enum":["rendering","assembling"]},"itemFormat":{"type":"string","enum":["svg","png","pdf"]},"size":{"type":"number"},"total":{"type":"number"},"done":{"type":"number"},"limit":{"type":"number"},"maximumBytes":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"error":{"type":"string"},"failedQrId":{"type":"string"},"downloadUrl":{"type":"string","format":"uri"},"downloadExpiresAt":{"type":"string","format":"date-time"}},"required":["id","state","phase","itemFormat","size","total","done","limit","maximumBytes","createdAt","expiresAt"]},"QrExportJob":{"type":"object","properties":{"id":{"type":"string"},"state":{"type":"string","enum":["pending","running","completed","failed"]},"format":{"type":"string","enum":["svg","png","pdf"]},"size":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"error":{"type":"string"},"print":{"type":"object","properties":{"minimumMm":{"type":"number"},"quietModules":{"type":"number"},"correction":{"type":"string"}},"required":["minimumMm","quietModules","correction"]},"downloadUrl":{"type":"string","format":"uri"},"downloadExpiresAt":{"type":"string","format":"date-time"}},"required":["id","state","format","size","createdAt","expiresAt"]},"UpdateQrCode":{"type":"object","properties":{"url":{"type":"string","maxLength":8192},"title":{"type":"string","maxLength":500},"tags":{"type":"array","items":{"type":"string","maxLength":48},"maxItems":50},"design":{"type":"object","properties":{"width":{"type":"integer","minimum":64,"maximum":4096},"height":{"type":"integer","minimum":64,"maximum":4096},"type":{"type":"string","enum":["svg","canvas"]},"shape":{"type":"string","enum":["square","circle"]},"frameOptions":{"type":"object","properties":{"style":{"type":"string","enum":["none","outline","solid"]},"caption":{"type":"string","maxLength":64}}},"data":{"type":"string","maxLength":2048},"image":{"type":"string","maxLength":2048},"margin":{"type":"integer","minimum":0,"maximum":100},"dotsOptions":{"type":"object","properties":{"color":{"type":"string","maxLength":32},"type":{"type":"string","maxLength":32}}},"backgroundOptions":{"type":"object","properties":{"color":{"type":"string","maxLength":32}}},"cornersSquareOptions":{"type":"object","properties":{"color":{"type":"string","maxLength":32},"type":{"type":"string","maxLength":32}}},"cornersDotOptions":{"type":"object","properties":{"color":{"type":"string","maxLength":32},"type":{"type":"string","maxLength":32}}},"imageOptions":{"type":"object","properties":{"crossOrigin":{"type":"string","maxLength":32},"margin":{"type":"integer","minimum":0,"maximum":50},"hideBackgroundDots":{"type":"boolean"},"imageSize":{"type":"number","minimum":0,"maximum":1}}},"qrOptions":{"type":"object","properties":{"errorCorrectionLevel":{"type":"string","enum":["L","M","Q","H"]}}}}},"applyToLink":{"type":"boolean"}},"additionalProperties":false},"WriteTag":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":48}},"required":["name"],"additionalProperties":false},"Analytics":{"type":"object","properties":{"range":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"clampedFrom":{"type":["string","null"],"format":"date-time"}},"required":["from","to","clampedFrom"]},"totals":{"type":"object","properties":{"clicks":{"type":"number"},"scans":{"type":"number"},"uniques":{"type":"number"}},"required":["clicks","scans","uniques"]},"previous":{"type":"object","properties":{"clicks":{"type":"number"},"scans":{"type":"number"},"uniques":{"type":"number"}},"required":["clicks","scans","uniques"]},"series":{"type":"array","items":{"type":"object","properties":{"t":{"type":"string","format":"date-time"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["t","clicks","scans"]}},"breakdowns":{"type":"object","properties":{"branch":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"country":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"city":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"continent":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"device":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"browser":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"os":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"referrer":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"utmSource":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"utmMedium":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"utmCampaign":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"utmTerm":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"utmContent":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"language":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"link":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}},"kind":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"clicks":{"type":"number"},"scans":{"type":"number"}},"required":["value","clicks","scans"]}}}},"gated":{"type":"array","items":{"type":"string","enum":["branch","country","city","continent","device","browser","os","referrer","utmSource","utmMedium","utmCampaign","utmTerm","utmContent","language","link","kind"]}},"options":{"type":"object","properties":{"branch":{"type":"array","items":{"type":"string"}},"country":{"type":"array","items":{"type":"string"}},"city":{"type":"array","items":{"type":"string"}},"continent":{"type":"array","items":{"type":"string"}},"device":{"type":"array","items":{"type":"string"}},"browser":{"type":"array","items":{"type":"string"}},"os":{"type":"array","items":{"type":"string"}},"referrer":{"type":"array","items":{"type":"string"}},"utmSource":{"type":"array","items":{"type":"string"}},"utmMedium":{"type":"array","items":{"type":"string"}},"utmCampaign":{"type":"array","items":{"type":"string"}},"utmTerm":{"type":"array","items":{"type":"string"}},"utmContent":{"type":"array","items":{"type":"string"}},"language":{"type":"array","items":{"type":"string"}},"link":{"type":"array","items":{"type":"string"}},"kind":{"type":"array","items":{"type":"string"}}}},"linkLabels":{"type":"object","additionalProperties":{"type":"string"}},"scopeFilters":{"type":"object","additionalProperties":{"type":"string"}}},"required":["range","totals","previous","series","breakdowns","gated","options","linkLabels","scopeFilters"]},"Domain":{"type":"object","properties":{"id":{"type":"string"},"hostname":{"type":"string"},"kind":{"type":"string"},"status":{"type":"string"},"error":{"type":"string"},"verification":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"}},"required":["type"]},"validationRecords":{"type":"array","items":{"type":"object","properties":{"txt_name":{"type":"string"},"txt_value":{"type":"string"}}}},"removing":{"type":"boolean"},"bioPageId":{"type":"string"},"createdAt":{"type":["string","null"],"format":"date-time"},"updatedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","hostname","kind","status","error","validationRecords","removing","createdAt","updatedAt"]},"BioSummary":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"title":{"type":"string"},"linkCount":{"type":"number"},"avatarUrl":{"type":["string","null"]},"updatedAt":{"type":"string","format":"date-time"},"createdBy":{"type":["string","null"]}},"required":["id","slug","title","linkCount","avatarUrl","updatedAt","createdBy"]},"BioDraft":{"type":"object","properties":{"id":{"type":"string"},"handle":{"type":"string"},"revision":{"type":"number"},"publishedRevision":{"type":"number"},"published":{"type":"boolean"},"content":{"type":"object","properties":{"locale":{"type":"string","enum":["en","pt","es"],"default":"en"},"blocks":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["profile"]},"title":{"type":"string","maxLength":120},"description":{"type":"string","maxLength":500,"default":""},"avatar":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"string","enum":[""]}],"default":""},"align":{"type":"string","enum":["center","left","right"],"default":"center"},"avatarShape":{"type":"string","enum":["circle","rounded","square"],"default":"circle"},"paidBadge":{"type":"boolean"}},"required":["id","type","title"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["link"]},"linkId":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"title":{"type":"string","maxLength":120},"image":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"string","enum":[""]}],"default":""},"highlight":{"type":"boolean","default":false}},"required":["id","type","linkId","title"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["links"]},"title":{"type":"string","maxLength":120,"default":""},"layout":{"type":"string","enum":["vertical","paginated"],"default":"vertical"},"pageSize":{"type":"integer","minimum":4,"maximum":50,"default":10},"cardStyle":{"type":"string","enum":["list","small-grid","large-grid","image-grid"],"default":"list"},"cardContent":{"type":"string","enum":["image-text","image-only","text"],"default":"image-text"},"cardRadius":{"type":"string","enum":["theme","square","rounded"],"default":"theme"},"imageFit":{"type":"string","enum":["cover","contain"],"default":"cover"},"linkSurface":{"type":"string","enum":["theme","minimal","soft","filled","outline"],"default":"theme"},"linkBorder":{"type":"string","enum":["theme","none","subtle","solid","divider"],"default":"theme"},"linkWeight":{"type":"string","enum":["theme","regular","medium","bold"],"default":"theme"},"linkSpacing":{"type":"string","enum":["compact","comfortable","spacious"],"default":"comfortable"},"showLinkArrow":{"type":"boolean","default":true},"paginationAppearance":{"type":"string","enum":["muted","minimal","outline","filled"],"default":"muted"},"paginationSize":{"type":"string","enum":["small","comfortable"],"default":"small"},"paginationStyle":{"type":"string","enum":["arrows","labels"],"default":"arrows"},"showPageCount":{"type":"boolean","default":true},"showLinkCount":{"type":"boolean","default":false},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"linkId":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"title":{"type":"string","maxLength":120},"image":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"string","enum":[""]}],"default":""},"highlight":{"type":"boolean","default":false}},"required":["id","linkId","title"]},"maxItems":1000}},"required":["id","type","items"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["socials"]},"items":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","minLength":1,"maxLength":32},"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["platform","url"]},"maxItems":20}},"required":["id","type","items"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["header"]},"text":{"type":"string","maxLength":120}},"required":["id","type","text"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["text"]},"text":{"type":"string","maxLength":2000}},"required":["id","type","text"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["image"]},"url":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"string","enum":[""]}]},"alt":{"type":"string","maxLength":300},"link":{"type":"string","maxLength":2048,"format":"uri"}},"required":["id","type","url","alt"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["embed"]},"provider":{"type":"string","enum":["youtube","spotify","soundcloud","vimeo","apple-music"]},"url":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"string","enum":[""]}]}},"required":["id","type","provider","url"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["qr"]},"linkId":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"title":{"type":"string","maxLength":120,"default":""}},"required":["id","type","linkId"]}]},"maxItems":150},"theme":{"type":"object","properties":{"background":{"type":"string","pattern":"^#[a-f\\d]{6}$/i"},"surface":{"type":"string","pattern":"^#[a-f\\d]{6}$/i"},"text":{"type":"string","pattern":"^#[a-f\\d]{6}$/i"},"accent":{"type":"string","pattern":"^#[a-f\\d]{6}$/i"},"buttonStyle":{"type":"string","enum":["fill","outline","soft","shadow-less"]},"radius":{"anyOf":[{"type":"number","enum":[0]},{"type":"number","enum":[6]},{"type":"number","enum":[12]},{"type":"number","enum":[999]}]},"font":{"type":"string","enum":["Geist","Inter","Roboto","Open Sans","Lato","Montserrat","Poppins","DM Sans","Space Grotesk","Nunito","Raleway","Playfair Display","Merriweather","Lora","Oswald","Source Serif 4"]},"density":{"type":"string","enum":["comfortable","compact"]},"backgroundImage":{"type":"string","maxLength":2048,"format":"uri"},"legacyFont":{"type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9 -]{0,63}$"}},"required":["background","surface","text","accent","buttonStyle","radius","font","density"]},"seo":{"type":"object","properties":{"favicon":{"type":"string","maxLength":2048,"format":"uri"},"title":{"type":"string","maxLength":120,"default":""},"description":{"type":"string","maxLength":500,"default":""},"noindex":{"type":"boolean","default":false}}},"hideBranding":{"type":"boolean","default":false}},"required":["blocks","theme","seo"]}},"required":["id","handle","revision","publishedRevision","published","content"]},"Webhook":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string","enum":["link.created","link.updated","link.deleted","link.clicked","qr.scanned","bio.published","domain.verified","import.completed"]}},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"failureSince":{"type":["string","null"],"format":"date-time"},"disabledAt":{"type":["string","null"],"format":"date-time"}},"required":["id","name","url","events","enabled","createdAt","updatedAt","failureSince","disabledAt"]}},"parameters":{}},"paths":{"/v1/links":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^\\d+_[a-f\\d]{24}$/i"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","maxLength":200},"required":false,"name":"search","in":"query"},{"schema":{"type":"string","maxLength":2000},"required":false,"name":"tags","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"false"},"required":false,"name":"trash","in":"query"},{"schema":{"type":"string","maxLength":100,"pattern":"^(?:tags|campaign)(?:,(?:tags|campaign))*$","description":"Comma-separated full metadata expansions: tags,campaign. Each requires its resource read scope. Results are in expanded.tags / expanded.campaign arrays; unavailable references are omitted."},"required":false,"description":"Comma-separated full metadata expansions: tags,campaign. Each requires its resource read scope. Results are in expanded.tags / expanded.campaign arrays; unavailable references are omitted.","name":"expand","in":"query"}],"responses":{"200":{"description":"Paginated links","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Link"}},"nextCursor":{"type":["string","null"]},"total":{"type":["number","null"]}},"required":["items","nextCursor","total"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLink"}}}},"responses":{"201":{"description":"Created link","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Link"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/links/by-key":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"required":true,"name":"key","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":253},"required":false,"name":"domain","in":"query"},{"schema":{"type":"string","maxLength":100,"pattern":"^(?:tags|campaign)(?:,(?:tags|campaign))*$","description":"Comma-separated full metadata expansions: tags,campaign. Each requires its resource read scope. Results are in expanded.tags / expanded.campaign arrays; unavailable references are omitted."},"required":false,"description":"Comma-separated full metadata expansions: tags,campaign. Each requires its resource read scope. Results are in expanded.tags / expanded.campaign arrays; unavailable references are omitted.","name":"expand","in":"query"}],"responses":{"200":{"description":"A workspace link identified by domain and short key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Link"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/links/by-key/{domain}/{key}":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":253},"required":true,"name":"domain","in":"path"},{"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$"},"required":true,"name":"key","in":"path"},{"schema":{"type":"string","maxLength":100,"pattern":"^(?:tags|campaign)(?:,(?:tags|campaign))*$","description":"Comma-separated full metadata expansions: tags,campaign. Each requires its resource read scope. Results are in expanded.tags / expanded.campaign arrays; unavailable references are omitted."},"required":false,"description":"Comma-separated full metadata expansions: tags,campaign. Each requires its resource read scope. Results are in expanded.tags / expanded.campaign arrays; unavailable references are omitted.","name":"expand","in":"query"}],"responses":{"200":{"description":"Link by domain and short key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Link"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/links/{id}":{"delete":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Link moved to trash for 30 days; keys remain reserved"},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","maxLength":100,"pattern":"^(?:tags|campaign)(?:,(?:tags|campaign))*$","description":"Comma-separated full metadata expansions: tags,campaign. Each requires its resource read scope. Results are in expanded.tags / expanded.campaign arrays; unavailable references are omitted."},"required":false,"description":"Comma-separated full metadata expansions: tags,campaign. Each requires its resource read scope. Results are in expanded.tags / expanded.campaign arrays; unavailable references are omitted.","name":"expand","in":"query"}],"responses":{"200":{"description":"Link","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Link"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLink"}}}},"responses":{"200":{"description":"Updated link","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Link"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/links/{id}/restore":{"post":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Restored link","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Link"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/links/bulk":{"post":{"security":[{"ApiKey":[]}],"description":"Atomically create 1–1000 links, within the 1 MiB request body limit. Validation or quota failure creates no links or tags. Use Idempotency-Key for safe retries. The response preserves input order. Error context.index is zero-based; quota errors include limit, used and requested.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLinksBulk"}}}},"responses":{"201":{"description":"All requested links created","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Link"}},"count":{"type":"integer"}},"required":["items","count"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/workspace":{"get":{"security":[{"ApiKey":[]}],"responses":{"200":{"description":"The workspace associated with the bearer key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/workspace/usage":{"get":{"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Monthly link/QR creation usage and current bio-page usage; null limits mean unlimited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceUsage"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/campaigns":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","maxLength":200},"required":false,"name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Campaigns in descending ID order, with bounded cursor pagination","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Campaign"}},"total":{"type":["number","null"]},"nextCursor":{"type":["string","null"]}},"required":["items","total","nextCursor"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCampaign"}}}},"responses":{"201":{"description":"Created campaign","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Campaign"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/campaigns/{id}":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Campaign","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Campaign"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCampaign"}}}},"responses":{"200":{"description":"Updated campaign","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Campaign"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Campaign removed; linked short URLs are retained"},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/qr-codes":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","maxLength":200},"required":false,"name":"search","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"required":false,"name":"tag","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"QR codes in descending ID order with bounded cursor pagination","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/QrCode"}},"nextCursor":{"type":["string","null"]},"total":{"type":["number","null"]}},"required":["data","nextCursor","total"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateQrCode"}}}},"responses":{"201":{"description":"QR code created with an independent backing short URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrCode"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/qr-codes/{id}":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Workspace-owned QR code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrCode"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateQrCode"}}}},"responses":{"200":{"description":"Updated QR code; applying changes to its attached link also requires links:write","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrCode"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"QR code and its independent backing link removed; attached links retained"},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/qr-codes/export":{"post":{"security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","pattern":"^[a-f0-9]{24}$/i"},"minItems":1,"maxItems":500},"format":{"type":"string","enum":["svg","png","pdf"],"default":"svg"},"size":{"type":"integer","minimum":128,"maximum":4096,"default":1024}},"required":["ids"],"additionalProperties":false}}}},"responses":{"202":{"description":"ZIP job queued; up to 500 selected QR codes, maximum 536870912 bytes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrZipExportJob"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/qr-exports/zip/{id}":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"ZIP progress and private delivery; all selected QR codes must remain readable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrZipExportJob"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/qr-codes/{id}/export":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","enum":["svg","png","pdf"],"default":"svg"},"required":false,"name":"format","in":"query"},{"schema":{"type":"integer","minimum":128,"maximum":4096,"default":1024},"required":false,"name":"size","in":"query"}],"responses":{"202":{"description":"Export queued or rendering; poll Location with the same workspace credential","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrExportJob"}}}},"303":{"description":"Export ready; Location is a private attachment URL expiring with the job"},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/qr-exports/{id}":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Authorized export status and, when ready, an expiring private download URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrExportJob"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/tags":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","maxLength":200},"required":false,"name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Workspace tags in descending ID order with cursor pagination","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}},"nextCursor":{"type":["string","null"]},"total":{"type":["number","null"]}},"required":["data","nextCursor","total"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteTag"}}}},"responses":{"201":{"description":"Workspace tag created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/tags/{id}":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-z\\d_-]{1,64}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Workspace tag, accepting canonical or legacy identifiers","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-z\\d_-]{1,64}$/i"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteTag"}}}},"responses":{"200":{"description":"Tag and its link/QR references renamed transactionally","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-z\\d_-]{1,64}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Tag removed from the workspace and its link/QR references"},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/analytics":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","format":"date-time"},"required":true,"name":"from","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":true,"name":"to","in":"query"},{"schema":{"type":"string","maxLength":64,"default":"UTC"},"required":false,"name":"timezone","in":"query"},{"schema":{"type":"string","enum":["hour","day","week","month"],"default":"day"},"required":false,"name":"interval","in":"query"},{"schema":{"type":"string","enum":["branch","country","city","continent","device","browser","os","referrer","utmSource","utmMedium","utmCampaign","utmTerm","utmContent","language","link","kind"]},"required":false,"name":"groupBy","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":false,"name":"link","in":"query"},{"schema":{"type":"string","enum":["click","scan"]},"required":false,"name":"kind","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"country","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"city","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"continent","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"device","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"browser","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"os","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"referrer","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"utmSource","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"utmMedium","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"utmCampaign","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"utmTerm","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"utmContent","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"language","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":false,"name":"branch","in":"query"}],"responses":{"200":{"description":"Analytics within the plan query window; gated lists unavailable breakdowns","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Analytics"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/links/{id}/analytics":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","format":"date-time"},"required":true,"name":"from","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":true,"name":"to","in":"query"},{"schema":{"type":"string","maxLength":64,"default":"UTC"},"required":false,"name":"timezone","in":"query"},{"schema":{"type":"string","enum":["hour","day","week","month"],"default":"day"},"required":false,"name":"interval","in":"query"},{"schema":{"type":"string","enum":["branch","country","city","continent","device","browser","os","referrer","utmSource","utmMedium","utmCampaign","utmTerm","utmContent","language","link","kind"]},"required":false,"name":"groupBy","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":false,"name":"link","in":"query"},{"schema":{"type":"string","enum":["click","scan"]},"required":false,"name":"kind","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"country","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"city","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"continent","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"device","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"browser","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"os","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"referrer","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"utmSource","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"utmMedium","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"utmCampaign","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"utmTerm","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"utmContent","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":false,"name":"language","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":false,"name":"branch","in":"query"}],"responses":{"200":{"description":"Analytics within the plan query window; gated lists unavailable breakdowns","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Analytics"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/domains":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","maxLength":253},"required":false,"name":"search","in":"query"}],"responses":{"200":{"description":"Paginated workspace domains","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Domain"}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hostname":{"type":"string","maxLength":253},"kind":{"type":"string","enum":["links","bio","both"]},"bioPageId":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"rootRedirect":{"type":"string","format":"uri"},"notFoundRedirect":{"type":"string","format":"uri"}},"required":["hostname","kind"],"additionalProperties":false}}}},"responses":{"201":{"description":"Hostname reserved for asynchronous verification; requires workspace owner and paid domain add-on","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/domains/{id}/status":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Persisted hostname verification status; provider polling runs in the worker","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Domain"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/domains/{id}":{"delete":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Domain disabled immediately; provider removal is asynchronous"},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/bio-pages":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","maxLength":200},"required":false,"name":"search","in":"query"}],"responses":{"200":{"description":"Paginated bio page summaries","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/BioSummary"}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"maxLength":63},"title":{"type":"string","maxLength":120},"linkId":{"type":"string","pattern":"^[a-f\\d]{24}$/i"}},"required":["slug"],"additionalProperties":false}}}},"responses":{"201":{"description":"Created unpublished bio page","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BioSummary"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/bio-pages/{id}":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Current editable draft and revision","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BioDraft"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"revision":{"type":"integer","minimum":0},"content":{"type":"object","properties":{"locale":{"type":"string","enum":["en","pt","es"]},"blocks":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["profile"]},"title":{"type":"string","maxLength":120},"description":{"type":"string","maxLength":500,"default":""},"avatar":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"string","enum":[""]}],"default":""},"align":{"type":"string","enum":["center","left","right"],"default":"center"},"avatarShape":{"type":"string","enum":["circle","rounded","square"],"default":"circle"},"paidBadge":{"type":"boolean"}},"required":["id","type","title"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["link"]},"linkId":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"title":{"type":"string","maxLength":120},"image":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"string","enum":[""]}],"default":""},"highlight":{"type":"boolean","default":false}},"required":["id","type","linkId","title"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["links"]},"title":{"type":"string","maxLength":120,"default":""},"layout":{"type":"string","enum":["vertical","paginated"],"default":"vertical"},"pageSize":{"type":"integer","minimum":4,"maximum":50,"default":10},"cardStyle":{"type":"string","enum":["list","small-grid","large-grid","image-grid"],"default":"list"},"cardContent":{"type":"string","enum":["image-text","image-only","text"],"default":"image-text"},"cardRadius":{"type":"string","enum":["theme","square","rounded"],"default":"theme"},"imageFit":{"type":"string","enum":["cover","contain"],"default":"cover"},"linkSurface":{"type":"string","enum":["theme","minimal","soft","filled","outline"],"default":"theme"},"linkBorder":{"type":"string","enum":["theme","none","subtle","solid","divider"],"default":"theme"},"linkWeight":{"type":"string","enum":["theme","regular","medium","bold"],"default":"theme"},"linkSpacing":{"type":"string","enum":["compact","comfortable","spacious"],"default":"comfortable"},"showLinkArrow":{"type":"boolean","default":true},"paginationAppearance":{"type":"string","enum":["muted","minimal","outline","filled"],"default":"muted"},"paginationSize":{"type":"string","enum":["small","comfortable"],"default":"small"},"paginationStyle":{"type":"string","enum":["arrows","labels"],"default":"arrows"},"showPageCount":{"type":"boolean","default":true},"showLinkCount":{"type":"boolean","default":false},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"linkId":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"title":{"type":"string","maxLength":120},"image":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"string","enum":[""]}],"default":""},"highlight":{"type":"boolean","default":false}},"required":["id","linkId","title"]},"maxItems":1000}},"required":["id","type","items"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["socials"]},"items":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","minLength":1,"maxLength":32},"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["platform","url"]},"maxItems":20}},"required":["id","type","items"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["header"]},"text":{"type":"string","maxLength":120}},"required":["id","type","text"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["text"]},"text":{"type":"string","maxLength":2000}},"required":["id","type","text"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["image"]},"url":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"string","enum":[""]}]},"alt":{"type":"string","maxLength":300},"link":{"type":"string","maxLength":2048,"format":"uri"}},"required":["id","type","url","alt"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["embed"]},"provider":{"type":"string","enum":["youtube","spotify","soundcloud","vimeo","apple-music"]},"url":{"anyOf":[{"type":"string","maxLength":2048,"format":"uri"},{"type":"string","enum":[""]}]}},"required":["id","type","provider","url"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"visible":{"type":"boolean","default":true},"schedule":{"type":"object","properties":{"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"}}},"type":{"type":"string","enum":["qr"]},"linkId":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"title":{"type":"string","maxLength":120,"default":""}},"required":["id","type","linkId"]}]},"maxItems":150},"theme":{"type":"object","properties":{"background":{"type":"string","pattern":"^#[a-f\\d]{6}$/i"},"surface":{"type":"string","pattern":"^#[a-f\\d]{6}$/i"},"text":{"type":"string","pattern":"^#[a-f\\d]{6}$/i"},"accent":{"type":"string","pattern":"^#[a-f\\d]{6}$/i"},"buttonStyle":{"type":"string","enum":["fill","outline","soft","shadow-less"]},"radius":{"anyOf":[{"type":"number","enum":[0]},{"type":"number","enum":[6]},{"type":"number","enum":[12]},{"type":"number","enum":[999]}]},"font":{"type":"string","enum":["Geist","Inter","Roboto","Open Sans","Lato","Montserrat","Poppins","DM Sans","Space Grotesk","Nunito","Raleway","Playfair Display","Merriweather","Lora","Oswald","Source Serif 4"]},"density":{"type":"string","enum":["comfortable","compact"]},"backgroundImage":{"type":"string","maxLength":2048,"format":"uri"},"legacyFont":{"type":"string","pattern":"^[a-zA-Z][a-zA-Z0-9 -]{0,63}$"}},"additionalProperties":false},"seo":{"type":"object","properties":{"favicon":{"type":"string","maxLength":2048,"format":"uri"},"title":{"type":"string","maxLength":120},"description":{"type":"string","maxLength":500},"noindex":{"type":"boolean"}},"additionalProperties":false},"hideBranding":{"type":"boolean"}},"additionalProperties":false}},"required":["revision","content"],"additionalProperties":false}}}},"responses":{"200":{"description":"Updated draft revision; blocks replace the ordered list, theme and SEO merge provided fields","content":{"application/json":{"schema":{"type":"object","properties":{"revision":{"type":"integer","minimum":0}},"required":["revision"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/bio-pages/{id}/publish":{"post":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"revision":{"type":"integer","minimum":0}},"required":["revision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Published validated revision; durable invalidation job queued transactionally","content":{"application/json":{"schema":{"type":"object","properties":{"revision":{"type":"integer","minimum":0}},"required":["revision"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/webhooks":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","maxLength":200},"required":false,"name":"search","in":"query"}],"responses":{"200":{"description":"Paginated webhook metadata; signing secrets omitted","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["link.created","link.updated","link.deleted","link.clicked","qr.scanned","bio.published","domain.verified","import.completed"]},"minItems":1,"maxItems":8},"enabled":{"type":"boolean","default":true}},"required":["name","url","events"],"additionalProperties":false}}}},"responses":{"201":{"description":"Endpoint created with signing secret; retain it securely","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Webhook"},{"type":"object","properties":{"secret":{"type":"string"}},"required":["secret"]}]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/webhooks/{id}":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Webhook metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"patch":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["link.created","link.updated","link.deleted","link.clicked","qr.scanned","bio.published","domain.verified","import.completed"]},"minItems":1,"maxItems":8},"enabled":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Updated webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"delete":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"204":{"description":"Endpoint removed; queued deliveries cancel before sending"},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/webhooks/{id}/test":{"post":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"}],"responses":{"202":{"description":"Test delivery persisted for the worker","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"eventId":{"type":"string"},"status":{"type":"string"}},"required":["id","eventId","status"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/webhooks/{id}/deliveries":{"get":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"30-day paginated delivery log","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"eventId":{"type":"string"},"type":{"type":"string","enum":["link.created","link.updated","link.deleted","link.clicked","qr.scanned","bio.published","domain.verified","import.completed","webhook.test"]},"status":{"type":"string","enum":["pending","sending","delivered","failed","cancelled"]},"attempts":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"deliveredAt":{"type":["string","null"],"format":"date-time"},"lastStatus":{"type":["number","null"]},"lastError":{"type":["string","null"]}},"required":["id","eventId","type","status","attempts","createdAt","deliveredAt","lastStatus","lastError"]}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/webhooks/{id}/deliveries/{deliveryId}/redeliver":{"post":{"security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","pattern":"^[a-f\\d]{24}$/i"},"required":true,"name":"deliveryId","in":"path"}],"responses":{"202":{"description":"New delivery queued with the original event ID","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"eventId":{"type":"string"},"status":{"type":"string"}},"required":["id","eventId","status"]}}}},"400":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Request failed; code is stable across API versions","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"webhooks":{},"servers":[{"url":"https://api-staging.shortn.at"}]}