# Get participation details with submission tracking Retrieve detailed information about a participation including submission tracking status. Returns campaign info, participation record, and tracking status for each submission. Requires authentication - accessible to both the influencer and campaign owner. Endpoint: GET /participations/{participationId} Version: 0.1.0 Security: bearerAuth ## Path parameters: - `participationId` (string, required) Unique identifier for the participation Example: "participation_xyz789" ## Response 200 fields (application/json): - `participation` (object, required) - `participation.participationId` (string, required) Unique identifier for the participation Example: "participation_xyz789" - `participation.campaignId` (string, required) Unique identifier for the campaign Example: "campaign_abc123" - `participation.influencerUserId` (string, required) Unique identifier for the influencer user Example: "user_123" - `participation.participationStatus` (string, required) Current status of the participation Enum: "PARTICIPATION_STATUS_PENDING", "PARTICIPATION_STATUS_APPROVED", "PARTICIPATION_STATUS_REJECTED", "PARTICIPATION_STATUS_CONTENT_SUBMITTED", "PARTICIPATION_STATUS_COMPLETED" - `participation.contentSubmissionList` (array, required) List of content submissions for this participation - `participation.contentSubmissionList.platformType` (string, required) Platform where the content was posted Enum: "INSTAGRAM", "TIKTOK", "FACEBOOK", "YOUTUBE" - `participation.contentSubmissionList.contentUrl` (string, required) URL to the content Example: "https://instagram.com/p/abc123" - `participation.contentSubmissionList.submittedAtTimestamp` (string, required) When the content was submitted Example: "2024-01-01T12:00:00Z" - `participation.contentSubmissionList.postedAtTimestamp` (string,null, required) When the content was posted (null if not yet posted) Example: "2024-01-01T12:00:00Z" - `participation.contentSubmissionList.declaredHashtags` (array, required) Array of hashtags declared in the content submission Example: ["#summer","#productlaunch"] - `participation.contentSubmissionList.declaredMentions` (array, required) Array of mentions declared in the content submission Example: ["@brand"] - `participation.contentSubmissionList.declaredContentType` (string, required) Content type declared by the influencer during submission Enum: "INSTAGRAM", "TIKTOK", "FACEBOOK", "YOUTUBE" - `participation.contentSubmissionList.submissionStatus` (string, required) Status of the submission. Submissions start as PENDING and transition to ACCEPTED or REJECTED based on campaign requirements validation. Enum: "CONTENT_SUBMISSION_STATUS_PENDING", "CONTENT_SUBMISSION_STATUS_ACCEPTED", "CONTENT_SUBMISSION_STATUS_REJECTED" - `participation.contentSubmissionList.rejectionReason` (string,null) Reason for rejection if submissionStatus is REJECTED. Possible values: CAMPAIGN_NOT_ACTIVE, SUBMISSION_LIMIT_REACHED, CONTENT_TYPE_NOT_ALLOWED, MISSING_REQUIRED_HASHTAGS, MISSING_REQUIRED_MENTIONS, INTEGRATION_NOT_ELIGIBLE - `participation.createdAtTimestamp` (string, required) When the participation was created Example: "2024-01-01T00:00:00Z" - `participation.lastUpdatedAtTimestamp` (string, required) When the participation was last updated Example: "2024-01-01T00:00:00Z" - `campaign` (object, required) - `campaign.ownerUserId` (string, required) Unique identifier for the campaign owner Example: "user_123" - `campaign.campaignTitle` (string, required) Title of the campaign Example: "Summer Product Launch" - `campaign.campaignDescription` (string, required) Description of the campaign Example: "Promote our new summer product line to increase brand awareness" - `campaign.campaignObjectiveType` (string, required) Objective type for the campaign Enum: "CAMPAIGN_OBJECTIVE_AWARENESS", "CAMPAIGN_OBJECTIVE_ENGAGEMENT", "CAMPAIGN_OBJECTIVE_CONVERSIONS" - `campaign.campaignCurrencyCode` (string, required) Currency code for the campaign Enum: "NGN", "USD" - `campaign.targetBudgetAmountCents` (integer,null, required) Target budget in cents (null if no target set) Example: 1000000 - `campaign.campaignLifeCycleStatus` (string, required) Current lifecycle status of the campaign Enum: "CAMPAIGN_DRAFT", "CAMPAIGN_ACTIVE", "CAMPAIGN_PAUSED", "CAMPAIGN_COMPLETED", "CAMPAIGN_COMPLETED_WITH_REFUND", "CAMPAIGN_CANCELLED" - `campaign.campaignStartDateTimestamp` (string,null, required) Campaign start date (null if not set) Example: "2024-06-01T00:00:00Z" - `campaign.campaignEndDateTimestamp` (string,null, required) Campaign end date (null if not set) Example: "2024-08-31T23:59:59Z" - `campaign.completedAtTimestamp` (string,null, required) When the campaign was completed (null if not yet completed) Example: "2024-09-01T00:00:00Z" - `campaign.requirements` (object, required) - `campaign.requirements.requiredHashtags` (array, required) Array of required hashtags for submissions Example: ["#hashtag1","#hashtag2"] - `campaign.requirements.requiredMentions` (array, required) Array of required mentions for submissions Example: ["@mention1","@mention2"] - `campaign.requirements.allowedContentTypes` (array, required) Array of allowed content platform types Enum: "INSTAGRAM", "TIKTOK", "FACEBOOK", "YOUTUBE" - `campaign.requirements.submissionLimit` (integer, required) Maximum number of submissions allowed per participation Example: 2 - `campaign.createdAtTimestamp` (string, required) When the campaign was created Example: "2024-01-01T00:00:00Z" - `campaign.lastUpdatedAtTimestamp` (string, required) When the campaign was last updated Example: "2024-01-01T00:00:00Z" - `submission_tracking_summary` (object, required) - `submission_tracking_summary.submission_limit` (integer, required) Maximum number of submissions that can be tracked for metrics Example: 3 - `submission_tracking_summary.accepted_submission_count` (integer, required) Total number of accepted submissions Example: 5 - `submission_tracking_summary.tracked_submission_count` (integer, required) Number of submissions currently being tracked for metrics Example: 3 - `submission_tracking_list` (array, required) - `submission_tracking_list.submission_id` (string, required) Unique identifier for the submission Example: "submission_abc123" - `submission_tracking_list.is_tracked` (boolean, required) Whether this submission is being tracked for metrics Example: true - `submission_tracking_list.tracking_reason` (string, required) Reason for the tracking status Enum: "SUBMISSION_TRACKING_WITHIN_LIMIT", "SUBMISSION_TRACKING_OVER_LIMIT", "SUBMISSION_TRACKING_NOT_ACCEPTED", "SUBMISSION_TRACKING_INELIGIBLE_INTEGRATION", "SUBMISSION_TRACKING_CAMPAIGN_NOT_ACTIVE", "SUBMISSION_TRACKING_MISSING_EXTERNAL_MEDIA_ID", "SUBMISSION_TRACKING_PLATFORM_NOT_SUPPORTED" ## Response 401 fields (application/json): - `error` (string, required) Error code that identifies the type of error. This is a stable identifier that can be used for programmatic error handling. Common codes include: - NOT_FOUND - Resource not found - VALIDATION_ERROR - Input validation failed - PERMISSION_DENIED - User lacks permission for the action - CONFLICT - Request conflicts with current resource state - UNAUTHORIZED - Authentication required - INTERNAL_SERVER_ERROR - Unexpected server error Example: "VALIDATION_ERROR" - `message` (string, required) User-friendly error message that should always be displayed to end users. This message is designed to be clear, actionable, and free of technical details. This field is always present and contains the primary message for end users. Example: "The email address you entered is not valid. Please check the format and try again." - `technicalMessage` (string) Optional technical message for developers. Contains detailed information including IDs, error codes, and technical context. Only included when it differs from the user-friendly message field. When present, developers can use this for debugging while end users should see the message field. Example: "Campaign with ID campaign_123 not found" - `details` (object) Additional error details (optional). May contain structured information about the error, such as validation field errors or additional context. - `requestId` (string) Unique request identifier for tracing. Included in X-Request-ID header and can be used to correlate errors with server logs. Example: "550e8400-e29b-41d4-a716-446655440000" - `timestamp` (string, required) ISO 8601 timestamp when the error occurred Example: "2024-01-01T00:00:00Z" ## Response 403 fields (application/json): - `error` (string, required) Error code that identifies the type of error. This is a stable identifier that can be used for programmatic error handling. Common codes include: - NOT_FOUND - Resource not found - VALIDATION_ERROR - Input validation failed - PERMISSION_DENIED - User lacks permission for the action - CONFLICT - Request conflicts with current resource state - UNAUTHORIZED - Authentication required - INTERNAL_SERVER_ERROR - Unexpected server error Example: "VALIDATION_ERROR" - `message` (string, required) User-friendly error message that should always be displayed to end users. This message is designed to be clear, actionable, and free of technical details. This field is always present and contains the primary message for end users. Example: "The email address you entered is not valid. Please check the format and try again." - `technicalMessage` (string) Optional technical message for developers. Contains detailed information including IDs, error codes, and technical context. Only included when it differs from the user-friendly message field. When present, developers can use this for debugging while end users should see the message field. Example: "Campaign with ID campaign_123 not found" - `details` (object) Additional error details (optional). May contain structured information about the error, such as validation field errors or additional context. - `requestId` (string) Unique request identifier for tracing. Included in X-Request-ID header and can be used to correlate errors with server logs. Example: "550e8400-e29b-41d4-a716-446655440000" - `timestamp` (string, required) ISO 8601 timestamp when the error occurred Example: "2024-01-01T00:00:00Z" ## Response 404 fields (application/json): - `error` (string, required) Error code that identifies the type of error. This is a stable identifier that can be used for programmatic error handling. Common codes include: - NOT_FOUND - Resource not found - VALIDATION_ERROR - Input validation failed - PERMISSION_DENIED - User lacks permission for the action - CONFLICT - Request conflicts with current resource state - UNAUTHORIZED - Authentication required - INTERNAL_SERVER_ERROR - Unexpected server error Example: "VALIDATION_ERROR" - `message` (string, required) User-friendly error message that should always be displayed to end users. This message is designed to be clear, actionable, and free of technical details. This field is always present and contains the primary message for end users. Example: "The email address you entered is not valid. Please check the format and try again." - `technicalMessage` (string) Optional technical message for developers. Contains detailed information including IDs, error codes, and technical context. Only included when it differs from the user-friendly message field. When present, developers can use this for debugging while end users should see the message field. Example: "Campaign with ID campaign_123 not found" - `details` (object) Additional error details (optional). May contain structured information about the error, such as validation field errors or additional context. - `requestId` (string) Unique request identifier for tracing. Included in X-Request-ID header and can be used to correlate errors with server logs. Example: "550e8400-e29b-41d4-a716-446655440000" - `timestamp` (string, required) ISO 8601 timestamp when the error occurred Example: "2024-01-01T00:00:00Z"