{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.TimerTrigger$TimerTriggerCause",
          "shortDescription" : "Started by timer"
        }
      ]
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/dev-collection-v1" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 3,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "68eb9492f73bb0e2b4128c61019b4b16544c0d7f",
            "branch" : [
              {
                "SHA1" : "68eb9492f73bb0e2b4128c61019b4b16544c0d7f",
                "name" : "refs/remotes/origin/dev-collection-v1"
              }
            ]
          },
          "revision" : {
            "SHA1" : "68eb9492f73bb0e2b4128c61019b4b16544c0d7f",
            "branch" : [
              {
                "SHA1" : "68eb9492f73bb0e2b4128c61019b4b16544c0d7f",
                "name" : "refs/remotes/origin/dev-collection-v1"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "68eb9492f73bb0e2b4128c61019b4b16544c0d7f",
        "branch" : [
          {
            "SHA1" : "68eb9492f73bb0e2b4128c61019b4b16544c0d7f",
            "name" : "refs/remotes/origin/dev-collection-v1"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/UstadMobile/Respect.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    {
      "displayPath" : "app-android-debug.apk",
      "fileName" : "app-android-debug.apk",
      "relativePath" : "app-android/build/outputs/apk/debug/app-android-debug.apk"
    },
    {
      "displayPath" : "app-android-release.apk",
      "fileName" : "app-android-release.apk",
      "relativePath" : "app-android/build/outputs/apk/release/app-android-release.apk"
    },
    {
      "displayPath" : "app-android-debug.aab",
      "fileName" : "app-android-debug.aab",
      "relativePath" : "app-android/build/outputs/bundle/debug/app-android-debug.aab"
    },
    {
      "displayPath" : "app-android-release.aab",
      "fileName" : "app-android-release.aab",
      "relativePath" : "app-android/build/outputs/bundle/release/app-android-release.aab"
    },
    {
      "displayPath" : "mapping.txt",
      "fileName" : "mapping.txt",
      "relativePath" : "app-android/build/outputs/mapping/release/mapping.txt"
    },
    {
      "displayPath" : "app-cli-1.0.46a.zip",
      "fileName" : "app-cli-1.0.46a.zip",
      "relativePath" : "app-cli/build/distributions/app-cli-1.0.46a.zip"
    },
    {
      "displayPath" : "app-server-1.0.46a.zip",
      "fileName" : "app-server-1.0.46a.zip",
      "relativePath" : "app-server/build/distributions/app-server-1.0.46a.zip"
    },
    {
      "displayPath" : "app-server-shadow-1.0.46a.zip",
      "fileName" : "app-server-shadow-1.0.46a.zip",
      "relativePath" : "app-server/build/distributions/app-server-shadow-1.0.46a.zip"
    }
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#3",
  "duration" : 152127,
  "estimatedDuration" : 149625,
  "executor" : None,
  "fullDisplayName" : "dev-collection-v1 #3",
  "id" : "3",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 3,
  "queueId" : 66,
  "result" : "SUCCESS",
  "timestamp" : 1790283300257,
  "url" : "https://devserver3.ustadmobile.com/jenkins/job/dev-collection-v1/3/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/10.json",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterOrgGUIDRef.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryEntryAdapter.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/AuthOptionConfig.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserGUIDRef.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Person.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClassGUIDRef.kt",
          "lib-ihttp-core/README.md",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/SchoolDirectoryEntry.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterEnrollment.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRole.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGUIDRef.kt",
          "lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateOpdsPublicationUseCase.kt",
          "lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt",
          "app-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt",
          "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/11.json",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClass.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/util/GenderToString.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGenderEnum.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterResourceGUIDRef.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/AuthOptionConfigTypeEnum.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/respectappmanifest/model/RespectSite.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/AuthenticationOption.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBase.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBaseStatusEnum.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/composites/ClazzListDetails.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/UidNumberMapper.kt",
          "README.md",
          "app-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnumExt.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserProfile.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryAuthOptionEntityDao.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnum.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleTypeEnum.kt",
          "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryAuthOptionEntity.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUser.kt",
          "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserId.kt"
        ],
        "commitId" : "ef2dd76eb0fd8e2c2e9658586434f96cd696a39e",
        "timestamp" : 1790178862000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove obsolete models and add authentication options to SchoolDirectoryEntry.\u000a",
        "date" : "2026-09-23 19:54:22 +0400",
        "id" : "ef2dd76eb0fd8e2c2e9658586434f96cd696a39e",
        "msg" : "Remove obsolete models and add authentication options to SchoolDirectoryEntry.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBaseStatusEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGenderEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRole.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterOrgGUIDRef.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/11.json"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/composites/ClazzListDetails.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClass.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabase.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterGUIDRef.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserId.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/SchoolDirectoryEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/adapters/SchoolDirectoryEntryAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/AuthOptionConfig.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDatabaseMigrations.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/SchoolDirectoryEntryDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/UidNumberMapper.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/util/GenderToString.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterEnrollment.kt"
          },
          {
            "editType" : "edit",
            "file" : "README.md"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/entities/SchoolDirectoryEntryAuthOptionEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterClassGUIDRef.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/AuthOptionConfigTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-ihttp-core/README.md"
          },
          {
            "editType" : "delete",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/respectappmanifest/model/RespectSite.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUser.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserProfile.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateOpdsPublicationUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterBase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-server/src/main/kotlin/world/respect/server/ManagerServerCLI.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/10.json"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterResourceGUIDRef.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleEnumExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/AuthenticationOption.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/schooldirectory/daos/SchoolDirectoryEntryAuthOptionEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterUserGUIDRef.kt"
          },
          {
            "editType" : "delete",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/model/OneRosterRoleTypeEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Person.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiCollectionListingExt.kt",
          "app-android/src/main/kotlin/world/respect/AppKoinModule.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeedlist/OpdsFeedListViewModel.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeededit/OpdsFeedEditViewModel.kt",
          "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeedlist/OpdsFeedListScreen.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/catalog/saveopdsfeed/SaveOpdsFeedUseCase.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt",
          "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityDefinitionExt.kt",
          "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/catalog/getopdsfeedforxapiactivity/GetOpdsFeedForXapiActivityUseCase.kt"
        ],
        "commitId" : "fc464aa02eb3258fe62d1d7668432b98f2025b32",
        "timestamp" : 1790230215000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Implement OPDS collections listing and pinning via xAPI statements\u000a",
        "date" : "2026-09-24 11:40:15 +0530",
        "id" : "fc464aa02eb3258fe62d1d7668432b98f2025b32",
        "msg" : "Implement OPDS collections listing and pinning via xAPI statements",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/ext/XapiActivityDefinitionExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-appui-compose/src/commonMain/kotlin/world/respect/app/view/catalog/opdsfeedlist/OpdsFeedListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/catalog/saveopdsfeed/SaveOpdsFeedUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/xapi/XapiCollectionListingExt.kt"
          },
          {
            "editType" : "add",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/domain/catalog/getopdsfeedforxapiactivity/GetOpdsFeedForXapiActivityUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-xapi-core/src/commonMain/kotlin/world/respect/lib/xapi/OpenEelXapiConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "app-android/src/main/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeedlist/OpdsFeedListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/catalog/opdsfeededit/OpdsFeedEditViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_bookmarks_collections_to_school_test.yaml",
          ".maestro/flows/subflows/admin_add_class.yaml",
          ".maestro/flows/002_001_browse_lessons_test.yaml"
        ],
        "commitId" : "e56b2f85259fd357ea35c2196cee9ad09b4b6a29",
        "timestamp" : 1790243920000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add end to end test for collections\u000a",
        "date" : "2026-09-24 13:58:40 +0400",
        "id" : "e56b2f85259fd357ea35c2196cee9ad09b4b6a29",
        "msg" : "Add end to end test for collections",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/002_001_browse_lessons_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/002_001_user_add_apps_bookmarks_collections_to_school_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_001_user_add_apps_bookmarks_collections_to_school_test.yaml"
        ],
        "commitId" : "68eb9492f73bb0e2b4128c61019b4b16544c0d7f",
        "timestamp" : 1790255845000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Add end to end test for collections\u000a",
        "date" : "2026-09-24 17:17:25 +0400",
        "id" : "68eb9492f73bb0e2b4128c61019b4b16544c0d7f",
        "msg" : "Add end to end test for collections",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_001_user_add_apps_bookmarks_collections_to_school_test.yaml"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
      "fullName" : "Mike Dawson"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
      "fullName" : "mandvi.verma"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
      "fullName" : "Pooja Ravi"
    }
  ]
}