generated: '2026-10-18' method: derived generator: derive-data-model.py source: - openapi/dev-plainrouter-openapi.json - openapi/plainrouter-openapi.json notation: has_one = property $ref; has_many = array of $ref; belongs_to = _id field summary: entities: 60 entities_in_spec: 60 relationships: 8 entities: - name: ActionBatchRead fields: 1 - name: ActionCurrentDisposition fields: 8 - name: ActionDecisionReceiptRead fields: 4 - name: ActionDetailRead fields: 1 - name: ActionDryRunRead fields: 1 - name: ActionListRead fields: 2 - name: ActionPolicyRead fields: 1 - name: ActionPolicyResult fields: 9 - name: ActionProposalInput fields: 7 - name: ActionProposalRead fields: 1 - name: ActionReadItem fields: 18 - name: ActionReceiptUnavailable fields: 1 - name: ActionRuleDetailRead fields: 1 - name: ActionRuleWriteRead fields: 1 - name: AdTest fields: 17 - name: AdTestCreateRead fields: 1 - name: AdTestDailyFactRead fields: 10 - name: AdTestEventChoice fields: 2 - name: AdTestListRead fields: 3 - name: AdTestRead fields: 19 - name: AdTestShowRead fields: 1 - name: AdTestVerdictMemberRead fields: 10 - name: AdTestVerdictRead fields: 9 - name: AgentContextAuthError fields: 2 - name: AgentCredentialError fields: 2 - name: ApiRouteNotFound fields: 3 - name: CookieDeclaration fields: 2 - name: CookieDeclarationItem fields: 5 - name: CreativeIntakeRead fields: 1 - name: CreativeIntakeRejected fields: 1 - name: CreativeIntakeTags fields: 3 description: 'Optional flat map of at most 32 string tags; reserved keys count toward the cap. For a creative from an outside tool, set generator and generator_job, plus parent_creative for a variation. Values are ' - name: CreativeMcpPreview fields: 8 description: Missing derivatives return pending and queue a creative-queue build, including creatives created before these tools shipped. No image bytes are sent to the model. - name: DeploymentPlan fields: 24 - name: DeploymentPlanRead fields: 7 - name: Destination fields: 10 - name: DraftBatchFileImportRequest fields: 8 - name: EmqSnapshot fields: 11 - name: ErrorMessage fields: 1 - name: Event fields: 28 - name: ExecuteDeploymentPlanRequest fields: 2 - name: LaunchIntentRead fields: 1 - name: LaunchPolicy fields: 9 - name: PlanCopyForbidden fields: 1 - name: PlanCopyNotFound fields: 1 - name: PlanCopyRead fields: 1 - name: PlanCopyRejected fields: 1 - name: PlanExecuteConflict fields: 1 - name: PlanExecuteRejected fields: 1 - name: PlanValidateRejected fields: 1 - name: ProposalReplayConflict fields: 2 - name: ProposalUnavailable fields: 1 - name: ReconciliationReport fields: 15 - name: StoreCreativeFromUrlRequest fields: 3 - name: StoreCreativeRequest fields: 3 - name: StoreDeploymentPlanRequest fields: 16 - name: StoreLaunchPolicyRequest fields: 3 - name: UpdateCreativeStatusRequest fields: 1 - name: UpdateDeploymentPlanRequest fields: 16 - name: ValidationError fields: 2 - name: WorkspaceLockTimeout fields: 1 relationships: - from: ActionDecisionReceiptRead to: ActionCurrentDisposition type: has_one via: disposition - from: ActionDetailRead to: ActionReadItem type: has_one via: data - from: ActionListRead to: ActionReadItem type: has_many via: data - from: ActionReadItem to: ActionCurrentDisposition type: has_one via: disposition - from: ActionReadItem to: ActionPolicyResult type: has_one via: policy_result - from: ActionReadItem to: ActionPolicyResult type: has_many via: policy_results - from: EmqSnapshot to: Destination type: belongs_to via: destination_id - from: ReconciliationReport to: Destination type: belongs_to via: destination_id