Skip to main content

Audit logs

This page describes how Prophecy generates, stores, and shares audit logs for Prophecy deployments. Use this information to decide if you need to enable and export audit logs.

Setting up audit logs requires collaboration with Prophecy. Contact Prophecy to:

  • Enable audit logging in Prophecy-managed storage.
  • Export audit logs on demand.
  • Configure automatic syncing to your own storage.
  • Set a custom retention period for stored logs (by default, logs are stored indefinitely).

Storage location

Prophecy stores audit logs in the same cloud platform as your deployment:

  • For AWS deployments, audit logs are stored in Amazon S3.
  • For Azure deployments, audit logs are stored in Azure Blob Storage.
  • For Google Cloud Platform deployments, audit logs are stored in Google Cloud Storage.

Audit event reference

When audit logs are enabled for your Prophecy deployment, they capture the following information:

  • User interactions with the Prophecy UI
  • GraphQL API calls

The following tables list the audit events that Prophecy logs, organized by entity type.

note

Prophecy uses GraphQL for API operations. Request and response parameters may vary depending on where you call the query.

EntityQueryDescriptionRequest Parameters
FabricfabricDetailQueryGet Fabric Details["id"]
addFabricAdd a Fabric["name", "ownerUid"]
updateOwnedByUpdate Team owing the Fabric["id","targetUid"]
userFabricQueryGet all Fabrics for User["uid"]
ProjectaddProjectAdd a project["name","forkMode","language", "ownerUid", "mainBranchModificationAllowed"]
getDetailsGet Details of a Project["projectId"]
projectList all projects for User["uid"]
teamProjectAvailableAvailable Projects for that Team["uid", "language"]
addProjectDependencyAdd a dependency Project to Current["projectId", "DependencyProjectUid"]
updateProjectDependencyUpdate dependency Project to a new released version["projectId", "DependencyProjectUid", "ReleaseTag"]
removeProjectDependencyRemoved an added dependency["projectId", "DependencyProjectUid"]
projectDependenciesQueryList all project Dependencies["projectId"]
projectReleaseStatusGives Status of last Release for given project["projectID", "statuses"]
projectSyncFromGitStatus of Git sync of project["uid"]
releaseProjectRelease a Project["branch", "message","version","projectID", "CommitHash"]
gitFooterDetails for Git for commit/branchNAme etc["projectID"]
addSubscriberToProjectAdd Subscriber to a Project["uid", "teamId"]
projectBranchesList of available branches for this project["projectId"]
cloneProjectCreated clone of current project["uid", "name", "teamUid", "copyMainBranchReleaseTags"]
PipelineaddPipelineAdd a new Pipeline["name", "branch", "ownerId", "doCheckout"]
tableQueryPipelineLists all pipelines for project["projectId", "sortOrder", "sortColumn"]
tableQueryPipelineLists all pipelines for User["uid", "sortOrder", "sortColumn"]
pipelineDetailsQueryGet Details of Pipeline["Uid"]
clonePipelineCloned a Pipeline["branch", "sourcePipelineId", "targetPipelineName", "ownerUid", "doCheckout"]
addSubgraphWhen Subgraph is added to a Pipeline["mode", "name", "language", "ownerUID"]
addUDFBulkUDFs added to a Project["udfs.name","udfs.description", "projectUID"]
removeUDFBulkUDFs removed form a project["uids"]
getSubgraphGet Subgraph by given Id["uid"]
JobaddJobAdd a Job["name", "branch","fabricUID", "scheduler", "doCheckout", "projectUID"]
updateJobConfigurationJob configurations are updated["emails", "jobUID", "enabled", "onStart", "fabricId", "onFailure", "onSuccess", "clusterMode", "scheduleCron"]
latestJobReleaseByJobIdAndFabricIDGet Jobs Release by Fabric Id["jobUID", "fabricUID"]
jobReleaseByProjectReleaseGets Jobs Released by Project ID["projectReleaseUID"]
jobQueryGeta a Job by gievn Id["uid"]
addJobReleaseAdds a Job released mapping to project Release["jobUID", "fabricUID", "scheduler", "schedulerJobUID", "projectReleaseUID"]
tableQueryJoblist query for Jobs["uid", "sortOrder", "sortColumn"]
DatasetqueryDatasetWhen Datasets are queried from any page["uid", "optionalProjectUID"]
addDatasetAdded a new Dataset["mode", "name", "ownerUID", "fabricUID", "datasetType"]
addMultipleDatasetsAdd Multiple Datasets["names", "ownerUID", "tableNameList", "schemaNameList", "descriptionsList", "schemaAspectList", "databaseNamesList]
TeamaddTeamAdded a new Team["name", "adminUid"]
getUserTeamGet Teams for a User["uid"]
addteamAdminAdd a user as Admin["teamUid", "userUid", "invitationAccepted"]
userList All teams for Users with Members["uid"]
UsergetUserGet User["email"]
tableQueryUserList query for the User["uid", "sortOrder", "sortColumn"]
userAllFabricInfoAspectGet User Details["uid"]
setPassworduser Sets a new Password["uid", "newPassword"]
GitdeleteBranchDeleted a Branch["projectId", "branchName"]
checkoutCheckout a new branch["projectId" , "branchName"]
prCreationRedirectUrlPr Creation button clicked["to", "from", "projectId"]
createPRPr Creation button clicked["to", "from", "toFork", "fromFork":, "projectId"]
cleanCommitCommitted any changes["message", "projectId"]
commitCommit button clicked["branch", "message", "projectId"]
pullOriginpull origin branch["branch", "projectId"]
checkGitConnectionTest Git connection["externalUriArg", "pushAccessCheck", "userGitCredsUID"]
linkSavedCredsToExternalGitLinked Saved Creds to a project["projectUID", "userGitCredsUID"]
unlinkExternalGitUnlink the saved creds["projectUID"]
checkoutWhen USer checks out a new branch["branchName","projectUID"]
branchDivergenceWhen user compares two branches for commit screen["projectId", "branchName", "baseBranchName"]
branchInfoGives details of a particular working branch["projectId", "branchName", "remoteType"]
setPrCreationTemplateWhen user Sets PR creation template["projectId", "customPrTemplate", "prCreationEnabled"}]
getPrCreationTemplateGets PR creation template["projectId"]
deleteUserGitCredsWhen user deleted saved Git creds["uid"]
linkExternalGitLink saved Git creds["projectUID", "externalRepoUri", "userGitCredsUID"]
mergeMasterMerge to master branch["prNumber", "projectId", "entityConflicts", "projectConflicts", "resolvedConflicts"]
TranspilertranspilerImportTranspiler Import started["uid"]
addTranspilerImportImporting files to Prophecy Transpiler["name", "status", "storagePath", "transpilerType"]
GenericremoveEntityWhen any entity is removed["uid", "entityKind"]
updateEntityWhen any entity is updated["uid", "entityKind", "entityFieldName", "entityFieldValue"]

Sync data to S3

If your Prophecy deployment is hosted on AWS, you can sync your Prophecy audit logs to your own Amazon S3 bucket. Follow these steps to configure your S3 bucket and grant Prophecy the required access.

Step 1: Create the S3 bucket

  1. Open the Amazon S3 console and choose Create bucket.

  2. Enter a Bucket name, following the format prophecy-customer-backend-events-foo. Replace foo with an identifier for your organization.

  3. Choose a Region.

    • Prophecy recommends us-east-1 (N. Virginia) for best performance.
    • If you select a different region, contact Prophecy so we can accommodate this preference.
  4. Complete the remaining setup options as needed, then create the bucket.

  5. Set Object Ownership to ACLs disabled (recommended). You can apply this setting during bucket creation or by editing bucket permissions after creation.

Step 2: Configure bucket permissions for Prophecy

  1. In the Amazon S3 console, open your bucket and choose the Permissions tab.
  2. Under Bucket policy, select Edit.
  3. Paste the following policy JSON, replacing the placeholders as described below.
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "DataSyncCreateS3LocationAndTaskAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::133450206866:role/AWSDataSyncS3BucketAccessCustomerBackendEventsRole"
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:AbortMultipartUpload",
"s3:GetObject",
"s3:ListMultipartUploadParts",
"s3:PutObject",
"s3:GetObjectTagging",
"s3:PutObjectTagging",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::prophecy-customer-backend-events-xyz",
"arn:aws:s3:::prophecy-customer-backend-events-xyz/*"
]
},
{
"Sid": "DataSyncCreateS3Location",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::133450206866:user/s3access"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::prophecy-customer-backend-events-xyz"
}
]
}

To use this example JSON:

  • Replace all instances of prophecy-customer-backend-events-xyz with your bucket ARN.

  • The Prophecy IAM user s3access requires the DataSyncCreateS3Location role to create S3 locations in Prophecy’s account.

  • After applying the policy, contact Prophecy and provide:

    • Your bucket ARN
    • The AWS region

Prophecy will complete the configuration and enable syncing for your environment.