openapi: 3.0.3 info: title: 'C360 Customer Data Platform API Documentation' description: 'API documentation for C360 - Customer and Campaign Management Platform' version: 1.0.0 servers: - url: 'http://localhost' tags: - name: 'Database Operations' description: '' - name: 'Marketing Programs' description: '' - name: 'Campaign Groups' description: '' - name: Campaigns description: '' - name: Audiences description: '' - name: Customers description: '' - name: Destinations description: '' - name: 'Treatment Groups' description: '' - name: 'KPIs and Goals' description: '' - name: Admin description: '' - name: Endpoints description: '' - name: 'Validation Rules' description: '' paths: /api/db/test: get: summary: "Test the database connection.\ns" operationId: testTheDatabaseConnections description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: code: 200 message: 'Database connection successful' data: connection: mysql database: csite_c360 status: connected properties: code: type: integer example: 200 message: type: string example: 'Database connection successful' data: type: object properties: connection: type: string example: mysql database: type: string example: csite_c360 status: type: string example: connected 500: description: '' content: application/json: schema: type: object example: code: 500 message: 'Database connection failed' data: connection: mysql database: csite_c360 error: 'Could not connect to database' properties: code: type: integer example: 500 message: type: string example: 'Database connection failed' data: type: object properties: connection: type: string example: mysql database: type: string example: csite_c360 error: type: string example: 'Could not connect to database' tags: - 'Database Operations' security: [] /api/db/schema: get: summary: "Get all database tables and their schema details.\ns" operationId: getAllDatabaseTablesAndTheirSchemaDetailss description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: code: 200 message: 'Database schema retrieved successfully' data: - table_name: users table_display_name: 'User Accounts' info: 'Stores all user credentials and profile information' fields: - name: email display_name: 'Email Address' db_type: varchar(255) app_type: EmailString nullable: false default: null auto_incrementing: false info: 'Primary email for user communication' properties: code: type: integer example: 200 message: type: string example: 'Database schema retrieved successfully' data: type: array example: - table_name: users table_display_name: 'User Accounts' info: 'Stores all user credentials and profile information' fields: - name: email display_name: 'Email Address' db_type: varchar(255) app_type: EmailString nullable: false default: null auto_incrementing: false info: 'Primary email for user communication' items: type: object properties: table_name: type: string example: users table_display_name: type: string example: 'User Accounts' info: type: string example: 'Stores all user credentials and profile information' fields: type: array example: - name: email display_name: 'Email Address' db_type: varchar(255) app_type: EmailString nullable: false default: null auto_incrementing: false info: 'Primary email for user communication' items: type: object properties: name: type: string example: email display_name: type: string example: 'Email Address' db_type: type: string example: varchar(255) app_type: type: string example: EmailString nullable: type: boolean example: false default: type: string example: null auto_incrementing: type: boolean example: false info: type: string example: 'Primary email for user communication' 500: description: '' content: application/json: schema: type: object example: code: 500 message: 'Failed to retrieve database schema' data: error: 'Error message' properties: code: type: integer example: 500 message: type: string example: 'Failed to retrieve database schema' data: type: object properties: error: type: string example: 'Error message' tags: - 'Database Operations' security: [] /api/marketing-programs: get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Marketing Programs' security: [] post: summary: 'Store a newly created resource in storage.' operationId: storeANewlyCreatedResourceInStorage description: '' parameters: [] responses: { } tags: - 'Marketing Programs' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: false status: type: string description: '' example: active nullable: false enum: - draft - active - inactive start_date: type: string description: 'Must be a valid date.' example: '2025-05-16T16:44:38' nullable: false end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2106-06-15' nullable: false budget: type: number description: 'Must be at least 0.' example: 45 nullable: false goal: type: string description: 'Must not be greater than 255 characters.' example: qeopfuudtdsufvyvddqam nullable: false required: - name - description - status - start_date - end_date - budget - goal security: [] '/api/marketing-programs/{id}': get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Marketing Programs' security: [] put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - 'Marketing Programs' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: false status: type: string description: '' example: active nullable: false enum: - draft - active - inactive start_date: type: string description: 'Must be a valid date.' example: '2025-05-16T16:44:38' nullable: false end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2106-06-15' nullable: false budget: type: number description: 'Must be at least 0.' example: 45 nullable: false goal: type: string description: 'Must not be greater than 255 characters.' example: qeopfuudtdsufvyvddqam nullable: false required: - name - description - status - start_date - end_date - budget - goal security: [] delete: summary: 'Remove the specified resource from storage.' operationId: removeTheSpecifiedResourceFromStorage description: '' parameters: [] responses: { } tags: - 'Marketing Programs' security: [] parameters: - in: path name: id description: 'The ID of the marketing program.' example: consequatur required: true schema: type: string '/api/marketing-programs/{program_id}/campaign-groups': get: summary: "Display\nm." operationId: displaym description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Campaign Groups' security: [] post: summary: 'Store a newly created resource in storage for a specific Marketing Program.' operationId: storeANewlyCreatedResourceInStorageForASpecificMarketingProgram description: '' parameters: [] responses: { } tags: - 'Campaign Groups' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: false status: type: string description: '' example: active nullable: false enum: - draft - active - inactive start_date: type: string description: 'Must be a valid date.' example: '2025-05-16T16:44:38' nullable: false end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2106-06-15' nullable: false budget: type: number description: 'Must be at least 0.' example: 45 nullable: false goal: type: string description: 'Must not be greater than 255 characters.' example: qeopfuudtdsufvyvddqam nullable: false required: - name - description - status - start_date - end_date - budget - goal security: [] parameters: - in: path name: program_id description: 'The ID of the program.' example: consequatur required: true schema: type: string '/api/campaign-groups/{id}': get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Campaign Groups' security: [] put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - 'Campaign Groups' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: false status: type: string description: '' example: active nullable: false enum: - draft - active - inactive start_date: type: string description: 'Must be a valid date.' example: '2025-05-16T16:44:38' nullable: false end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2106-06-15' nullable: false budget: type: number description: 'Must be at least 0.' example: 45 nullable: false goal: type: string description: 'Must not be greater than 255 characters.' example: qeopfuudtdsufvyvddqam nullable: false required: - name - description - status - start_date - end_date - budget - goal security: [] delete: summary: 'Remove the specified resource from storage.' operationId: removeTheSpecifiedResourceFromStorage description: '' parameters: [] responses: { } tags: - 'Campaign Groups' security: [] parameters: - in: path name: id description: 'The ID of the campaign group.' example: consequatur required: true schema: type: string '/api/campaign-groups/{group_id}/campaigns': get: summary: "Display\np." operationId: displayp description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Campaigns security: [] post: summary: 'Store a newly created resource in storage for a specific Campaign Group.' operationId: storeANewlyCreatedResourceInStorageForASpecificCampaignGroup description: '' parameters: [] responses: { } tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true status: type: string description: '' example: active nullable: false enum: - draft - active - inactive start_date: type: string description: 'Must be a valid date.' example: '2025-05-16T16:44:38' nullable: false end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2106-06-15' nullable: false budget: type: number description: 'Must be at least 0.' example: 45 nullable: false goal: type: string description: 'Must not be greater than 255 characters.' example: qeopfuudtdsufvyvddqam nullable: false target_audience: type: string description: 'Must be a valid JSON string.' example: '["consequatur","consequatur"]' nullable: true success_criteria: type: string description: 'Must be a valid JSON string.' example: '["consequatur","consequatur"]' nullable: true required: - name - status - start_date - end_date - budget - goal security: [] parameters: - in: path name: group_id description: 'The ID of the group.' example: consequatur required: true schema: type: string '/api/campaigns/{id}': get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Campaigns security: [] put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true status: type: string description: '' example: active nullable: false enum: - draft - active - inactive start_date: type: string description: 'Must be a valid date.' example: '2025-05-16T16:44:38' nullable: false end_date: type: string description: 'Must be a valid date. Must be a date after or equal to start_date.' example: '2106-06-15' nullable: false budget: type: number description: 'Must be at least 0.' example: 45 nullable: false goal: type: string description: 'Must not be greater than 255 characters.' example: qeopfuudtdsufvyvddqam nullable: false target_audience: type: string description: 'Must be a valid JSON string.' example: '["consequatur","consequatur"]' nullable: true success_criteria: type: string description: 'Must be a valid JSON string.' example: '["consequatur","consequatur"]' nullable: true required: - name - status - start_date - end_date - budget - goal security: [] delete: summary: 'Remove the specified resource from storage.' operationId: removeTheSpecifiedResourceFromStorage description: '' parameters: [] responses: { } tags: - Campaigns security: [] parameters: - in: path name: id description: 'The ID of the campaign.' example: consequatur required: true schema: type: string /api/audiences: get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Audiences security: [] post: summary: 'Store a newly created resource in storage.' operationId: storeANewlyCreatedResourceInStorage description: '' parameters: [] responses: { } tags: - Audiences requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true rules: type: array description: '' example: null items: type: object properties: rule_type: type: string description: 'Rules must be present, can be empty array.' example: consequatur nullable: false rule_value: type: string description: 'Must not be greater than 255 characters.' example: mqeopfuudtdsufvyvddqa nullable: false required: - rule_type - rule_value required: - name security: [] '/api/audiences/{id}': get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Audiences security: [] put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - Audiences requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true rules: type: array description: '' example: null items: type: object properties: rule_type: type: string description: 'This field is required when rules is present.' example: null nullable: false rule_value: type: string description: 'This field is required when rules is present. Must not be greater than 255 characters.' example: dtdsufvyvddqamniihfqc nullable: false required: - name security: [] delete: summary: 'Remove the specified resource from storage.' operationId: removeTheSpecifiedResourceFromStorage description: '' parameters: [] responses: { } tags: - Audiences security: [] parameters: - in: path name: id description: 'The ID of the audience.' example: consequatur required: true schema: type: string '/api/campaigns/{campaign_id}/audiences': get: summary: 'List audiences associated with a specific campaign.' operationId: listAudiencesAssociatedWithASpecificCampaign description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Audiences security: [] post: summary: 'Associate an audience with a campaign.' operationId: associateAnAudienceWithACampaign description: '' parameters: [] responses: { } tags: - Audiences requestBody: required: true content: application/json: schema: type: object properties: audience_id: type: string description: 'The id of an existing record in the audiences table.' example: consequatur nullable: false segment_override: type: string description: 'Must be a valid JSON string.' example: '["consequatur","consequatur"]' nullable: true required: - audience_id security: [] parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: consequatur required: true schema: type: string '/api/campaigns/{campaign_id}/audiences/{audience_id}': delete: summary: 'Disassociate an audience from a campaign.' operationId: disassociateAnAudienceFromACampaign description: '' parameters: [] responses: { } tags: - Audiences security: [] parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: consequatur required: true schema: type: string - in: path name: audience_id description: 'The ID of the audience.' example: consequatur required: true schema: type: string '/api/campaigns/{campaign_id}/sub-audiences': get: summary: "Display\nb-audiences for a specific Campaign." operationId: displaybAudiencesForASpecificCampaign description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Audiences security: [] post: summary: 'Store a newly created sub-audience for a specific Campaign.' operationId: storeANewlyCreatedSubAudienceForASpecificCampaign description: '' parameters: [] responses: { } tags: - Audiences requestBody: required: true content: application/json: schema: type: object properties: audience_id: type: string description: '' example: consequatur nullable: false name: type: string description: 'Must not be greater than 255 characters.' example: mqeopfuudtdsufvyvddqa nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true segment_definition: type: string description: 'Must be a valid JSON string.' example: '["consequatur","consequatur"]' nullable: false required: - audience_id - name - segment_definition security: [] parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: consequatur required: true schema: type: string '/api/sub-audiences/{id}': get: summary: "Display\nb-audience." operationId: displaybAudience description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Audiences security: [] put: summary: 'Update the specified sub-audience in storage.' operationId: updateTheSpecifiedSubAudienceInStorage description: '' parameters: [] responses: { } tags: - Audiences requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true segment_definition: type: string description: 'Must be a valid JSON string.' example: '["consequatur","consequatur"]' nullable: false required: - name - segment_definition security: [] delete: summary: 'Remove the specified sub-audience from storage.' operationId: removeTheSpecifiedSubAudienceFromStorage description: '' parameters: [] responses: { } tags: - Audiences security: [] parameters: - in: path name: id description: 'The ID of the sub audience.' example: consequatur required: true schema: type: string /api/customers: get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Customers security: [] post: summary: 'Store a newly created resource in storage.' operationId: storeANewlyCreatedResourceInStorage description: '' parameters: [] responses: { } tags: - Customers requestBody: required: false content: application/json: schema: type: object properties: external_id: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: true first_name: type: string description: 'Must not be greater than 255 characters.' example: amniihfqcoynlazghdtqt nullable: true last_name: type: string description: 'Must not be greater than 255 characters.' example: qxbajwbpilpmufinllwlo nullable: true email: type: string description: 'Must be a valid email address. Must not be greater than 255 characters.' example: schmitt.beulah@example.org nullable: true phone: type: string description: 'Must not be greater than 255 characters.' example: smsjuryvojcybzvrbyick nullable: true attributes: type: string description: 'Must be a valid JSON string.' example: '["consequatur","consequatur"]' nullable: true is_active: type: boolean description: '' example: false nullable: false security: [] '/api/customers/{id}': get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Customers security: [] put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - Customers security: [] delete: summary: 'Remove the specified resource from storage.' operationId: removeTheSpecifiedResourceFromStorage description: '' parameters: [] responses: { } tags: - Customers security: [] parameters: - in: path name: id description: 'The ID of the customer.' example: consequatur required: true schema: type: string /api/destinations: get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Destinations security: [] post: summary: 'Store a newly created resource in storage.' operationId: storeANewlyCreatedResourceInStorage description: '' parameters: [] responses: { } tags: - Destinations requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true destination_type: type: string description: '' example: consequatur nullable: false connection_details: type: string description: 'Must be a valid JSON string.' example: '["consequatur","consequatur"]' nullable: false is_active: type: boolean description: '' example: false nullable: false required: - name - destination_type - connection_details security: [] '/api/destinations/{id}': get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Destinations security: [] put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - Destinations security: [] delete: summary: 'Remove the specified resource from storage.' operationId: removeTheSpecifiedResourceFromStorage description: '' parameters: [] responses: { } tags: - Destinations security: [] parameters: - in: path name: id description: 'The ID of the destination.' example: consequatur required: true schema: type: string '/api/campaigns/{campaign_id}/destinations': get: summary: 'List destinations configured for a specific campaign.' operationId: listDestinationsConfiguredForASpecificCampaign description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Destinations security: [] post: summary: 'Configure (store) a destination for a campaign.' operationId: configurestoreADestinationForACampaign description: '' parameters: [] responses: { } tags: - Destinations requestBody: required: true content: application/json: schema: type: object properties: destination_id: type: string description: '' example: consequatur nullable: false treatment_group_id: type: string description: '' example: null nullable: true attribute_mapping: type: string description: 'Must be a valid JSON string.' example: '["consequatur","consequatur"]' nullable: false is_active: type: boolean description: '' example: false nullable: false required: - destination_id - attribute_mapping security: [] parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: consequatur required: true schema: type: string '/api/campaign-destinations/{campaign_destination_id}': delete: summary: "Remove the specified resource (association) from storage.\nUses the campaign_destination primary key ID for deletion." operationId: removeTheSpecifiedResourceassociationFromStorageUsesTheCampaignDestinationPrimaryKeyIDForDeletion description: '' parameters: [] responses: { } tags: - Destinations security: [] parameters: - in: path name: campaign_destination_id description: 'The ID of the campaign destination.' example: consequatur required: true schema: type: string '/api/campaigns/{campaign_id}/treatment-groups': get: summary: "Display\nn." operationId: displayn description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Treatment Groups' security: [] post: summary: 'Store a newly created resource in storage for a specific Campaign.' operationId: storeANewlyCreatedResourceInStorageForASpecificCampaign description: '' parameters: [] responses: { } tags: - 'Treatment Groups' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: "Add validation for sub_audience_id if/when implemented: 'nullable|exists:sub_audiences,id',. Must not be greater than 255 characters." example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true type: type: string description: '' example: consequatur nullable: false allocation_percentage: type: number description: 'Must be at least 0. Must not be greater than 100.' example: 13 nullable: false required: - name - type - allocation_percentage security: [] parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: consequatur required: true schema: type: string '/api/treatment-groups/{id}': get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Treatment Groups' security: [] put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - 'Treatment Groups' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true type: type: string description: '' example: consequatur nullable: false allocation_percentage: type: number description: 'Must be at least 0. Must not be greater than 100.' example: 13 nullable: false required: - name - type - allocation_percentage security: [] delete: summary: 'Remove the specified resource from storage.' operationId: removeTheSpecifiedResourceFromStorage description: '' parameters: [] responses: { } tags: - 'Treatment Groups' security: [] parameters: - in: path name: id description: 'The ID of the treatment group.' example: consequatur required: true schema: type: string '/api/campaigns/{campaign_id}/kpis': get: summary: "Display\nn." operationId: displayn description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'KPIs and Goals' security: [] post: summary: 'Store a newly created KPI for a specific Campaign.' operationId: storeANewlyCreatedKPIForASpecificCampaign description: '' parameters: [] responses: { } tags: - 'KPIs and Goals' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true kpi_type: type: string description: '' example: consequatur nullable: false target_value: type: number description: 'Must be at least 0.' example: 45 nullable: false actual_value: type: number description: 'Must be at least 0.' example: 56 nullable: false required: - name - kpi_type - target_value security: [] parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: consequatur required: true schema: type: string '/api/campaign-kpis/{kpi_id}': get: summary: "Display\nd KPI." operationId: displaydKPI description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'KPIs and Goals' security: [] put: summary: 'Update the specified KPI in storage.' operationId: updateTheSpecifiedKPIInStorage description: '' parameters: [] responses: { } tags: - 'KPIs and Goals' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true kpi_type: type: string description: '' example: consequatur nullable: false target_value: type: number description: 'Must be at least 0.' example: 45 nullable: false actual_value: type: number description: 'Must be at least 0.' example: 56 nullable: false required: - name - kpi_type - target_value security: [] delete: summary: 'Remove the specified KPI from storage.' operationId: removeTheSpecifiedKPIFromStorage description: '' parameters: [] responses: { } tags: - 'KPIs and Goals' security: [] parameters: - in: path name: kpi_id description: 'The ID of the kpi.' example: consequatur required: true schema: type: string '/api/campaigns/{campaign_id}/customer-goals': get: summary: "Display\nn." operationId: displayn description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'KPIs and Goals' security: [] post: summary: 'Store a newly created customer goal for a specific Campaign.' operationId: storeANewlyCreatedCustomerGoalForASpecificCampaign description: '' parameters: [] responses: { } tags: - 'KPIs and Goals' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true goal_type: type: string description: '' example: consequatur nullable: false target_value: type: number description: 'Must be at least 0.' example: 45 nullable: false validation_rule_id: type: integer description: "Add validation for validation_rule_id if it's required/exists in your setup\n'validation_rule_id' => ['nullable', Rule::exists('validation_rules', 'id')->where('tenant_id', $tenantId)],." example: 17 nullable: true required: - name - goal_type - target_value security: [] parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: consequatur required: true schema: type: string '/api/customer-goals/{goal_id}': put: summary: 'Update the specified customer goal in storage.' operationId: updateTheSpecifiedCustomerGoalInStorage description: '' parameters: [] responses: { } tags: - 'KPIs and Goals' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true goal_type: type: string description: '' example: consequatur nullable: false target_value: type: number description: 'Must be at least 0.' example: 45 nullable: false validation_rule_id: type: integer description: "Add validation for validation_rule_id if updatable\n'validation_rule_id' => ['sometimes', 'nullable', Rule::exists('validation_rules', 'id')->where('tenant_id', $tenantId)],." example: 17 nullable: true required: - name - goal_type - target_value security: [] delete: summary: 'Remove the specified customer goal from storage.' operationId: removeTheSpecifiedCustomerGoalFromStorage description: '' parameters: [] responses: { } tags: - 'KPIs and Goals' security: [] parameters: - in: path name: goal_id description: 'The ID of the goal.' example: consequatur required: true schema: type: string /api/admin/users: get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Admin security: [] post: summary: 'Store a newly created resource in storage.' operationId: storeANewlyCreatedResourceInStorage description: '' parameters: [] responses: { } tags: - Admin requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false email: type: string description: 'Must be a valid email address. Must not be greater than 255 characters.' example: kunde.eloisa@example.com nullable: false password: type: string description: '' example: consequatur nullable: false roles: type: array description: 'The name of an existing record in the roles table.' example: - consequatur items: type: string required: - name - email - password security: [] '/api/admin/users/{user_id}': get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Admin security: [] put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - Admin requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false email: type: string description: 'Must be a valid email address. Must not be greater than 255 characters.' example: kunde.eloisa@example.com nullable: false password: type: string description: '' example: null nullable: true roles: type: array description: 'The name of an existing record in the roles table.' example: - consequatur items: type: string is_active: type: boolean description: '' example: false nullable: false required: - name - email security: [] delete: summary: 'Remove the specified resource from storage.' operationId: removeTheSpecifiedResourceFromStorage description: '' parameters: [] responses: { } tags: - Admin security: [] parameters: - in: path name: user_id description: 'The ID of the user.' example: 17 required: true schema: type: integer /api/admin/tenants: get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Admin security: [] post: summary: 'Store a newly created resource in storage.' operationId: storeANewlyCreatedResourceInStorage description: '' parameters: [] responses: { } tags: - Admin requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: 'Must not be greater than 255 characters.' example: 'Dolores molestias ipsam sit.' nullable: true is_active: type: boolean description: '' example: false nullable: false required: - name security: [] '/api/admin/tenants/{tenant_id}': get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Admin security: [] put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - Admin requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: 'Must not be greater than 255 characters.' example: 'Dolores molestias ipsam sit.' nullable: true is_active: type: boolean description: '' example: false nullable: false required: - name security: [] delete: summary: 'Remove the specified resource from storage.' operationId: removeTheSpecifiedResourceFromStorage description: '' parameters: [] responses: { } tags: - Admin security: [] parameters: - in: path name: tenant_id description: 'The ID of the tenant.' example: 17 required: true schema: type: integer /api/user: get: summary: '' operationId: getApiUser description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/login: post: summary: '' operationId: postApiLogin description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be a valid email address.' example: qkunze@example.com nullable: false password: type: string description: '' example: 'O[2UZ5ij-e/dl4m{o,' nullable: false device_name: type: string description: '' example: consequatur nullable: false required: - email - password - device_name security: [] /api/forgot-password: post: summary: '' operationId: postApiForgotPassword description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be a valid email address. The email of an existing record in the users table.' example: qkunze@example.com nullable: false required: - email security: [] /api/reset-password: post: summary: '' operationId: postApiResetPassword description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: token: type: string description: '' example: consequatur nullable: false email: type: string description: 'Must be a valid email address.' example: carolyne.luettgen@example.org nullable: false password: type: string description: '' example: consequatur nullable: false required: - token - email - password security: [] /api/logout: post: summary: '' operationId: postApiLogout description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/admin/roles: get: summary: '' operationId: getApiAdminRoles description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/admin/permissions: get: summary: '' operationId: getApiAdminPermissions description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/admin/activity-log: get: summary: '' operationId: getApiAdminActivityLog description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/send-email: post: summary: '' operationId: postApiSendEmail description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: to: type: string description: 'Must be a valid email address.' example: qkunze@example.com nullable: false subject: type: string description: 'Must not be greater than 255 characters.' example: opfuudtdsufvyvddqamni nullable: false content: type: string description: '' example: consequatur nullable: false from_email: type: string description: 'Must be a valid email address.' example: carolyne.luettgen@example.org nullable: true from_name: type: string description: '' example: consequatur nullable: true reply_to: type: string description: 'Must be a valid email address.' example: carolyne.luettgen@example.org nullable: true attachments: type: array description: '' example: null items: type: object nullable: true properties: path: type: string description: 'Basic validation for attachments - could be more specific. This field is required when attachments is present.' example: consequatur nullable: false as: type: string description: 'Path relative to storage/app.' example: consequatur nullable: true mime: type: string description: '' example: consequatur nullable: true required: - to - subject - content security: [] /api/db-test: get: summary: '' operationId: getApiDbTest description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: code: 200 message: 'Database connection successful.' data: null properties: code: type: integer example: 200 message: type: string example: 'Database connection successful.' data: type: string example: null tags: - 'Database Operations' security: [] /api/tables: get: summary: '' operationId: getApiTables description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: code: 200 message: 'Tables retrieved successfully.' data: - table_name: activity_log table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: log_name display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: description display_name: null db_type: text app_type: null nullable: false default: null auto_incrementing: false info: null - name: subject_type display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: event display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: subject_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: causer_type display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: causer_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: properties display_name: null db_type: longtext app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: batch_uuid display_name: null db_type: char(36) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: column_metadata table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: table_name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: column_name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: display_name display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: app_type display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: info display_name: null db_type: text app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: failed_jobs table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: uuid display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: connection display_name: null db_type: text app_type: null nullable: false default: null auto_incrementing: false info: null - name: queue display_name: null db_type: text app_type: null nullable: false default: null auto_incrementing: false info: null - name: payload display_name: null db_type: longtext app_type: null nullable: false default: null auto_incrementing: false info: null - name: exception display_name: null db_type: longtext app_type: null nullable: false default: null auto_incrementing: false info: null - name: failed_at display_name: null db_type: timestamp app_type: null nullable: false default: current_timestamp() auto_incrementing: false info: null - table_name: migrations table_display_name: null info: null fields: - name: id display_name: null db_type: 'int(10) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: migration display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: batch display_name: null db_type: int(11) app_type: null nullable: false default: null auto_incrementing: false info: null - table_name: model_has_permissions table_display_name: null info: null fields: - name: permission_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - name: model_type display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: model_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - table_name: model_has_roles table_display_name: null info: null fields: - name: role_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - name: model_type display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: model_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - table_name: password_reset_tokens table_display_name: null info: null fields: - name: email display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: token display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: permissions table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: guard_name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: personal_access_tokens table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: tokenable_type display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: tokenable_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - name: name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: token display_name: null db_type: varchar(64) app_type: null nullable: false default: null auto_incrementing: false info: null - name: abilities display_name: null db_type: text app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: last_used_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: expires_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: role_has_permissions table_display_name: null info: null fields: - name: permission_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - name: role_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - table_name: roles table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: guard_name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: table_metadata table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: table_name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: display_name display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: app_type display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: info display_name: null db_type: text app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: tenants table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: users table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: email display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: email_verified_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: password display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: remember_token display_name: null db_type: varchar(100) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: is_active display_name: null db_type: tinyint(1) app_type: null nullable: false default: '1' auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null properties: code: type: integer example: 200 message: type: string example: 'Tables retrieved successfully.' data: type: array example: - table_name: activity_log table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: log_name display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: description display_name: null db_type: text app_type: null nullable: false default: null auto_incrementing: false info: null - name: subject_type display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: event display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: subject_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: causer_type display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: causer_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: properties display_name: null db_type: longtext app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: batch_uuid display_name: null db_type: char(36) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: column_metadata table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: table_name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: column_name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: display_name display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: app_type display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: info display_name: null db_type: text app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: failed_jobs table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: uuid display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: connection display_name: null db_type: text app_type: null nullable: false default: null auto_incrementing: false info: null - name: queue display_name: null db_type: text app_type: null nullable: false default: null auto_incrementing: false info: null - name: payload display_name: null db_type: longtext app_type: null nullable: false default: null auto_incrementing: false info: null - name: exception display_name: null db_type: longtext app_type: null nullable: false default: null auto_incrementing: false info: null - name: failed_at display_name: null db_type: timestamp app_type: null nullable: false default: current_timestamp() auto_incrementing: false info: null - table_name: migrations table_display_name: null info: null fields: - name: id display_name: null db_type: 'int(10) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: migration display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: batch display_name: null db_type: int(11) app_type: null nullable: false default: null auto_incrementing: false info: null - table_name: model_has_permissions table_display_name: null info: null fields: - name: permission_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - name: model_type display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: model_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - table_name: model_has_roles table_display_name: null info: null fields: - name: role_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - name: model_type display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: model_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - table_name: password_reset_tokens table_display_name: null info: null fields: - name: email display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: token display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: permissions table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: guard_name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: personal_access_tokens table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: tokenable_type display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: tokenable_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - name: name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: token display_name: null db_type: varchar(64) app_type: null nullable: false default: null auto_incrementing: false info: null - name: abilities display_name: null db_type: text app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: last_used_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: expires_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: role_has_permissions table_display_name: null info: null fields: - name: permission_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - name: role_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: false info: null - table_name: roles table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: guard_name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: table_metadata table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: table_name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: display_name display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: app_type display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: info display_name: null db_type: text app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: tenants table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - table_name: users table_display_name: null info: null fields: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: name display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: email display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: email_verified_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: password display_name: null db_type: varchar(255) app_type: null nullable: false default: null auto_incrementing: false info: null - name: remember_token display_name: null db_type: varchar(100) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: is_active display_name: null db_type: tinyint(1) app_type: null nullable: false default: '1' auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null items: type: object properties: table_name: type: string example: activity_log table_display_name: type: string example: null info: type: string example: null fields: type: array example: - name: id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: false default: null auto_incrementing: true info: null - name: log_name display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: description display_name: null db_type: text app_type: null nullable: false default: null auto_incrementing: false info: null - name: subject_type display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: event display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: subject_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: causer_type display_name: null db_type: varchar(255) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: causer_id display_name: null db_type: 'bigint(20) unsigned' app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: properties display_name: null db_type: longtext app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: batch_uuid display_name: null db_type: char(36) app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: created_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null - name: updated_at display_name: null db_type: timestamp app_type: null nullable: true default: 'NULL' auto_incrementing: false info: null items: type: object properties: name: type: string example: id display_name: type: string example: null db_type: type: string example: 'bigint(20) unsigned' app_type: type: string example: null nullable: type: boolean example: false default: type: string example: null auto_incrementing: type: boolean example: true info: type: string example: null tags: - Endpoints security: [] '/api/campaigns/{campaign_id}/validation-rules': get: summary: 'List validation rules associated with a specific campaign.' operationId: listValidationRulesAssociatedWithASpecificCampaign description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Validation Rules' security: [] post: summary: 'Associate a validation rule with a campaign.' operationId: associateAValidationRuleWithACampaign description: '' parameters: [] responses: { } tags: - 'Validation Rules' requestBody: required: true content: application/json: schema: type: object properties: validation_rule_id: type: string description: '' example: consequatur nullable: false rule_override: type: string description: 'Must be a valid JSON string.' example: '["consequatur","consequatur"]' nullable: true required: - validation_rule_id security: [] parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: consequatur required: true schema: type: string '/api/campaigns/{campaign_id}/validation-rules/{validation_rule_id}': delete: summary: 'Disassociate a validation rule from a campaign.' operationId: disassociateAValidationRuleFromACampaign description: '' parameters: [] responses: { } tags: - 'Validation Rules' security: [] parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: consequatur required: true schema: type: string - in: path name: validation_rule_id description: 'The ID of the validation rule.' example: consequatur required: true schema: type: string /api/validation-rules: get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 500: description: '' content: application/json: schema: type: object example: message: 'Server Error' properties: message: type: string example: 'Server Error' tags: - 'Validation Rules' security: [] post: summary: 'Store a newly created resource in storage.' operationId: storeANewlyCreatedResourceInStorage description: '' parameters: [] responses: { } tags: - 'Validation Rules' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 255 characters.' example: vmqeopfuudtdsufvyvddq nullable: false description: type: string description: '' example: 'Dolores dolorum amet iste laborum eius est dolor.' nullable: true rule_definition: type: string description: 'Must be a valid JSON string.' example: '["consequatur","consequatur"]' nullable: false is_active: type: boolean description: '' example: false nullable: false required: - name - rule_definition security: [] '/api/validation-rules/{id}': get: summary: "Display\ne." operationId: displaye description: '' parameters: [] responses: 500: description: '' content: application/json: schema: type: object example: code: 500 message: 'Failed to retrieve validation rule.' data: "SQLSTATE[42S02]: Base table or view not found: 1146 Table 'csite_c360.validation_rules' doesn't exist (Connection: mysql, SQL: select * from `validation_rules` where `tenant_id` = 1 and `validation_rules`.`id` = 17 and `validation_rules`.`deleted_at` is null limit 1)" properties: code: type: integer example: 500 message: type: string example: 'Failed to retrieve validation rule.' data: type: string example: "SQLSTATE[42S02]: Base table or view not found: 1146 Table 'csite_c360.validation_rules' doesn't exist (Connection: mysql, SQL: select * from `validation_rules` where `tenant_id` = 1 and `validation_rules`.`id` = 17 and `validation_rules`.`deleted_at` is null limit 1)" tags: - 'Validation Rules' security: [] put: summary: 'Update the specified resource in storage.' operationId: updateTheSpecifiedResourceInStorage description: '' parameters: [] responses: { } tags: - 'Validation Rules' security: [] delete: summary: 'Remove the specified resource from storage.' operationId: removeTheSpecifiedResourceFromStorage description: '' parameters: [] responses: { } tags: - 'Validation Rules' security: [] parameters: - in: path name: id description: 'The ID of the validation rule.' example: 17 required: true schema: type: integer