{"components":{"schemas":{"ErrorEnvelope":{"additionalProperties":false,"properties":{"error":{"additionalProperties":true,"properties":{"code":{"type":"string"},"details":{},"message":{"type":"string"}},"required":["code","message"],"type":"object"},"ok":{"const":false}},"required":["error","ok"],"type":"object"},"SuccessEnvelope":{"additionalProperties":true,"properties":{"data":{},"ok":{"const":true}},"required":["data","ok"],"type":"object"}},"securitySchemes":{"ApiKeyAuth":{"bearerFormat":"lucra_live_...","description":"A managed API key created in Lucra. Agency requests select an allowed client with the client query parameter.","scheme":"bearer","type":"http"}}},"info":{"description":"Lucra's brand and agency business API. Provider connection, disconnection, OAuth, callback, account-discovery, and integration-configuration operations are intentionally excluded.","title":"Lucra Public API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/ads/plans":{"post":{"description":"Perform the plan operation for ads using the same organization binding and business rules as Lucra's platform (POST).","operationId":"postAdsPlans","parameters":[{"in":"query","name":"client","required":false,"schema":{"type":"string","minLength":1,"maxLength":120,"description":"Required for every partner ads request. The client must be explicitly bound to the API key and have an active agency relationship."}}],"requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"clientRequestId":{"type":"string","minLength":1,"maxLength":200},"fieldCatalogVersion":{"type":"string","const":"2026-08-08.2"},"operationType":{"type":"string","enum":["publish_campaign","update_campaign","pause_campaign","resume_campaign","archive_campaign","upload_media"]},"platforms":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"string","enum":["google","meta","tiktok","snapchat"]}},"settingsSchemaVersion":{"type":"string","minLength":1,"maxLength":100},"sourceOperationId":{"description":"Lucra source operation ID for a trusted, server-compiled paid campaign repair plan.","type":"string","minLength":1,"maxLength":200},"steps":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"dependsOnStepIds":{"default":[],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"fieldPaths":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"string","pattern":"^\\/(?:[^/~]|~[01])+(?:\\/(?:[^/~]|~[01])+)*$"}},"id":{"type":"string","minLength":1,"maxLength":200},"idempotencyKey":{"type":"string","minLength":1,"maxLength":200},"input":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":200},"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Exact catalog field tree. Reference values use only {kind,id}; raw provider IDs, names, tokens, and codes are rejected."},"localResourceId":{"type":"string","minLength":1,"maxLength":200},"mutation":{"type":"string","enum":["create","update","set_status","upload","attach","detach","replace","archive","delete"]},"platform":{"type":"string","enum":["google","meta","tiktok","snapchat"]},"productVariant":{"type":"string","minLength":1,"maxLength":100},"providerResourceId":{"type":"string","minLength":1,"maxLength":200},"requiredSecretPurpose":{"type":"string","enum":["provider_ephemeral_secret"]},"resourceKind":{"type":"string","enum":["account","campaign","delivery_group","ad","creative","media","asset"]},"sequence":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["dependsOnStepIds","fieldPaths","id","idempotencyKey","input","mutation","platform","productVariant","resourceKind","sequence"],"additionalProperties":false}},"target":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"paid_campaign"},"id":{"type":"string","minLength":1,"maxLength":200}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"creative_asset"},"id":{"type":"string","minLength":1,"maxLength":200}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"creator_ad_grant"},"id":{"type":"string","minLength":1,"maxLength":200}},"required":["kind","id"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"ad_resource"},"id":{"type":"string","minLength":1,"maxLength":200}},"required":["kind","id"],"additionalProperties":false}]}},"required":["clientRequestId","fieldCatalogVersion","operationType","platforms","settingsSchemaVersion","steps","target"],"additionalProperties":false,"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"$ref":"#/$defs/__schema0"}},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}}]}}}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Plan ads (POST)","tags":["ads"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:ads:plan","partner:ads:plan"]},"get":{"description":"Perform the read operation for ads using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getAdsPlans","parameters":[{"in":"query","name":"approvalState","required":false,"schema":{"type":"string","enum":["draft","pending_approval","approved","rejected","superseded","expired"]}},{"in":"query","name":"campaignId","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}},{"in":"query","name":"client","required":false,"schema":{"type":"string","minLength":1,"maxLength":120,"description":"Required for every partner ads request. The client must be explicitly bound to the API key and have an active agency relationship."}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","minLength":1,"maxLength":1024}},{"in":"query","name":"executionState","required":false,"schema":{"type":"string","enum":["planned","ready","executing","completed","cancelled"]}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read ads (GET)","tags":["ads"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:ads:read","partner:ads:read"]}},"/ads/plans/{planId}":{"get":{"description":"Perform the read operation for ads using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getAdsPlansPlanId","parameters":[{"in":"path","name":"planId","required":true,"schema":{"type":"string"}},{"in":"query","name":"client","required":false,"schema":{"type":"string","minLength":1,"maxLength":120,"description":"Required for every partner ads request. The client must be explicitly bound to the API key and have an active agency relationship."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read ads (GET)","tags":["ads"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:ads:read","partner:ads:read"]}},"/ads/plans/{planId}/approval":{"put":{"description":"Perform the approve operation for ads using the same organization binding and business rules as Lucra's platform (PUT).","operationId":"putAdsPlansPlanIdApproval","parameters":[{"in":"path","name":"planId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"semanticHash":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"}},"required":["revision","semanticHash"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Approve ads (PUT)","tags":["ads"],"x-lucra-actors":["brand"],"x-lucra-required-scopes":["brand:ads:approve"]}},"/ads/plans/{planId}/executions":{"post":{"description":"Perform the execute operation for ads using the same organization binding and business rules as Lucra's platform (POST).","operationId":"postAdsPlansPlanIdExecutions","parameters":[{"in":"path","name":"planId","required":true,"schema":{"type":"string"}},{"in":"query","name":"client","required":false,"schema":{"type":"string","minLength":1,"maxLength":120,"description":"Required for every partner ads request. The client must be explicitly bound to the API key and have an active agency relationship."}}],"requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"semanticHash":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"}},"required":["revision","semanticHash"],"additionalProperties":false}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Execute ads (POST)","tags":["ads"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:ads:execute","partner:ads:execute"]}},"/ads/operations":{"get":{"description":"Perform the read operation for ads using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getAdsOperations","parameters":[{"in":"query","name":"campaignId","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}},{"in":"query","name":"client","required":false,"schema":{"type":"string","minLength":1,"maxLength":120,"description":"Required for every partner ads request. The client must be explicitly bound to the API key and have an active agency relationship."}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","minLength":1,"maxLength":1024}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"planId","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}},{"in":"query","name":"state","required":false,"schema":{"type":"string","enum":["queued","running","blocked","waiting_provider","partially_succeeded","succeeded","failed","dead_lettered","cancelled"]}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read ads (GET)","tags":["ads"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:ads:read","partner:ads:read"]}},"/ads/operations/{operationId}":{"get":{"description":"Perform the read operation for ads using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getAdsOperationsOperationId","parameters":[{"in":"path","name":"operationId","required":true,"schema":{"type":"string"}},{"in":"query","name":"client","required":false,"schema":{"type":"string","minLength":1,"maxLength":120,"description":"Required for every partner ads request. The client must be explicitly bound to the API key and have an active agency relationship."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read ads (GET)","tags":["ads"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:ads:read","partner:ads:read"]}},"/ads/resources":{"get":{"description":"Perform the read operation for ads using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getAdsResources","parameters":[{"in":"query","name":"campaignId","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}},{"in":"query","name":"client","required":false,"schema":{"type":"string","minLength":1,"maxLength":120,"description":"Required for every partner ads request. The client must be explicitly bound to the API key and have an active agency relationship."}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","minLength":1,"maxLength":1024}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"parentResourceId","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}},{"in":"query","name":"platform","required":false,"schema":{"type":"string","enum":["google","meta","tiktok","snapchat"]}},{"in":"query","name":"resourceKind","required":false,"schema":{"type":"string","enum":["account","campaign","delivery_group","ad","creative","media","asset"]}},{"in":"query","name":"syncState","required":false,"schema":{"type":"string","enum":["local_only","queued","syncing","synced","waiting_provider","drifted","failed","deleted"]}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read ads (GET)","tags":["ads"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:ads:read","partner:ads:read"]}},"/ads/resources/{resourceId}":{"get":{"description":"Perform the read operation for ads using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getAdsResourcesResourceId","parameters":[{"in":"path","name":"resourceId","required":true,"schema":{"type":"string"}},{"in":"query","name":"client","required":false,"schema":{"type":"string","minLength":1,"maxLength":120,"description":"Required for every partner ads request. The client must be explicitly bound to the API key and have an active agency relationship."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read ads (GET)","tags":["ads"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:ads:read","partner:ads:read"]}},"/ads/fields":{"get":{"description":"Perform the read operation for ads using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getAdsFields","parameters":[{"in":"query","name":"client","required":false,"schema":{"type":"string","minLength":1,"maxLength":120,"description":"Required for every partner ads request. The client must be explicitly bound to the API key and have an active agency relationship."}},{"in":"query","name":"operationType","required":false,"schema":{"type":"string","enum":["publish_campaign","update_campaign","pause_campaign","resume_campaign","archive_campaign","upload_media"]}},{"in":"query","name":"platform","required":false,"schema":{"type":"string","enum":["google","meta","tiktok","snapchat"]}},{"in":"query","name":"productVariant","required":false,"schema":{"type":"string","minLength":1,"maxLength":100}},{"in":"query","name":"resourceKind","required":false,"schema":{"type":"string","enum":["account","campaign","delivery_group","ad","creative","media","asset"]}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read ads (GET)","tags":["ads"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:ads:read","partner:ads:read"]}},"/organization/profile":{"patch":{"description":"Perform the write operation for organization using the same organization binding and business rules as Lucra's platform (PATCH).","operationId":"patchOrganizationProfile","parameters":[{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}}],"requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"creatorRecruitmentDescription":{"type":"string","maxLength":2000},"creatorRecruitmentHeadline":{"type":"string","maxLength":160},"imageUrl":{"type":"string","maxLength":2000},"name":{"type":"string","maxLength":160},"publicDescription":{"type":"string","maxLength":2000}},"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Write organization (PATCH)","tags":["organization"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:organization:write","partner:organization:write"]},"get":{"description":"Perform the read operation for organization using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getOrganizationProfile","parameters":[{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read organization (GET)","tags":["organization"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:organization:read","partner:organization:read"]}},"/commerce/products":{"get":{"description":"Perform the read operation for products using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getCommerceProducts","parameters":[{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","maxLength":4096}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"query","required":false,"schema":{"type":"string","maxLength":120}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read products (GET)","tags":["products"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:products:read","partner:products:read"]}},"/creatives/{creativeId}":{"get":{"description":"Perform the read operation for submissions using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getCreativesCreativeId","parameters":[{"in":"path","name":"creativeId","required":true,"schema":{"type":"string"}},{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read submissions (GET)","tags":["submissions"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:submissions:read","partner:submissions:read"]},"patch":{"description":"Perform the review operation for submissions using the same organization binding and business rules as Lucra's platform (PATCH).","operationId":"patchCreativesCreativeId","parameters":[{"in":"path","name":"creativeId","required":true,"schema":{"type":"string"}},{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}}],"requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"note":{"type":"string","maxLength":2000},"status":{"type":"string","enum":["Approved","Live","Rejected","Review","Revision"]},"tags":{"maxItems":100,"type":"array","items":{"type":"string","maxLength":1000}}},"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Review submissions (PATCH)","tags":["submissions"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:submissions:review","partner:submissions:review"]}},"/creatives":{"get":{"description":"Perform the read operation for submissions using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getCreatives","parameters":[{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","maxLength":4096}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read submissions (GET)","tags":["submissions"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:submissions:read","partner:submissions:read"]}},"/creators/{creatorId}":{"get":{"description":"Perform the read operation for creator using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getCreatorsCreatorId","parameters":[{"in":"path","name":"creatorId","required":true,"schema":{"type":"string"}},{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read creator (GET)","tags":["creator"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:creator:read","partner:creator:read"]}},"/creators":{"get":{"description":"Perform the read operation for creator using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getCreators","parameters":[{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","maxLength":4096}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"query","required":false,"schema":{"type":"string","maxLength":120}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read creator (GET)","tags":["creator"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:creator:read","partner:creator:read"]}},"/explore/creators":{"get":{"description":"Perform the read operation for creator using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getExploreCreators","parameters":[{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","maxLength":4096}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"query","required":false,"schema":{"type":"string","maxLength":120}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read creator (GET)","tags":["creator"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:creator:read","partner:creator:read"]}},"/finance/summary":{"get":{"description":"Perform the read operation for finance using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getFinanceSummary","parameters":[{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}},{"in":"query","name":"from","required":false,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"in":"query","name":"to","required":false,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read finance (GET)","tags":["finance"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:finance:read","partner:finance:read"]}},"/analytics/summary":{"get":{"description":"Perform the read operation for analytics using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getAnalyticsSummary","parameters":[{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}},{"in":"query","name":"from","required":false,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"in":"query","name":"to","required":false,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read analytics (GET)","tags":["analytics"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:analytics:read","partner:analytics:read"]}},"/paid-campaigns/{campaignId}":{"get":{"description":"Perform the read operation for ads using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getPaidCampaignsCampaignId","parameters":[{"in":"path","name":"campaignId","required":true,"schema":{"type":"string"}},{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read ads (GET)","tags":["ads"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:ads:read","partner:ads:read"]}},"/paid-campaigns":{"get":{"description":"Perform the read operation for ads using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getPaidCampaigns","parameters":[{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","maxLength":4096}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"query","required":false,"schema":{"type":"string","maxLength":120}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read ads (GET)","tags":["ads"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:ads:read","partner:ads:read"]}},"/programs":{"get":{"description":"Perform the read operation for programs using the same organization binding and business rules as Lucra's platform (GET).","operationId":"getPrograms","parameters":[{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","maxLength":4096}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"query","required":false,"schema":{"type":"string","maxLength":120}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Read programs (GET)","tags":["programs"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:programs:read","partner:programs:read"]}},"/programs/{programId}/creators/{reviewId}":{"patch":{"description":"Perform the review operation for programs using the same organization binding and business rules as Lucra's platform (PATCH).","operationId":"patchProgramsProgramIdCreatorsReviewId","parameters":[{"in":"path","name":"programId","required":true,"schema":{"type":"string"}},{"in":"path","name":"reviewId","required":true,"schema":{"type":"string"}},{"in":"query","name":"client","required":false,"schema":{"type":"string","maxLength":4096,"description":"Active client organization slug for an agency key. Omit it to use the agency's own workspace for reads."}}],"requestBody":{"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"type":"string","enum":["Applied","Approved","Rejected"]}},"required":["status"],"additionalProperties":false}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}},"description":"Operation completed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request or agency client selection is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key is missing or invalid."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The API key lacks the required scope or client access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The requested resource was not found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The exact plan revision or semantic hash no longer matches."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The advertising plan expired."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"The request body is invalid or the operation was rejected."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Lucra rejected an unsafe or invalid provider-service response."}},"security":[{"ApiKeyAuth":[]}],"summary":"Review programs (PATCH)","tags":["programs"],"x-lucra-actors":["brand","partner"],"x-lucra-required-scopes":["brand:programs:review","partner:programs:review"]}}},"servers":[{"url":"https://api.onlucra.com/v1"}],"tags":[{"name":"organization"},{"name":"creator"},{"name":"programs"},{"name":"submissions"},{"name":"products"},{"name":"ads"},{"name":"analytics"},{"name":"finance"}]}