{"openapi":"3.1.0","info":{"title":"Pact Protocol Backend","version":"0.1.0"},"paths":{"/health":{"get":{"tags":["meta"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/api/v1/advertisers/":{"post":{"tags":["advertiser"],"summary":"Create Advertiser","operationId":"create_advertiser_api_v1_advertisers__post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertiserIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertiserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["advertiser"],"summary":"List Advertisers","description":"List advertisers ordered by created_at desc. Pagination: limit (default 20, max 100) + offset.\n\nSets X-Total-Count header to the total advertiser count.","operationId":"list_advertisers_api_v1_advertisers__get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AdvertiserOut"},"title":"Response List Advertisers Api V1 Advertisers  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/advertisers/{advertiser_id}":{"get":{"tags":["advertiser"],"summary":"Get Advertiser","operationId":"get_advertiser_api_v1_advertisers__advertiser_id__get","parameters":[{"name":"advertiser_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Advertiser Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvertiserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/creators/":{"post":{"tags":["creator"],"summary":"Create Creator","operationId":"create_creator_api_v1_creators__post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatorIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["creator"],"summary":"List Creators","description":"List creators. sort=created_at | sbt_count | reputation, all desc.\n\n`sort=reputation` orders by sbt_count as a fast proxy for the V0\nreputation formula (sbt_count is the dominant non-zero component\nwhen most creators have similar campaign-completion rates). The\nexact V0 score lives behind the per-address /reputation endpoint;\nthis proxy is good enough for demo-scale leaderboards.\n\nPagination: limit (default 20, max 100) + offset.\nSets X-Total-Count header to the total creator count.","operationId":"list_creators_api_v1_creators__get","parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"created_at","title":"Sort"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CreatorOut"},"title":"Response List Creators Api V1 Creators  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/creators/{lookup}":{"get":{"tags":["creator"],"summary":"Get Creator","description":"Get creator by UUID or eth_address.","operationId":"get_creator_api_v1_creators__lookup__get","parameters":[{"name":"lookup","in":"path","required":true,"schema":{"type":"string","title":"Lookup"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/creators/{eth_address}/reputation":{"get":{"tags":["creator"],"summary":"Creator Reputation","description":"Reputation V0 — score + breakdown + on-chain SBT list.\n\nFormula authority: docs/REPUTATION_FORMULA.md. Backend computes the\ncanonical score; on-chain `getReputation(addr)` is surfaced as\n`chain_score` when the view is deployed, else null.","operationId":"creator_reputation_api_v1_creators__eth_address__reputation_get","parameters":[{"name":"eth_address","in":"path","required":true,"schema":{"type":"string","title":"Eth Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReputationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/sign-request":{"post":{"tags":["campaign"],"summary":"Sign Request","description":"Return ERC-2771 ForwardRequest typed-data the advertiser's wallet signs.\n\nThe user signs a ForwardRequest containing an inner `createCampaign` call\naddressed to Escrow. The backend will relay via `forwarder.execute(...)`\nso the on-chain msg.sender (read via Escrow's ERC2771Context) is the\nadvertiser, not the service signer.\n\nThe `nonce` field is the forwarder's per-`from` counter (not a backend\nrandom nonce) — replay protection comes from forwarder.execute's\none-shot consume of that counter. We still reserve a backend Redis\nkey against the (from, forwarder-nonce) pair so a second POST /campaigns/\nwith the same signed request gets a clean 409 before hitting the chain.","operationId":"sign_request_api_v1_campaigns_sign_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignRequestIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignRequestOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/":{"post":{"tags":["campaign"],"summary":"Create Campaign Signed","description":"Accept a signed ForwardRequest, persist the campaign + outbox event\nthat the worker will relay via `forwarder.execute(request, signature)`.\n\nThe on-chain advertiser (Escrow.campaigns[...].advertiser) ends up being\nthe user's wallet because Escrow inherits ERC2771Context and reads\nmsg.sender via `_msgSender()` which the forwarder rewrites.","operationId":"create_campaign_signed_api_v1_campaigns__post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedCampaignIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["campaign"],"summary":"List Campaigns","description":"List campaigns. Filterable by status (CSV), platform, creator_id, advertiser_id.\n\n`creator_id` and `advertiser_id` accept either a backend UUID or a 0x-prefixed\neth_address (for frontend convenience; matches what wagmi already has).\n\nDeprecated rows (escrow-redeploy orphans) are hidden by default; pass\n`include_deprecated=true` for audit views.\n\nSort: created_at desc. Pagination: limit (default 20, max 100) + offset.\nSets X-Total-Count header to the filtered total.","operationId":"list_campaigns_api_v1_campaigns__get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"platform","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"}},{"name":"creator_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Id"}},{"name":"advertiser_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Advertiser Id"}},{"name":"include_deprecated","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Deprecated"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CampaignOut"},"title":"Response List Campaigns Api V1 Campaigns  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/unsigned":{"post":{"tags":["campaign"],"summary":"Create Campaign Unsigned","description":"Unsigned campaign create — service signer pays gas + becomes msg.sender.\n\nKept for demos and CLI tooling. For production-style advertiser-paid\ncampaigns, use POST / with EIP-712 typed-data.","operationId":"create_campaign_unsigned_api_v1_campaigns_unsigned_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignInUnsigned"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}":{"get":{"tags":["campaign"],"summary":"Get Campaign","operationId":"get_campaign_api_v1_campaigns__campaign_id__get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/briefs/":{"post":{"tags":["brief"],"summary":"Create Brief","operationId":"create_brief_api_v1_briefs__post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["brief"],"summary":"List Briefs","operationId":"list_briefs_api_v1_briefs__get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/BriefStatus"},{"type":"null"}],"title":"Status"}},{"name":"platform","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform"}},{"name":"advertiser_wallet","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Advertiser Wallet"}},{"name":"creator_wallet","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creator Wallet"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BriefOut"},"title":"Response List Briefs Api V1 Briefs  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/briefs/{brief_id}":{"get":{"tags":["brief"],"summary":"Get Brief","operationId":"get_brief_api_v1_briefs__brief_id__get","parameters":[{"name":"brief_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Brief Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/briefs/{brief_id}/apply":{"post":{"tags":["brief"],"summary":"Apply To Brief","operationId":"apply_to_brief_api_v1_briefs__brief_id__apply_post","parameters":[{"name":"brief_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Brief Id"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefApplicationIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefApplicationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/briefs/{brief_id}/select":{"post":{"tags":["brief"],"summary":"Select Creator","operationId":"select_creator_api_v1_briefs__brief_id__select_post","parameters":[{"name":"brief_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Brief Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelectIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/briefs/{brief_id}/link-campaign":{"post":{"tags":["brief"],"summary":"Link Campaign","operationId":"link_campaign_api_v1_briefs__brief_id__link_campaign_post","parameters":[{"name":"brief_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Brief Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkCampaignIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/briefs/{brief_id}/cancel":{"post":{"tags":["brief"],"summary":"Cancel Brief","operationId":"cancel_brief_api_v1_briefs__brief_id__cancel_post","parameters":[{"name":"brief_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Brief Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/oracle/commits":{"get":{"tags":["oracle"],"summary":"List Commits","operationId":"list_commits_api_v1_oracle_commits_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/OracleCommitOut"},"type":"array","title":"Response List Commits Api V1 Oracle Commits Get"}}}}}}},"/api/v1/wallet/challenge":{"post":{"tags":["wallet"],"summary":"Issue Challenge","operationId":"issue_challenge_api_v1_wallet_challenge_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wallet/verify":{"post":{"tags":["wallet"],"summary":"Verify Signature","operationId":"verify_signature_api_v1_wallet_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AdvertiserIn":{"properties":{"eth_address":{"type":"string","maxLength":42,"minLength":42,"title":"Eth Address"},"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"}},"type":"object","required":["eth_address","name"],"title":"AdvertiserIn"},"AdvertiserOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"eth_address":{"type":"string","title":"Eth Address"},"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"kyc_level":{"type":"integer","title":"Kyc Level"}},"type":"object","required":["id","eth_address","name","email","kyc_level"],"title":"AdvertiserOut"},"BreakdownOut":{"properties":{"kpi_rate":{"type":"number","title":"Kpi Rate"},"sbt_score":{"type":"number","title":"Sbt Score"},"dispute_score":{"type":"number","title":"Dispute Score"},"recency":{"type":"number","title":"Recency"}},"type":"object","required":["kpi_rate","sbt_score","dispute_score","recency"],"title":"BreakdownOut"},"BriefApplicationIn":{"properties":{"creator_wallet":{"type":"string","title":"Creator Wallet"},"pitch":{"type":"string","maxLength":4000,"minLength":1,"title":"Pitch"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signature"},"signed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Signed At"}},"type":"object","required":["creator_wallet","pitch"],"title":"BriefApplicationIn"},"BriefApplicationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"brief_id":{"type":"string","format":"uuid","title":"Brief Id"},"creator_wallet":{"type":"string","title":"Creator Wallet"},"pitch":{"type":"string","title":"Pitch"},"status":{"$ref":"#/components/schemas/BriefApplicationStatus"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","brief_id","creator_wallet","pitch","status","created_at"],"title":"BriefApplicationOut"},"BriefApplicationStatus":{"type":"string","enum":["pending","selected","rejected"],"title":"BriefApplicationStatus"},"BriefDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"advertiser_wallet":{"type":"string","title":"Advertiser Wallet"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"platform":{"type":"string","title":"Platform"},"kpi_threshold":{"type":"integer","title":"Kpi Threshold"},"amount_pact":{"type":"string","title":"Amount Pact"},"requirements":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requirements"},"deadline_at":{"type":"string","format":"date-time","title":"Deadline At"},"status":{"$ref":"#/components/schemas/BriefStatus"},"selected_creator_wallet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Creator Wallet"},"on_chain_campaign_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"On Chain Campaign Id"},"applicant_count":{"type":"integer","title":"Applicant Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"applications":{"items":{"$ref":"#/components/schemas/BriefApplicationOut"},"type":"array","title":"Applications"}},"type":"object","required":["id","advertiser_wallet","title","description","platform","kpi_threshold","amount_pact","requirements","deadline_at","status","selected_creator_wallet","on_chain_campaign_id","applicant_count","created_at","updated_at","applications"],"title":"BriefDetailOut"},"BriefIn":{"properties":{"advertiser_wallet":{"type":"string","title":"Advertiser Wallet"},"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title"},"description":{"type":"string","maxLength":10000,"minLength":1,"title":"Description"},"platform":{"type":"string","maxLength":32,"minLength":1,"title":"Platform"},"kpi_threshold":{"type":"integer","exclusiveMinimum":0.0,"title":"Kpi Threshold"},"amount_pact":{"type":"string","title":"Amount Pact"},"requirements":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Requirements"},"deadline_at":{"type":"string","format":"date-time","title":"Deadline At"}},"type":"object","required":["advertiser_wallet","title","description","platform","kpi_threshold","amount_pact","deadline_at"],"title":"BriefIn"},"BriefOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"advertiser_wallet":{"type":"string","title":"Advertiser Wallet"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"platform":{"type":"string","title":"Platform"},"kpi_threshold":{"type":"integer","title":"Kpi Threshold"},"amount_pact":{"type":"string","title":"Amount Pact"},"requirements":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requirements"},"deadline_at":{"type":"string","format":"date-time","title":"Deadline At"},"status":{"$ref":"#/components/schemas/BriefStatus"},"selected_creator_wallet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Creator Wallet"},"on_chain_campaign_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"On Chain Campaign Id"},"applicant_count":{"type":"integer","title":"Applicant Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","advertiser_wallet","title","description","platform","kpi_threshold","amount_pact","requirements","deadline_at","status","selected_creator_wallet","on_chain_campaign_id","applicant_count","created_at","updated_at"],"title":"BriefOut"},"BriefStatus":{"type":"string","enum":["open","awarded","active","cancelled","expired"],"title":"BriefStatus"},"CampaignInUnsigned":{"properties":{"advertiser_id":{"type":"string","format":"uuid","title":"Advertiser Id"},"creator_id":{"type":"string","format":"uuid","title":"Creator Id"},"amount_pact":{"type":"integer","exclusiveMinimum":0.0,"title":"Amount Pact","description":"PACT smallest unit (18 decimals)"},"platform":{"type":"string","maxLength":32,"minLength":1,"title":"Platform"},"content_id":{"type":"string","maxLength":128,"minLength":1,"title":"Content Id"},"kpi_threshold":{"type":"integer","minimum":0.0,"title":"Kpi Threshold"},"settle_before":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Settle Before"}},"type":"object","required":["advertiser_id","creator_id","amount_pact","platform","content_id","kpi_threshold"],"title":"CampaignInUnsigned"},"CampaignOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"advertiser_id":{"type":"string","format":"uuid","title":"Advertiser Id"},"creator_id":{"type":"string","format":"uuid","title":"Creator Id"},"amount_pact":{"type":"integer","title":"Amount Pact"},"platform":{"type":"string","title":"Platform"},"content_id":{"type":"string","title":"Content Id"},"kpi_threshold":{"type":"integer","title":"Kpi Threshold"},"kpi_current":{"type":"integer","title":"Kpi Current"},"status":{"$ref":"#/components/schemas/CampaignStatus"},"on_chain_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"On Chain Id"},"tx_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tx Hash"},"settle_before":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Settle Before"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","advertiser_id","creator_id","amount_pact","platform","content_id","kpi_threshold","kpi_current","status","on_chain_id","tx_hash","settle_before","created_at"],"title":"CampaignOut"},"CampaignStatus":{"type":"string","enum":["pending","active","settling","settled","disputed","refunded"],"title":"CampaignStatus"},"CancelIn":{"properties":{"advertiser_wallet":{"type":"string","title":"Advertiser Wallet"}},"type":"object","required":["advertiser_wallet"],"title":"CancelIn"},"ChallengeIn":{"properties":{"creator_id":{"type":"string","format":"uuid","title":"Creator Id"}},"type":"object","required":["creator_id"],"title":"ChallengeIn"},"ChallengeOut":{"properties":{"nonce":{"type":"string","title":"Nonce"},"message":{"type":"string","title":"Message"},"issued_at":{"type":"string","format":"date-time","title":"Issued At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["nonce","message","issued_at","expires_at"],"title":"ChallengeOut"},"CreatorIn":{"properties":{"eth_address":{"type":"string","maxLength":42,"minLength":42,"title":"Eth Address"},"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"bilibili_uid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bilibili Uid"},"xhs_uid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Xhs Uid"}},"type":"object","required":["eth_address","name"],"title":"CreatorIn"},"CreatorOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"eth_address":{"type":"string","title":"Eth Address"},"name":{"type":"string","title":"Name"},"bilibili_uid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bilibili Uid"},"xhs_uid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Xhs Uid"},"sbt_count":{"type":"integer","title":"Sbt Count"}},"type":"object","required":["id","eth_address","name","bilibili_uid","xhs_uid","sbt_count"],"title":"CreatorOut"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LinkCampaignIn":{"properties":{"advertiser_wallet":{"type":"string","title":"Advertiser Wallet"},"on_chain_campaign_id":{"type":"integer","minimum":0.0,"title":"On Chain Campaign Id"}},"type":"object","required":["advertiser_wallet","on_chain_campaign_id"],"title":"LinkCampaignIn"},"MetricsOut":{"properties":{"total_campaigns":{"type":"integer","title":"Total Campaigns"},"successful_campaigns":{"type":"integer","title":"Successful Campaigns"},"sbt_count":{"type":"integer","title":"Sbt Count"},"dispute_count":{"type":"integer","title":"Dispute Count"},"sbt_count_last_90d":{"type":"integer","title":"Sbt Count Last 90D"}},"type":"object","required":["total_campaigns","successful_campaigns","sbt_count","dispute_count","sbt_count_last_90d"],"title":"MetricsOut"},"OracleCommitOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"oracle_address":{"type":"string","title":"Oracle Address"},"kpi_value":{"type":"integer","title":"Kpi Value"},"raw_data_hash":{"type":"string","title":"Raw Data Hash"},"committed_at":{"type":"string","format":"date-time","title":"Committed At"},"tx_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tx Hash"}},"type":"object","required":["id","campaign_id","oracle_address","kpi_value","raw_data_hash","committed_at","tx_hash"],"title":"OracleCommitOut"},"ReputationOut":{"properties":{"eth_address":{"type":"string","title":"Eth Address"},"is_registered_in_db":{"type":"boolean","title":"Is Registered In Db"},"score":{"type":"number","title":"Score"},"chain_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chain Score"},"breakdown":{"$ref":"#/components/schemas/BreakdownOut"},"metrics":{"$ref":"#/components/schemas/MetricsOut"},"formula_version":{"type":"string","title":"Formula Version"},"computed_at":{"type":"string","format":"date-time","title":"Computed At"},"sbt_count_chain":{"type":"integer","title":"Sbt Count Chain"},"sbt_count_db":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sbt Count Db"},"chain_reachable":{"type":"boolean","title":"Chain Reachable"},"sbts":{"items":{"$ref":"#/components/schemas/SbtOut"},"type":"array","title":"Sbts"},"sbt_source":{"type":"string","title":"Sbt Source","default":"empty"}},"type":"object","required":["eth_address","is_registered_in_db","score","chain_score","breakdown","metrics","formula_version","computed_at","sbt_count_chain","sbt_count_db","chain_reachable","sbts"],"title":"ReputationOut"},"SbtOut":{"properties":{"token_id":{"type":"integer","title":"Token Id"},"campaign_id":{"type":"integer","title":"Campaign Id"},"advertiser":{"type":"string","title":"Advertiser"},"creator":{"type":"string","title":"Creator"},"kpi_achieved":{"type":"integer","title":"Kpi Achieved"},"minted_at":{"type":"string","format":"date-time","title":"Minted At"},"platform":{"type":"string","title":"Platform"},"cid":{"type":"string","title":"Cid"}},"type":"object","required":["token_id","campaign_id","advertiser","creator","kpi_achieved","minted_at","platform","cid"],"title":"SbtOut"},"SelectIn":{"properties":{"advertiser_wallet":{"type":"string","title":"Advertiser Wallet"},"creator_wallet":{"type":"string","title":"Creator Wallet"}},"type":"object","required":["advertiser_wallet","creator_wallet"],"title":"SelectIn"},"SignRequestIn":{"properties":{"advertiser_id":{"type":"string","format":"uuid","title":"Advertiser Id"},"creator_id":{"type":"string","format":"uuid","title":"Creator Id"},"amount_pact":{"type":"integer","exclusiveMinimum":0.0,"title":"Amount Pact"},"platform":{"type":"string","maxLength":32,"minLength":1,"title":"Platform"},"content_id":{"type":"string","maxLength":128,"minLength":1,"title":"Content Id"},"kpi_threshold":{"type":"integer","minimum":0.0,"title":"Kpi Threshold"},"settle_before":{"type":"integer","minimum":0.0,"title":"Settle Before","description":"Unix timestamp; 0 = no deadline"}},"type":"object","required":["advertiser_id","creator_id","amount_pact","platform","content_id","kpi_threshold","settle_before"],"title":"SignRequestIn"},"SignRequestOut":{"properties":{"nonce":{"type":"integer","title":"Nonce"},"typed_data":{"additionalProperties":true,"type":"object","title":"Typed Data"}},"type":"object","required":["nonce","typed_data"],"title":"SignRequestOut"},"SignedCampaignIn":{"properties":{"advertiser_id":{"type":"string","format":"uuid","title":"Advertiser Id"},"creator_id":{"type":"string","format":"uuid","title":"Creator Id"},"typed_data":{"additionalProperties":true,"type":"object","title":"Typed Data"},"signature":{"type":"string","maxLength":132,"minLength":132,"title":"Signature"}},"type":"object","required":["advertiser_id","creator_id","typed_data","signature"],"title":"SignedCampaignIn"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyIn":{"properties":{"creator_id":{"type":"string","format":"uuid","title":"Creator Id"},"eth_address":{"type":"string","maxLength":42,"minLength":42,"title":"Eth Address"},"signature":{"type":"string","maxLength":132,"minLength":132,"title":"Signature"},"message":{"type":"string","title":"Message"},"nonce":{"type":"string","maxLength":64,"minLength":64,"title":"Nonce"},"issued_at":{"type":"string","format":"date-time","title":"Issued At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"bilibili_uid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bilibili Uid"}},"type":"object","required":["creator_id","eth_address","signature","message","nonce","issued_at","expires_at"],"title":"VerifyIn"},"VerifyOut":{"properties":{"creator_id":{"type":"string","format":"uuid","title":"Creator Id"},"eth_address":{"type":"string","title":"Eth Address"},"bilibili_uid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bilibili Uid"},"bound_at":{"type":"string","format":"date-time","title":"Bound At"}},"type":"object","required":["creator_id","eth_address","bilibili_uid","bound_at"],"title":"VerifyOut"}}}}