{"openapi":"3.1.0","info":{"title":"Droplit","version":"1.0.0","description":"Hosted BSV wallets for apps and agents. https://droplit.dev publishes discovery, OpenAPI, and docs. Wallet create/deposit/tap/push/fund/mint execute on https://api.droplit.dev with BRC-103/104 mutual authentication via @bsv/sdk AuthFetch — not a bearer token. Identity: ProtoWallet from a WIF, or Sigma device authorization at https://auth.sigmaidentity.com, then the same AuthFetch.","contact":{"name":"Droplit","url":"https://droplit.dev"}},"externalDocs":{"description":"Agent signup, create, and deposit playbook","url":"https://droplit.dev/docs/agents"},"servers":[{"url":"https://api.droplit.dev","description":"Wallet writes (BRC-103/104 AuthFetch)"},{"url":"https://droplit.dev","description":"Discovery, docs, OpenAPI"}],"tags":[{"name":"discovery","description":"Unauthenticated machine-readable indexes on droplit.dev"},{"name":"identity","description":"Register a signer identity on api.droplit.dev"},{"name":"droplits","description":"Create, list, and inspect hosted wallets"},{"name":"deposits","description":"Paymail and deposit-address funding"},{"name":"actions","description":"Canonical and legacy wallet operations"},{"name":"activity","description":"Live activity stream"}],"components":{"securitySchemes":{"AuthFetch":{"type":"mutualTLS","description":"BRC-103/104 mutual authentication via @bsv/sdk AuthFetch. Not a bearer token and not an Authorization header you construct. Create a ProtoWallet (service WIF) or a Sigma-backed wallet, wrap it in AuthFetch, and call client.fetch(url, options). The SDK owns the handshake and session. Protected writes live on https://api.droplit.dev."}},"schemas":{"Problem":{"type":"object","required":["type","title","status","detail"],"properties":{"type":{"type":"string","example":"about:blank"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"instance":{"type":"string"},"hint":{"type":"string","description":"How to authenticate: AuthFetch against https://api.droplit.dev."}}},"JsonError":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}}},"Catalog":{"type":"object","required":["name","description","when_to_use","hosts","signup","deposit","openapi","llms"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"when_to_use":{"type":"array","items":{"type":"string"}},"hosts":{"type":"object","properties":{"docs":{"type":"string","format":"uri"},"api":{"type":"string","format":"uri"},"auth":{"type":"string","format":"uri"}}},"signup":{"type":"object","properties":{"register":{"type":"string"},"create":{"type":"string"}}},"deposit":{"type":"object","properties":{"paymail":{"type":"string"},"address":{"type":"string"}}},"openapi":{"type":"string","format":"uri"},"llms":{"type":"string","format":"uri"}}},"CreateDroplitRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Droplit name. Also the paymail local-part: {name}@droplit.dev."},"drop_sats":{"type":"number","description":"Optional fixed tap amount in satoshis."},"fixed_drop_sats":{"type":"number","description":"Live API alias for drop_sats."},"target_buckets":{"type":"number"},"current_bucket_idx":{"type":"number"},"max_consolidation_inputs":{"type":"number"}}},"CreateDroplitResponse":{"type":"object","properties":{"faucet_name":{"type":"string"},"slug":{"type":"string"},"instance_pub_key":{"type":"string"},"instance_pubkey":{"type":"string","description":"Live API field name for the instance public key."},"owner_pub_key":{"type":"string"},"owner_pubkey":{"type":"string","description":"Live API field name for the owner public key."},"generated_api_key":{"type":"string"},"message":{"type":"string"}}},"Droplit":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"instance_pubkey":{"type":"string"},"owner_pubkey":{"type":"string"},"balance_sats":{"type":"number"},"drop_sats":{"type":["number","null"]},"paymail":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"FaucetStatus":{"type":"object","properties":{"faucet_name":{"type":"string"},"faucet_slug":{"type":"string"},"balance_satoshis":{"type":"number"},"unspent_utxo_count":{"type":"number"},"fixed_drop_sats":{"type":"number"},"spendable_utxo_count":{"type":"number"},"consolidating_balance_satoshis":{"type":"number"},"consolidating_utxo_count":{"type":"number"}}},"DepositAddressResponse":{"type":"object","properties":{"deposit_address":{"type":"string"},"deposit_invoice_number":{"type":"string"},"faucet_name":{"type":"string"}}},"ActionRequest":{"type":"object","required":["kind"],"properties":{"kind":{"type":"string","enum":["tap","push","mint","fund"]},"recipientAddress":{"type":"string"},"amountSat":{"type":"number"},"data":{"type":"array","items":{"type":"string"}},"encoding":{"type":"string"},"contentType":{"type":"string"},"inscription":{"type":"string"},"bsv21":{"type":"object","properties":{"ticker":{"type":"string"},"max":{"type":"string"},"limit":{"type":"string"},"dec":{"type":"number"}}},"rawtx":{"type":"string"},"broadcast":{"type":"boolean"}}},"ActionResponse":{"type":"object","properties":{"success":{"type":"boolean"},"kind":{"type":"string"},"txid":{"type":"string"},"rawtx":{"type":"string"},"message":{"type":"string"},"inscriptionId":{"type":"string"}}},"RegisterRequest":{"type":"object","required":["publicKey"],"properties":{"publicKey":{"type":"string","description":"Compressed public key hex for the signer identity."}}},"TapRequest":{"type":"object","properties":{"recipient_address":{"type":"string"},"satoshis":{"type":"number"}}},"PushRequest":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"string"}},"encoding":{"type":"string"},"broadcast":{"type":"boolean"}}},"FundRequest":{"type":"object","required":["rawtx"],"properties":{"rawtx":{"type":"string"},"broadcast":{"type":"boolean"}}},"MintRequest":{"type":"object","properties":{"recipientAddress":{"type":"string"},"contentType":{"type":"string"},"data":{"type":"string"},"inscription":{"type":"string"},"encoding":{"type":"string"},"broadcast":{"type":"boolean"}}}}},"paths":{"/api/v1":{"servers":[{"url":"https://droplit.dev"}],"get":{"operationId":"getCatalog","tags":["discovery"],"summary":"JSON API catalog","description":"Unauthenticated catalog of hosts, signup, deposit, OpenAPI, and llms.txt. Wallet writes are not executed on this host.","security":[],"responses":{"200":{"description":"Catalog","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Catalog"}}}}}}},"/openapi.json":{"servers":[{"url":"https://droplit.dev"}],"get":{"operationId":"getOpenApi","tags":["discovery"],"summary":"OpenAPI 3.1 document","description":"This specification. Discovery operations are served by https://droplit.dev; write operations are served by https://api.droplit.dev.","security":[],"responses":{"200":{"description":"OpenAPI 3.1 document","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/llms.txt":{"servers":[{"url":"https://droplit.dev"}],"get":{"operationId":"getLlmsTxt","tags":["discovery"],"summary":"LLM orientation guide","description":"Plain-text / markdown orientation for agents: when to use Droplit, which host to call, signup, deposits, and operations.","security":[],"responses":{"200":{"description":"llms.txt body","content":{"text/plain":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}}}}}},"/auth/register":{"servers":[{"url":"https://api.droplit.dev"}],"post":{"operationId":"registerIdentity","tags":["identity"],"summary":"Register a signer identity","description":"Register the caller's public key with the Droplit API. Required before create/deposit/operate for a new ProtoWallet identity. Authenticate subsequent calls with AuthFetch using the same key.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}}},"responses":{"204":{"description":"Identity registered."},"400":{"description":"Validation or funding failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"401":{"description":"BRC-103/104 authentication or ownership failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"403":{"description":"Key is authorized to the faucet but not the requested action scope.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"404":{"description":"Droplit or path not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"409":{"description":"Conflict (duplicate name, or Idempotency-Key reused with a different body).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}}}}},"/faucets":{"servers":[{"url":"https://api.droplit.dev"}],"post":{"operationId":"createDroplit","tags":["droplits"],"summary":"Create a droplit","description":"Create a hosted BSV wallet. Requires AuthFetch. Body: name (required), drop_sats, target_buckets, current_bucket_idx, max_consolidation_inputs (optional). Response includes faucet_name, instance_pub_key, owner_pub_key, and message. Deposit via {name}@droplit.dev or POST /faucet/{name}/deposit-address.","security":[{"AuthFetch":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-generated key for retryable writes. Same key + same body replays the prior result; same key + different body returns 409.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDroplitRequest"}}}},"responses":{"201":{"description":"Droplit created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDroplitResponse"}}}},"400":{"description":"Validation or funding failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"401":{"description":"BRC-103/104 authentication or ownership failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"403":{"description":"Key is authorized to the faucet but not the requested action scope.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"404":{"description":"Droplit or path not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"409":{"description":"Conflict (duplicate name, or Idempotency-Key reused with a different body).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}}}}},"/admin/faucets":{"servers":[{"url":"https://api.droplit.dev"}],"get":{"operationId":"listDroplits","tags":["droplits"],"summary":"List droplits for the authenticated owner","description":"Returns droplits owned by the AuthFetch identity.","security":[{"AuthFetch":[]}],"responses":{"200":{"description":"Owner droplits","content":{"application/json":{"schema":{"type":"object","properties":{"droplits":{"type":"array","items":{"$ref":"#/components/schemas/Droplit"}}}}}}},"400":{"description":"Validation or funding failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"401":{"description":"BRC-103/104 authentication or ownership failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"403":{"description":"Key is authorized to the faucet but not the requested action scope.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"404":{"description":"Droplit or path not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"409":{"description":"Conflict (duplicate name, or Idempotency-Key reused with a different body).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}}}}},"/faucet/{name}/status":{"servers":[{"url":"https://api.droplit.dev"}],"get":{"operationId":"getDroplitStatus","tags":["droplits"],"summary":"Public droplit status","description":"Public balance and UTXO counts for a droplit. No AuthFetch required.","security":[],"parameters":[{"name":"name","in":"path","required":true,"description":"Droplit name or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaucetStatus"}}}},"400":{"description":"Validation or funding failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"401":{"description":"BRC-103/104 authentication or ownership failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"403":{"description":"Key is authorized to the faucet but not the requested action scope.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"404":{"description":"Droplit or path not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"409":{"description":"Conflict (duplicate name, or Idempotency-Key reused with a different body).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}}}}},"/faucet/{name}/deposit-address":{"servers":[{"url":"https://api.droplit.dev"}],"post":{"operationId":"createDepositAddress","tags":["deposits"],"summary":"Create a deposit address","description":"Allocate the next BSV deposit address for the droplit. Prefer paymail {name}@droplit.dev when the sender supports it. Requires AuthFetch ownership.","security":[{"AuthFetch":[]}],"parameters":[{"name":"name","in":"path","required":true,"description":"Droplit name or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Deposit address","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepositAddressResponse"}}}},"400":{"description":"Validation or funding failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"401":{"description":"BRC-103/104 authentication or ownership failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"403":{"description":"Key is authorized to the faucet but not the requested action scope.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"404":{"description":"Droplit or path not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"409":{"description":"Conflict (duplicate name, or Idempotency-Key reused with a different body).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}}}}},"/faucet/{name}/actions":{"servers":[{"url":"https://api.droplit.dev"}],"post":{"operationId":"executeAction","tags":["actions"],"summary":"Execute a canonical wallet action","description":"Canonical transaction endpoint. kind is tap | push | mint | fund. Prefer this over legacy /tap /push /fund /mint. Send Idempotency-Key on retries.","security":[{"AuthFetch":[]}],"parameters":[{"name":"name","in":"path","required":true,"description":"Droplit name or slug.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-generated key for retryable writes. Same key + same body replays the prior result; same key + different body returns 409.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionRequest"}}}},"responses":{"200":{"description":"Action result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionResponse"}}}},"400":{"description":"Validation or funding failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"401":{"description":"BRC-103/104 authentication or ownership failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"403":{"description":"Key is authorized to the faucet but not the requested action scope.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"404":{"description":"Droplit or path not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"409":{"description":"Conflict (duplicate name, or Idempotency-Key reused with a different body).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}}}}},"/faucet/{name}/tap":{"servers":[{"url":"https://api.droplit.dev"}],"post":{"operationId":"tap","tags":["actions"],"summary":"Legacy tap (send sats)","description":"Legacy wrapper. Prefer POST /faucet/{name}/actions with kind=tap. Sends satoshis to recipient_address.","security":[{"AuthFetch":[]}],"parameters":[{"name":"name","in":"path","required":true,"description":"Droplit name or slug.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-generated key for retryable writes. Same key + same body replays the prior result; same key + different body returns 409.","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TapRequest"}}}},"responses":{"200":{"description":"Tap result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionResponse"}}}},"400":{"description":"Validation or funding failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"401":{"description":"BRC-103/104 authentication or ownership failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"403":{"description":"Key is authorized to the faucet but not the requested action scope.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"404":{"description":"Droplit or path not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"409":{"description":"Conflict (duplicate name, or Idempotency-Key reused with a different body).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}}}}},"/faucet/{name}/push":{"servers":[{"url":"https://api.droplit.dev"}],"post":{"operationId":"push","tags":["actions"],"summary":"Legacy push (OP_RETURN)","description":"Legacy wrapper. Prefer POST /faucet/{name}/actions with kind=push.","security":[{"AuthFetch":[]}],"parameters":[{"name":"name","in":"path","required":true,"description":"Droplit name or slug.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-generated key for retryable writes. Same key + same body replays the prior result; same key + different body returns 409.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushRequest"}}}},"responses":{"200":{"description":"Push result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionResponse"}}}},"400":{"description":"Validation or funding failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"401":{"description":"BRC-103/104 authentication or ownership failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"403":{"description":"Key is authorized to the faucet but not the requested action scope.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"404":{"description":"Droplit or path not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"409":{"description":"Conflict (duplicate name, or Idempotency-Key reused with a different body).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}}}}},"/faucet/{name}/fund":{"servers":[{"url":"https://api.droplit.dev"}],"post":{"operationId":"fund","tags":["actions"],"summary":"Legacy fund (add inputs to a tx template)","description":"Legacy wrapper. Prefer POST /faucet/{name}/actions with kind=fund.","security":[{"AuthFetch":[]}],"parameters":[{"name":"name","in":"path","required":true,"description":"Droplit name or slug.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-generated key for retryable writes. Same key + same body replays the prior result; same key + different body returns 409.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundRequest"}}}},"responses":{"200":{"description":"Fund result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionResponse"}}}},"400":{"description":"Validation or funding failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"401":{"description":"BRC-103/104 authentication or ownership failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"403":{"description":"Key is authorized to the faucet but not the requested action scope.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"404":{"description":"Droplit or path not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"409":{"description":"Conflict (duplicate name, or Idempotency-Key reused with a different body).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}}}}},"/faucet/{name}/mint":{"servers":[{"url":"https://api.droplit.dev"}],"post":{"operationId":"mint","tags":["actions"],"summary":"Legacy mint (inscription)","description":"Legacy wrapper. Prefer POST /faucet/{name}/actions with kind=mint.","security":[{"AuthFetch":[]}],"parameters":[{"name":"name","in":"path","required":true,"description":"Droplit name or slug.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Client-generated key for retryable writes. Same key + same body replays the prior result; same key + different body returns 409.","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MintRequest"}}}},"responses":{"200":{"description":"Mint result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionResponse"}}}},"400":{"description":"Validation or funding failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"401":{"description":"BRC-103/104 authentication or ownership failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"403":{"description":"Key is authorized to the faucet but not the requested action scope.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"404":{"description":"Droplit or path not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"409":{"description":"Conflict (duplicate name, or Idempotency-Key reused with a different body).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}}}}},"/faucet/{name}/activity-stream":{"servers":[{"url":"https://api.droplit.dev"}],"get":{"operationId":"activityStream","tags":["activity"],"summary":"Live activity stream","description":"Authenticated activity feed for a droplit. Use the SDK Peer + WebSocket transport, or the HTTP stream with a BRC-77 X-Auth-Token. Not a public unauthenticated SSE endpoint.","security":[{"AuthFetch":[]}],"parameters":[{"name":"name","in":"path","required":true,"description":"Droplit name or slug.","schema":{"type":"string"}}],"responses":{"200":{"description":"Activity stream (SSE or WebSocket upgrade).","content":{"text/event-stream":{"schema":{"type":"string"}}}},"400":{"description":"Validation or funding failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"401":{"description":"BRC-103/104 authentication or ownership failure.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"403":{"description":"Key is authorized to the faucet but not the requested action scope.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"404":{"description":"Droplit or path not found.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}},"409":{"description":"Conflict (duplicate name, or Idempotency-Key reused with a different body).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}},"application/json":{"schema":{"$ref":"#/components/schemas/JsonError"}}}}}}}},"x-sigma-auth":{"issuer":"https://auth.sigmaidentity.com","device_authorization_endpoint":"https://auth.sigmaidentity.com/api/auth/device/code","oauth_authorization_server":"https://droplit.dev/.well-known/oauth-authorization-server"}}