systemview 1.18.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- [{"projectCode":"buAPI","serviceId":"Profiles","system":{"connectionData":{"modules":[{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Badges","route":"/bu/api/profiles/Badges","name":"Badges","methods":[{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"getDefinitions"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Locations","route":"/bu/api/profiles/Locations","name":"Locations","methods":[{"method":"post","fn":"save"},{"method":"post","fn":"search"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Users","route":"/bu/api/profiles/Users","name":"Users","methods":[{"method":"post","fn":"signUp"},{"method":"post","fn":"signIn"},{"method":"post","fn":"signOut"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"edit"},{"method":"post","fn":"quickSignUp"},{"method":"post","fn":"exists"},{"method":"post","fn":"isRecognized"},{"method":"post","fn":"registerSeason"},{"method":"post","fn":"setBadges"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Teams","route":"/bu/api/profiles/Teams","name":"Teams","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"edit"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"addMember"},{"method":"post","fn":"removeMember"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"updateStatus"},{"method":"post","fn":"registerSeason"},{"method":"post","fn":"setScope"},{"method":"post","fn":"removeScope"},{"method":"post","fn":"startDraft"},{"method":"post","fn":"closeDraft"},{"method":"post","fn":"endDraft"},{"method":"post","fn":"joinDraft"},{"method":"post","fn":"removeFromDraft"},{"method":"post","fn":"acceptDraft"},{"method":"post","fn":"rejectDraft"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Tournaments","route":"/bu/api/profiles/Tournaments","name":"Tournaments","methods":[{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"edit"},{"method":"post","fn":"add"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"addMember"},{"method":"post","fn":"addTeam"},{"method":"post","fn":"removeMember"},{"method":"post","fn":"removeTeam"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"updateStatus"},{"method":"post","fn":"registerSeason"},{"method":"post","fn":"startDraft"},{"method":"post","fn":"closeDraft"},{"method":"post","fn":"endDraft"},{"method":"post","fn":"joinDraft"},{"method":"post","fn":"removeFromDraft"},{"method":"post","fn":"acceptDraft"},{"method":"post","fn":"rejectDraft"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Groups","route":"/bu/api/profiles/Groups","name":"Groups","methods":[{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"edit"},{"method":"post","fn":"add"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"addMember"},{"method":"post","fn":"removeMember"},{"method":"post","fn":"addTeam"},{"method":"post","fn":"removeTeam"},{"method":"post","fn":"addTournament"},{"method":"post","fn":"removeTournament"},{"method":"post","fn":"updateStatus"},{"method":"post","fn":"registerSeason"},{"method":"post","fn":"startDraft"},{"method":"post","fn":"closeDraft"},{"method":"post","fn":"endDraft"},{"method":"post","fn":"joinDraft"},{"method":"post","fn":"removeFromDraft"},{"method":"post","fn":"acceptDraft"},{"method":"post","fn":"rejectDraft"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Events","route":"/bu/api/profiles/Events","name":"Events","methods":[{"method":"post","fn":"startDraft"},{"method":"post","fn":"closeDraft"},{"method":"post","fn":"endDraft"},{"method":"post","fn":"joinDraft"},{"method":"post","fn":"removeFromDraft"},{"method":"post","fn":"acceptDraft"},{"method":"post","fn":"rejectDraft"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"edit"},{"method":"post","fn":"add"},{"method":"post","fn":"addMember"},{"method":"post","fn":"removeMember"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"addTeam"},{"method":"post","fn":"removeTeam"},{"method":"post","fn":"addTournament"},{"method":"post","fn":"removeTournament"},{"method":"post","fn":"addGroup"},{"method":"post","fn":"removeGroup"},{"method":"post","fn":"registerSeason"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Follows","route":"/bu/api/profiles/Follows","name":"Follows","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"addMulti"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"delete"},{"method":"post","fn":"deleteMulti"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Solicitations","route":"/bu/api/profiles/Solicitations","name":"Solicitations","methods":[{"method":"post","fn":"send"},{"method":"post","fn":"get"},{"method":"post","fn":"cancel"},{"method":"post","fn":"reject"},{"method":"post","fn":"accept"},{"method":"post","fn":"resend"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Aggregator","route":"/bu/api/profiles/Aggregator","name":"Aggregator","methods":[{"method":"post","fn":"get"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Storage","route":"/bu/api/profiles/Storage","name":"Storage","methods":[{"method":"post","fn":"save"},{"method":"post","fn":"delete"},{"method":"post","fn":"list"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Plugin","route":"/bu/api/profiles/Plugin","name":"Plugin","methods":[{"method":"post","fn":"clearMockUsers"},{"method":"post","fn":"clearMockTournaments"},{"method":"post","fn":"clearMockTeams"},{"method":"post","fn":"clearMockGroups"},{"method":"post","fn":"clearMockEvents"},{"method":"post","fn":"clearMockSolicitations"},{"method":"post","fn":"clearMockFollows"},{"method":"post","fn":"clearMockBadges"},{"method":"post","fn":"clearMockLocations"},{"method":"post","fn":"patchLocations"},{"method":"post","fn":"addMockLocationEntries"},{"method":"post","fn":"createMockUsers"},{"method":"post","fn":"createMockBadge"},{"method":"post","fn":"createReadyTeam"},{"method":"post","fn":"createReadyTournament"},{"method":"post","fn":"createMultipleTeams"},{"method":"post","fn":"clearStorage"},{"method":"post","fn":"clearExpiredTeams"},{"method":"post","fn":"saveDoc"},{"method":"post","fn":"getDoc"},{"method":"post","fn":"getTests"},{"method":"post","fn":"saveTest"},{"method":"post","fn":"deleteTest"},{"method":"post","fn":"getSpecList"},{"method":"post","fn":"getConnection"}]}],"host":"127.0.0.1","route":"/bu/api/profiles","port":"4100","serviceUrl":"http://127.0.0.1:4100/bu/api/profiles","socketPath":"/bu/api/profiles/socket.io","namespace":"ws://127.0.0.1:4100/bu/api/profiles","SystemLynxService":true},"modules":[{"name":"Badges","module":{"db":{"itemName":"Badge","collectionName":"Badges"}}},{"name":"Locations","module":{"db":{"itemName":"Location","collectionName":"Locations"}}},{"name":"Users","module":{"db":{"itemName":"User","collectionName":"Users"}}},{"name":"Teams","module":{"db":{"itemName":"Team","collectionName":"Teams"}}},{"name":"Tournaments","module":{"db":{"itemName":"Tournament","collectionName":"Tournaments"}}},{"name":"Groups","module":{"db":{"itemName":"Group","collectionName":"Groups"}}},{"name":"Events","module":{"db":{"itemName":"Event","collectionName":"Events"}}},{"name":"Follows","module":{"db":{"itemName":"Follow","collectionName":"Follows"}}},{"name":"Solicitations","module":{"db":{"itemName":"Solicitation","collectionName":"Solicitations"}}},{"name":"Aggregator","module":{"db":{},"COLLECTIONS":["Users","Teams","Tournaments","Groups","Events","Follows","Solicitations","Locations"]}},{"name":"Storage","module":{"STORAGE":"/Users/odionedwards/buAPI/Profiles/files","STORAGE_URL":"http://127.0.0.1:4100/storage"}},{"name":"Plugin","module":{}}],"routing":{"route":"bu/api/profiles","port":"4100","host":"127.0.0.1","protocol":"http","ssl":null},"services":[{"name":"SystemView","url":"http://localhost:3000/systemview/api","onLoad":null,"client":{"SystemView":{}}}]},"specList":{"docs":["Badges.md","Events.md","Follows.md","Groups.md","Locations.md","Profiles.md","Solicitations.md","Teams.md","Tournaments.md","Users.md","Users.signIn.md","Users.signUp.md"],"tests":["Aggregator.get.json","Badges.get.json","Events.add.json","Events.addAdmin.json","Events.addGroup.json","Events.addMember.json","Events.addTeam.json","Events.addTournament.json","Events.edit.json","Events.get.json","Events.removeAdmin.json","Events.removeGroup.json","Events.removeMember.json","Events.removeTeam.json","Events.removeTournament.json","Follows.add.json","Follows.delete.json","Follows.get.json","Follows.getPage.json","Groups.add.json","Groups.addAdmin.json","Groups.addMember.json","Groups.addTeam.json","Groups.addTournament.json","Groups.edit.json","Groups.get.json","Groups.removeAdmin.json","Groups.removeMember.json","Groups.removeTeam.json","Groups.removeTournament.json","Groups.updateStatus.json","Locations.get.json","Locations.save.json","Locations.search.json","Solicitations.accept.json","Solicitations.cancel.json","Solicitations.get.json","Solicitations.reject.json","Solicitations.resend.json","Solicitations.send.json","Storage.delete.json","Storage.list.json","Storage.save.json","Teams.acceptDraft.json","Teams.add.json","Teams.addAdmin.json","Teams.addMember.json","Teams.closeDraft.json","Teams.edit.json","Teams.endDraft.json","Teams.get.json","Teams.joinDraft.json","Teams.rejectDraft.json","Teams.removeAdmin.json","Teams.removeFromDraft.json","Teams.removeMember.json","Teams.removeScope.json","Teams.setScope.json","Teams.startDraft.json","Teams.updateStatus.json","Tournaments.add.json","Tournaments.addAdmin.json","Tournaments.addMember.json","Tournaments.addTeam.json","Tournaments.edit.json","Tournaments.get.json","Tournaments.getPage.json","Tournaments.removeAdmin.json","Tournaments.removeMember.json","Tournaments.removeTeam.json","Tournaments.startDraft.json","Tournaments.updateStatus.json","Users.edit.json","Users.exists.json","Users.get.json","Users.getPage.json","Users.isRecognized.json","Users.quickSignUp.json","Users.setBadges.json","Users.signIn.json","Users.signOut.json","Users.signUp.json"]}},{"projectCode":"buAPI","serviceId":"Networking","system":{"connectionData":{"modules":[{"namespace":"ws://127.0.0.1:5100/bu/api/networking/Chats","route":"/bu/api/networking/Chats","name":"Chats","methods":[{"method":"post","fn":"start"},{"method":"post","fn":"send"},{"method":"post","fn":"get"},{"method":"post","fn":"getMessages"},{"method":"post","fn":"undoMessage"},{"method":"post","fn":"addMember"},{"method":"post","fn":"removeMember"},{"method":"post","fn":"addSeenBy"},{"method":"post","fn":"getAll"}]},{"namespace":"ws://127.0.0.1:5100/bu/api/networking/Notifications","route":"/bu/api/networking/Notifications","name":"Notifications","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"updateStatus"}]},{"namespace":"ws://127.0.0.1:5100/bu/api/networking/Storage","route":"/bu/api/networking/Storage","name":"Storage","methods":[{"method":"post","fn":"save"},{"method":"post","fn":"delete"},{"method":"post","fn":"list"}]},{"namespace":"ws://127.0.0.1:5100/bu/api/networking/Plugin","route":"/bu/api/networking/Plugin","name":"Plugin","methods":[{"method":"post","fn":"clearMockChats"},{"method":"post","fn":"clearMockNotifications"},{"method":"post","fn":"clearStorage"},{"method":"post","fn":"saveDoc"},{"method":"post","fn":"getDoc"},{"method":"post","fn":"getTests"},{"method":"post","fn":"saveTest"},{"method":"post","fn":"deleteTest"},{"method":"post","fn":"getSpecList"},{"method":"post","fn":"getConnection"}]}],"host":"127.0.0.1","route":"/bu/api/networking","port":"5100","serviceUrl":"http://127.0.0.1:5100/bu/api/networking","socketPath":"/bu/api/networking/socket.io","namespace":"ws://127.0.0.1:5100/bu/api/networking","SystemLynxService":true},"modules":[{"name":"Chats","module":{"db":{"itemName":"Chat","collectionName":"Chats"}}},{"name":"Notifications","module":{"db":{"itemName":"Notification","collectionName":"Notifications"}}},{"name":"Storage","module":{"STORAGE":"/Users/odionedwards/buAPI/Networking/files","STORAGE_URL":"http://127.0.0.1:5100/storage"}},{"name":"Plugin","module":{}}],"routing":{"route":"bu/api/networking","port":"5100","host":"127.0.0.1","protocol":"http","ssl":null,"staticRouting":true},"services":[{"name":"Profiles","url":"http://127.0.0.1:4100/bu/api/profiles","onLoad":null,"client":{"Badges":{},"Locations":{},"Users":{},"Teams":{},"Tournaments":{},"Groups":{},"Events":{},"Follows":{},"Solicitations":{},"Aggregator":{},"Storage":{},"Plugin":{}}},{"name":"SystemView","url":"http://localhost:3000/systemview/api","onLoad":null,"client":{"SystemView":{}}}]},"specList":{"docs":["Chats.md","Networking.md","Notifications.md","Shares.md"],"tests":["Chats.addMember.json","Chats.addSeenBy.json","Chats.get.json","Chats.getAll.json","Chats.getMessages.json","Chats.removeMember.json","Chats.send.json","Chats.start.json","Chats.undoMessage.json","Notifications.add.json","Notifications.get.json","Notifications.updateStatus.json"]}},{"projectCode":"buAPI","serviceId":"Basketball","system":{"connectionData":{"modules":[{"namespace":"ws://127.0.0.1:4900/bu/api/basketball/Games","route":"/bu/api/basketball/Games","name":"Games","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"editGameDetails"},{"method":"post","fn":"updateTeam"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"addPlay"},{"method":"post","fn":"editPlay"},{"method":"post","fn":"undoPlay"},{"method":"post","fn":"insertPlay"},{"method":"post","fn":"endReview"},{"method":"post","fn":"acceptCallout"},{"method":"post","fn":"rejectCallout"},{"method":"post","fn":"setAdmins"}]},{"namespace":"ws://127.0.0.1:4900/bu/api/basketball/Stats","route":"/bu/api/basketball/Stats","name":"Stats","methods":[{"method":"post","fn":"get"},{"method":"post","fn":"getPage"}]},{"namespace":"ws://127.0.0.1:4900/bu/api/basketball/Seasons","route":"/bu/api/basketball/Seasons","name":"Seasons","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"edit"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"addRound"},{"method":"post","fn":"editRound"},{"method":"post","fn":"removeRound"},{"method":"post","fn":"addTeam"},{"method":"post","fn":"removeTeam"},{"method":"post","fn":"editTeam"},{"method":"post","fn":"acceptCallout"},{"method":"post","fn":"rejectCallout"},{"method":"post","fn":"addMatch"},{"method":"post","fn":"editMatch"},{"method":"post","fn":"cancel"},{"method":"post","fn":"removeMatch"}]},{"namespace":"ws://127.0.0.1:4900/bu/api/basketball/Aggregator","route":"/bu/api/basketball/Aggregator","name":"Aggregator","methods":[{"method":"post","fn":"get"}]},{"namespace":"ws://127.0.0.1:4900/bu/api/basketball/Storage","route":"/bu/api/basketball/Storage","name":"Storage","methods":[{"method":"post","fn":"save"},{"method":"post","fn":"delete"},{"method":"post","fn":"list"}]},{"namespace":"ws://127.0.0.1:4900/bu/api/basketball/Plugin","route":"/bu/api/basketball/Plugin","name":"Plugin","methods":[{"method":"post","fn":"clearMockCourts"},{"method":"post","fn":"clearMockGames"},{"method":"post","fn":"clearMockSeasons"},{"method":"post","fn":"clearMockLocations"},{"method":"post","fn":"readyGame"},{"method":"post","fn":"clearStats"},{"method":"post","fn":"getMockPlays"},{"method":"post","fn":"wait"},{"method":"post","fn":"readySeason"},{"method":"post","fn":"seasonsTest1"},{"method":"post","fn":"seasonsTest2"},{"method":"post","fn":"seasonsTest3"},{"method":"post","fn":"seasonsTest4"},{"method":"post","fn":"seasonsTest5"},{"method":"post","fn":"playOutMockRound"},{"method":"post","fn":"seedLocations"},{"method":"post","fn":"clearStorage"},{"method":"post","fn":"saveDoc"},{"method":"post","fn":"getDoc"},{"method":"post","fn":"getTests"},{"method":"post","fn":"saveTest"},{"method":"post","fn":"deleteTest"},{"method":"post","fn":"getSpecList"},{"method":"post","fn":"getConnection"}]}],"host":"127.0.0.1","route":"/bu/api/basketball","port":"4900","serviceUrl":"http://127.0.0.1:4900/bu/api/basketball","socketPath":"/bu/api/basketball/socket.io","namespace":"ws://127.0.0.1:4900/bu/api/basketball","SystemLynxService":true},"modules":[{"name":"Games","module":{"db":{"itemName":"Game","collectionName":"Games"}}},{"name":"Stats","module":{}},{"name":"Seasons","module":{"db":{"itemName":"Season","collectionName":"Seasons"}}},{"name":"Aggregator","module":{"db":{},"COLLECTIONS":["Events","Games","Seasons","PlayerOverallPerformance","PlayerSeasonalPerformance","PlayerPerGamePerformance","TeamOverallPerformance","TeamSeasonalPerformance","TeamPerGamePerformance","Locations"]}},{"name":"Storage","module":{"STORAGE":"/Users/odionedwards/buAPI/Basketball/files","STORAGE_URL":"http://127.0.0.1:4900/storage"}},{"name":"Plugin","module":{}}],"routing":{"route":"bu/api/basketball","port":"4900","host":"127.0.0.1","protocol":"http","ssl":null,"staticRouting":true},"services":[{"name":"Profiles","url":"http://127.0.0.1:4100/bu/api/profiles","onLoad":null,"client":{"Badges":{},"Locations":{},"Users":{},"Teams":{},"Tournaments":{},"Groups":{},"Events":{},"Follows":{},"Solicitations":{},"Aggregator":{},"Storage":{},"Plugin":{}}},{"name":"SystemView","url":"http://localhost:3000/systemview/api","onLoad":null,"client":{"SystemView":{}}}]},"specList":{"docs":["Basketball.md","Games.md","Seasons.get.md","Seasons.md","Stats.md"],"tests":["Aggregator.get.json","Games.acceptCallout.json","Games.add.json","Games.addAdmin.json","Games.addPlay.json","Games.editGameDetails.json","Games.editPlay.json","Games.endReview.json","Games.get.json","Games.getPage.json","Games.insertPlay.json","Games.rejectCallout.json","Games.removeAdmin.json","Games.setAdmins.json","Games.undoPlay.json","Games.updateTeam.json","Plugin.getMockPlays.json","Plugin.seasonsTest1.json","Plugin.seasonsTest2.json","Plugin.seasonsTest3.json","Plugin.seasonsTest4.json","Plugin.seasonsTest5.json","Seasons.acceptCallout.json","Seasons.add.json","Seasons.addAdmin.json","Seasons.addMatch.json","Seasons.addRound.json","Seasons.addTeam.json","Seasons.cancel.json","Seasons.edit.json","Seasons.editMatch.json","Seasons.editRound.json","Seasons.editTeam.json","Seasons.get.json","Seasons.getPage.json","Seasons.rejectCallout.json","Seasons.removeAdmin.json","Seasons.removeMatch.json","Seasons.removeRound.json","Seasons.removeTeam.json","Stats.get.json","Stats.getPage.json"]}},{"projectCode":"buAPI","serviceId":"Media","system":{"connectionData":{"modules":[{"namespace":"ws://127.0.0.1:4000/bu/api/media/Broadcasts","route":"/bu/api/media/Broadcasts","name":"Broadcasts","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"getRtpCapabilities"},{"method":"post","fn":"getSenderTransportData"},{"method":"post","fn":"connectTransport"},{"method":"post","fn":"createSceneProducer"},{"method":"post","fn":"getReceiverTransportData"},{"method":"post","fn":"createSceneConsumers"},{"method":"post","fn":"resumeConsumer"},{"method":"post","fn":"switchScenes"},{"method":"post","fn":"startBroadcast"},{"method":"post","fn":"endBroadcast"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"setAdmins"},{"method":"post","fn":"addContributor"},{"method":"post","fn":"removeContributor"},{"method":"post","fn":"setContributors"}]},{"namespace":"ws://127.0.0.1:4000/bu/api/media/Posts","route":"/bu/api/media/Posts","name":"Posts","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"delete"},{"method":"post","fn":"edit"}]},{"namespace":"ws://127.0.0.1:4000/bu/api/media/Reactions","route":"/bu/api/media/Reactions","name":"Reactions","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"getCount"},{"method":"post","fn":"delete"}]},{"namespace":"ws://127.0.0.1:4000/bu/api/media/Storage","route":"/bu/api/media/Storage","name":"Storage","methods":[{"method":"post","fn":"save"},{"method":"post","fn":"delete"},{"method":"post","fn":"list"}]},{"namespace":"ws://127.0.0.1:4000/bu/api/media/Plugin","route":"/bu/api/media/Plugin","name":"Plugin","methods":[{"method":"post","fn":"clearMockBroadcasts"},{"method":"post","fn":"clearMockReactions"},{"method":"post","fn":"clearMockPost"},{"method":"post","fn":"clearStorage"},{"method":"post","fn":"saveDoc"},{"method":"post","fn":"getDoc"},{"method":"post","fn":"getTests"},{"method":"post","fn":"saveTest"},{"method":"post","fn":"deleteTest"},{"method":"post","fn":"getSpecList"},{"method":"post","fn":"getConnection"}]}],"host":"127.0.0.1","route":"/bu/api/media","port":"4000","serviceUrl":"http://127.0.0.1:4000/bu/api/media","socketPath":"/bu/api/media/socket.io","namespace":"ws://127.0.0.1:4000/bu/api/media","SystemLynxService":true},"modules":[{"name":"Broadcasts","module":{"db":{"itemName":"Broadcast","collectionName":"Broadcasts"},"router":{"_events":{},"_eventsCount":2,"_maxListeners":null}}},{"name":"Posts","module":{"db":{"itemName":"Post","collectionName":"Posts"}}},{"name":"Reactions","module":{"db":{"itemName":"Reaction","collectionName":"Reactions"}}},{"name":"Storage","module":{"STORAGE":"/Users/odionedwards/buAPI/Media/files","STORAGE_URL":"http://127.0.0.1:4000/storage"}},{"name":"Plugin","module":{}}],"routing":{"route":"bu/api/media","port":"4000","host":"127.0.0.1","protocol":"http","ssl":null,"staticRouting":true},"services":[{"name":"Profiles","url":"http://127.0.0.1:4100/bu/api/profiles","onLoad":null,"client":{"Badges":{},"Locations":{},"Users":{},"Teams":{},"Tournaments":{},"Groups":{},"Events":{},"Follows":{},"Solicitations":{},"Aggregator":{},"Storage":{},"Plugin":{}}},{"name":"Basketball","url":"http://127.0.0.1:4900/bu/api/basketball","onLoad":null,"client":{"Games":{},"Stats":{},"Seasons":{},"Aggregator":{},"Storage":{},"Plugin":{}}},{"name":"SystemView","url":"http://localhost:3000/systemview/api","onLoad":null,"client":{"SystemView":{}}}]},"specList":{"docs":["Broadcasts.md","Media.md","Posts-contract.md","Posts.md","Reactions.md","Storage.md"],"tests":["Broadcasts.add.json","Broadcasts.addAdmin.json","Broadcasts.addContributor.json","Broadcasts.get.json","Broadcasts.getPage.json","Broadcasts.removeAdmin.json","Broadcasts.removeContributor.json","Broadcasts.setAdmins.json","Broadcasts.setContributors.json","Posts.add.json","Posts.delete.json","Posts.edit.json","Posts.get.json","Posts.getPage.json","Reactions.add.json","Reactions.delete.json","Reactions.get.json","Reactions.getCount.json","Reactions.getPage.json"]}}]
1
+ [{"projectCode":"buAPI","serviceId":"Profiles","system":{"connectionData":{"modules":[{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Badges","route":"/bu/api/profiles/Badges","name":"Badges","methods":[{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"getDefinitions"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Locations","route":"/bu/api/profiles/Locations","name":"Locations","methods":[{"method":"post","fn":"save"},{"method":"post","fn":"search"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Users","route":"/bu/api/profiles/Users","name":"Users","methods":[{"method":"post","fn":"signUp"},{"method":"post","fn":"signIn"},{"method":"post","fn":"signOut"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"edit"},{"method":"post","fn":"quickSignUp"},{"method":"post","fn":"exists"},{"method":"post","fn":"isRecognized"},{"method":"post","fn":"registerSeason"},{"method":"post","fn":"setBadges"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Teams","route":"/bu/api/profiles/Teams","name":"Teams","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"edit"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"addMember"},{"method":"post","fn":"removeMember"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"updateStatus"},{"method":"post","fn":"registerSeason"},{"method":"post","fn":"setScope"},{"method":"post","fn":"removeScope"},{"method":"post","fn":"startDraft"},{"method":"post","fn":"closeDraft"},{"method":"post","fn":"endDraft"},{"method":"post","fn":"joinDraft"},{"method":"post","fn":"removeFromDraft"},{"method":"post","fn":"acceptDraft"},{"method":"post","fn":"rejectDraft"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Tournaments","route":"/bu/api/profiles/Tournaments","name":"Tournaments","methods":[{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"edit"},{"method":"post","fn":"add"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"addMember"},{"method":"post","fn":"addTeam"},{"method":"post","fn":"removeMember"},{"method":"post","fn":"removeTeam"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"updateStatus"},{"method":"post","fn":"registerSeason"},{"method":"post","fn":"startDraft"},{"method":"post","fn":"closeDraft"},{"method":"post","fn":"endDraft"},{"method":"post","fn":"joinDraft"},{"method":"post","fn":"removeFromDraft"},{"method":"post","fn":"acceptDraft"},{"method":"post","fn":"rejectDraft"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Groups","route":"/bu/api/profiles/Groups","name":"Groups","methods":[{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"edit"},{"method":"post","fn":"add"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"addMember"},{"method":"post","fn":"removeMember"},{"method":"post","fn":"addTeam"},{"method":"post","fn":"removeTeam"},{"method":"post","fn":"addTournament"},{"method":"post","fn":"removeTournament"},{"method":"post","fn":"updateStatus"},{"method":"post","fn":"registerSeason"},{"method":"post","fn":"startDraft"},{"method":"post","fn":"closeDraft"},{"method":"post","fn":"endDraft"},{"method":"post","fn":"joinDraft"},{"method":"post","fn":"removeFromDraft"},{"method":"post","fn":"acceptDraft"},{"method":"post","fn":"rejectDraft"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Events","route":"/bu/api/profiles/Events","name":"Events","methods":[{"method":"post","fn":"startDraft"},{"method":"post","fn":"closeDraft"},{"method":"post","fn":"endDraft"},{"method":"post","fn":"joinDraft"},{"method":"post","fn":"removeFromDraft"},{"method":"post","fn":"acceptDraft"},{"method":"post","fn":"rejectDraft"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"edit"},{"method":"post","fn":"add"},{"method":"post","fn":"addMember"},{"method":"post","fn":"removeMember"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"addTeam"},{"method":"post","fn":"removeTeam"},{"method":"post","fn":"addTournament"},{"method":"post","fn":"removeTournament"},{"method":"post","fn":"addGroup"},{"method":"post","fn":"removeGroup"},{"method":"post","fn":"registerSeason"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Follows","route":"/bu/api/profiles/Follows","name":"Follows","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"addMulti"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"delete"},{"method":"post","fn":"deleteMulti"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Solicitations","route":"/bu/api/profiles/Solicitations","name":"Solicitations","methods":[{"method":"post","fn":"send"},{"method":"post","fn":"get"},{"method":"post","fn":"cancel"},{"method":"post","fn":"reject"},{"method":"post","fn":"accept"},{"method":"post","fn":"resend"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Aggregator","route":"/bu/api/profiles/Aggregator","name":"Aggregator","methods":[{"method":"post","fn":"get"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Storage","route":"/bu/api/profiles/Storage","name":"Storage","methods":[{"method":"post","fn":"save"},{"method":"post","fn":"delete"},{"method":"post","fn":"list"}]},{"namespace":"ws://127.0.0.1:4100/bu/api/profiles/Plugin","route":"/bu/api/profiles/Plugin","name":"Plugin","methods":[{"method":"post","fn":"clearMockUsers"},{"method":"post","fn":"clearMockTournaments"},{"method":"post","fn":"clearMockTeams"},{"method":"post","fn":"clearMockGroups"},{"method":"post","fn":"clearMockEvents"},{"method":"post","fn":"clearMockSolicitations"},{"method":"post","fn":"clearMockFollows"},{"method":"post","fn":"clearMockBadges"},{"method":"post","fn":"clearMockLocations"},{"method":"post","fn":"patchLocations"},{"method":"post","fn":"addMockLocationEntries"},{"method":"post","fn":"createMockUsers"},{"method":"post","fn":"createMockBadge"},{"method":"post","fn":"createReadyTeam"},{"method":"post","fn":"createReadyTournament"},{"method":"post","fn":"createMultipleTeams"},{"method":"post","fn":"clearStorage"},{"method":"post","fn":"clearExpiredTeams"},{"method":"post","fn":"saveDoc"},{"method":"post","fn":"getDoc"},{"method":"post","fn":"getTests"},{"method":"post","fn":"saveTest"},{"method":"post","fn":"deleteTest"},{"method":"post","fn":"getSpecList"},{"method":"post","fn":"getConnection"}]}],"host":"127.0.0.1","route":"/bu/api/profiles","port":"4100","serviceUrl":"http://127.0.0.1:4100/bu/api/profiles","socketPath":"/bu/api/profiles/socket.io","namespace":"ws://127.0.0.1:4100/bu/api/profiles","SystemLynxService":true},"modules":[{"name":"Badges","module":{"db":{"itemName":"Badge","collectionName":"Badges"}}},{"name":"Locations","module":{"db":{"itemName":"Location","collectionName":"Locations"}}},{"name":"Users","module":{"db":{"itemName":"User","collectionName":"Users"}}},{"name":"Teams","module":{"db":{"itemName":"Team","collectionName":"Teams"}}},{"name":"Tournaments","module":{"db":{"itemName":"Tournament","collectionName":"Tournaments"}}},{"name":"Groups","module":{"db":{"itemName":"Group","collectionName":"Groups"}}},{"name":"Events","module":{"db":{"itemName":"Event","collectionName":"Events"}}},{"name":"Follows","module":{"db":{"itemName":"Follow","collectionName":"Follows"}}},{"name":"Solicitations","module":{"db":{"itemName":"Solicitation","collectionName":"Solicitations"}}},{"name":"Aggregator","module":{"db":{},"COLLECTIONS":["Users","Teams","Tournaments","Groups","Events","Follows","Solicitations","Locations"]}},{"name":"Storage","module":{"STORAGE":"/Users/odionedwards/buAPI/Profiles/files","STORAGE_URL":"http://127.0.0.1:4100/storage"}},{"name":"Plugin","module":{}}],"routing":{"route":"bu/api/profiles","port":"4100","host":"127.0.0.1","protocol":"http","ssl":null},"services":[{"name":"SystemView","url":"http://localhost:3000/systemview/api","onLoad":null,"client":{"SystemView":{}}}]},"specList":{"docs":["Badges.md","Events.md","Follows.md","Groups.md","Locations.md","Profiles.md","Solicitations.md","Teams.md","Tournaments.md","Users.md","Users.signIn.md","Users.signUp.md"],"tests":["Aggregator.get.json","Badges.get.json","Events.add.json","Events.addAdmin.json","Events.addGroup.json","Events.addMember.json","Events.addTeam.json","Events.addTournament.json","Events.edit.json","Events.get.json","Events.removeAdmin.json","Events.removeGroup.json","Events.removeMember.json","Events.removeTeam.json","Events.removeTournament.json","Follows.add.json","Follows.delete.json","Follows.get.json","Follows.getPage.json","Groups.add.json","Groups.addAdmin.json","Groups.addMember.json","Groups.addTeam.json","Groups.addTournament.json","Groups.edit.json","Groups.get.json","Groups.removeAdmin.json","Groups.removeMember.json","Groups.removeTeam.json","Groups.removeTournament.json","Groups.updateStatus.json","Locations.get.json","Locations.save.json","Locations.search.json","Solicitations.accept.json","Solicitations.cancel.json","Solicitations.get.json","Solicitations.reject.json","Solicitations.resend.json","Solicitations.send.json","Storage.delete.json","Storage.list.json","Storage.save.json","Teams.acceptDraft.json","Teams.add.json","Teams.addAdmin.json","Teams.addMember.json","Teams.closeDraft.json","Teams.edit.json","Teams.endDraft.json","Teams.get.json","Teams.joinDraft.json","Teams.rejectDraft.json","Teams.removeAdmin.json","Teams.removeFromDraft.json","Teams.removeMember.json","Teams.removeScope.json","Teams.setScope.json","Teams.startDraft.json","Teams.updateStatus.json","Tournaments.add.json","Tournaments.addAdmin.json","Tournaments.addMember.json","Tournaments.addTeam.json","Tournaments.edit.json","Tournaments.get.json","Tournaments.getPage.json","Tournaments.removeAdmin.json","Tournaments.removeMember.json","Tournaments.removeTeam.json","Tournaments.startDraft.json","Tournaments.updateStatus.json","Users.edit.json","Users.exists.json","Users.get.json","Users.getPage.json","Users.isRecognized.json","Users.quickSignUp.json","Users.setBadges.json","Users.signIn.json","Users.signOut.json","Users.signUp.json"]}},{"projectCode":"buAPI","serviceId":"Networking","system":{"connectionData":{"modules":[{"namespace":"ws://127.0.0.1:5100/bu/api/networking/Chats","route":"/bu/api/networking/Chats","name":"Chats","methods":[{"method":"post","fn":"start"},{"method":"post","fn":"send"},{"method":"post","fn":"get"},{"method":"post","fn":"getMessages"},{"method":"post","fn":"undoMessage"},{"method":"post","fn":"addMember"},{"method":"post","fn":"removeMember"},{"method":"post","fn":"addSeenBy"},{"method":"post","fn":"getAll"}]},{"namespace":"ws://127.0.0.1:5100/bu/api/networking/Notifications","route":"/bu/api/networking/Notifications","name":"Notifications","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"updateStatus"}]},{"namespace":"ws://127.0.0.1:5100/bu/api/networking/Storage","route":"/bu/api/networking/Storage","name":"Storage","methods":[{"method":"post","fn":"save"},{"method":"post","fn":"delete"},{"method":"post","fn":"list"}]},{"namespace":"ws://127.0.0.1:5100/bu/api/networking/Plugin","route":"/bu/api/networking/Plugin","name":"Plugin","methods":[{"method":"post","fn":"clearMockChats"},{"method":"post","fn":"clearMockNotifications"},{"method":"post","fn":"clearStorage"},{"method":"post","fn":"saveDoc"},{"method":"post","fn":"getDoc"},{"method":"post","fn":"getTests"},{"method":"post","fn":"saveTest"},{"method":"post","fn":"deleteTest"},{"method":"post","fn":"getSpecList"},{"method":"post","fn":"getConnection"}]}],"host":"127.0.0.1","route":"/bu/api/networking","port":"5100","serviceUrl":"http://127.0.0.1:5100/bu/api/networking","socketPath":"/bu/api/networking/socket.io","namespace":"ws://127.0.0.1:5100/bu/api/networking","SystemLynxService":true},"modules":[{"name":"Chats","module":{"db":{"itemName":"Chat","collectionName":"Chats"}}},{"name":"Notifications","module":{"db":{"itemName":"Notification","collectionName":"Notifications"}}},{"name":"Storage","module":{"STORAGE":"/Users/odionedwards/buAPI/Networking/files","STORAGE_URL":"http://127.0.0.1:5100/storage"}},{"name":"Plugin","module":{}}],"routing":{"route":"bu/api/networking","port":"5100","host":"127.0.0.1","protocol":"http","ssl":null,"staticRouting":true},"services":[{"name":"Profiles","url":"http://127.0.0.1:4100/bu/api/profiles","onLoad":null,"client":{"Badges":{},"Locations":{},"Users":{},"Teams":{},"Tournaments":{},"Groups":{},"Events":{},"Follows":{},"Solicitations":{},"Aggregator":{},"Storage":{},"Plugin":{}}},{"name":"SystemView","url":"http://localhost:3000/systemview/api","onLoad":null,"client":{"SystemView":{}}}]},"specList":{"docs":["Chats.md","Networking.md","Notifications.md","Shares.md"],"tests":["Chats.addMember.json","Chats.addSeenBy.json","Chats.get.json","Chats.getAll.json","Chats.getMessages.json","Chats.removeMember.json","Chats.send.json","Chats.start.json","Chats.undoMessage.json","Notifications.add.json","Notifications.get.json","Notifications.updateStatus.json"]}},{"projectCode":"buAPI","serviceId":"Basketball","system":{"connectionData":{"modules":[{"namespace":"ws://127.0.0.1:4900/bu/api/basketball/Games","route":"/bu/api/basketball/Games","name":"Games","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"editGameDetails"},{"method":"post","fn":"updateTeam"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"addPlay"},{"method":"post","fn":"editPlay"},{"method":"post","fn":"undoPlay"},{"method":"post","fn":"insertPlay"},{"method":"post","fn":"endReview"},{"method":"post","fn":"acceptCallout"},{"method":"post","fn":"rejectCallout"},{"method":"post","fn":"setAdmins"}]},{"namespace":"ws://127.0.0.1:4900/bu/api/basketball/Stats","route":"/bu/api/basketball/Stats","name":"Stats","methods":[{"method":"post","fn":"get"},{"method":"post","fn":"getPage"}]},{"namespace":"ws://127.0.0.1:4900/bu/api/basketball/Seasons","route":"/bu/api/basketball/Seasons","name":"Seasons","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"edit"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"addRound"},{"method":"post","fn":"editRound"},{"method":"post","fn":"removeRound"},{"method":"post","fn":"addTeam"},{"method":"post","fn":"removeTeam"},{"method":"post","fn":"editTeam"},{"method":"post","fn":"acceptCallout"},{"method":"post","fn":"rejectCallout"},{"method":"post","fn":"addMatch"},{"method":"post","fn":"editMatch"},{"method":"post","fn":"cancel"},{"method":"post","fn":"removeMatch"}]},{"namespace":"ws://127.0.0.1:4900/bu/api/basketball/Aggregator","route":"/bu/api/basketball/Aggregator","name":"Aggregator","methods":[{"method":"post","fn":"get"}]},{"namespace":"ws://127.0.0.1:4900/bu/api/basketball/Storage","route":"/bu/api/basketball/Storage","name":"Storage","methods":[{"method":"post","fn":"save"},{"method":"post","fn":"delete"},{"method":"post","fn":"list"}]},{"namespace":"ws://127.0.0.1:4900/bu/api/basketball/Plugin","route":"/bu/api/basketball/Plugin","name":"Plugin","methods":[{"method":"post","fn":"clearMockCourts"},{"method":"post","fn":"clearMockGames"},{"method":"post","fn":"clearMockSeasons"},{"method":"post","fn":"clearMockLocations"},{"method":"post","fn":"readyGame"},{"method":"post","fn":"clearStats"},{"method":"post","fn":"getMockPlays"},{"method":"post","fn":"wait"},{"method":"post","fn":"readySeason"},{"method":"post","fn":"seasonsTest1"},{"method":"post","fn":"seasonsTest2"},{"method":"post","fn":"seasonsTest3"},{"method":"post","fn":"seasonsTest4"},{"method":"post","fn":"seasonsTest5"},{"method":"post","fn":"playOutMockRound"},{"method":"post","fn":"seedLocations"},{"method":"post","fn":"clearStorage"},{"method":"post","fn":"saveDoc"},{"method":"post","fn":"getDoc"},{"method":"post","fn":"getTests"},{"method":"post","fn":"saveTest"},{"method":"post","fn":"deleteTest"},{"method":"post","fn":"getSpecList"},{"method":"post","fn":"getConnection"}]}],"host":"127.0.0.1","route":"/bu/api/basketball","port":"4900","serviceUrl":"http://127.0.0.1:4900/bu/api/basketball","socketPath":"/bu/api/basketball/socket.io","namespace":"ws://127.0.0.1:4900/bu/api/basketball","SystemLynxService":true},"modules":[{"name":"Games","module":{"db":{"itemName":"Game","collectionName":"Games"}}},{"name":"Stats","module":{}},{"name":"Seasons","module":{"db":{"itemName":"Season","collectionName":"Seasons"}}},{"name":"Aggregator","module":{"db":{},"COLLECTIONS":["Events","Games","Seasons","PlayerOverallPerformance","PlayerSeasonalPerformance","PlayerPerGamePerformance","TeamOverallPerformance","TeamSeasonalPerformance","TeamPerGamePerformance","Locations"]}},{"name":"Storage","module":{"STORAGE":"/Users/odionedwards/buAPI/Basketball/files","STORAGE_URL":"http://127.0.0.1:4900/storage"}},{"name":"Plugin","module":{}}],"routing":{"route":"bu/api/basketball","port":"4900","host":"127.0.0.1","protocol":"http","ssl":null,"staticRouting":true},"services":[{"name":"Profiles","url":"http://127.0.0.1:4100/bu/api/profiles","onLoad":null,"client":{"Badges":{},"Locations":{},"Users":{},"Teams":{},"Tournaments":{},"Groups":{},"Events":{},"Follows":{},"Solicitations":{},"Aggregator":{},"Storage":{},"Plugin":{}}},{"name":"SystemView","url":"http://localhost:3000/systemview/api","onLoad":null,"client":{"SystemView":{}}}]},"specList":{"docs":["Basketball.md","Games.md","Seasons.get.md","Seasons.md","Stats.md"],"tests":["Aggregator.get.json","Games.acceptCallout.json","Games.add.json","Games.addAdmin.json","Games.addPlay.json","Games.editGameDetails.json","Games.editPlay.json","Games.endReview.json","Games.get.json","Games.getPage.json","Games.insertPlay.json","Games.rejectCallout.json","Games.removeAdmin.json","Games.setAdmins.json","Games.undoPlay.json","Games.updateTeam.json","Plugin.getMockPlays.json","Plugin.seasonsTest1.json","Plugin.seasonsTest2.json","Plugin.seasonsTest3.json","Plugin.seasonsTest4.json","Plugin.seasonsTest5.json","Seasons.acceptCallout.json","Seasons.add.json","Seasons.addAdmin.json","Seasons.addMatch.json","Seasons.addRound.json","Seasons.addTeam.json","Seasons.cancel.json","Seasons.edit.json","Seasons.editMatch.json","Seasons.editRound.json","Seasons.editTeam.json","Seasons.get.json","Seasons.getPage.json","Seasons.rejectCallout.json","Seasons.removeAdmin.json","Seasons.removeMatch.json","Seasons.removeRound.json","Seasons.removeTeam.json","Stats.get.json","Stats.getPage.json"]}},{"projectCode":"buAPI","serviceId":"Media","system":{"connectionData":{"modules":[{"namespace":"ws://127.0.0.1:4000/bu/api/media/Broadcasts","route":"/bu/api/media/Broadcasts","name":"Broadcasts","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"getRtpCapabilities"},{"method":"post","fn":"getSenderTransportData"},{"method":"post","fn":"connectTransport"},{"method":"post","fn":"createSceneProducer"},{"method":"post","fn":"getReceiverTransportData"},{"method":"post","fn":"createSceneConsumers"},{"method":"post","fn":"resumeConsumer"},{"method":"post","fn":"switchScenes"},{"method":"post","fn":"startBroadcast"},{"method":"post","fn":"endBroadcast"},{"method":"post","fn":"addAdmin"},{"method":"post","fn":"removeAdmin"},{"method":"post","fn":"setAdmins"},{"method":"post","fn":"addContributor"},{"method":"post","fn":"removeContributor"},{"method":"post","fn":"setContributors"}]},{"namespace":"ws://127.0.0.1:4000/bu/api/media/Posts","route":"/bu/api/media/Posts","name":"Posts","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"delete"},{"method":"post","fn":"edit"}]},{"namespace":"ws://127.0.0.1:4000/bu/api/media/Reactions","route":"/bu/api/media/Reactions","name":"Reactions","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"get"},{"method":"post","fn":"getPage"},{"method":"post","fn":"getCount"},{"method":"post","fn":"delete"}]},{"namespace":"ws://127.0.0.1:4000/bu/api/media/Storage","route":"/bu/api/media/Storage","name":"Storage","methods":[{"method":"post","fn":"save"},{"method":"post","fn":"delete"},{"method":"post","fn":"list"}]},{"namespace":"ws://127.0.0.1:4000/bu/api/media/Plugin","route":"/bu/api/media/Plugin","name":"Plugin","methods":[{"method":"post","fn":"clearMockBroadcasts"},{"method":"post","fn":"clearMockReactions"},{"method":"post","fn":"clearMockPost"},{"method":"post","fn":"clearStorage"},{"method":"post","fn":"saveDoc"},{"method":"post","fn":"getDoc"},{"method":"post","fn":"getTests"},{"method":"post","fn":"saveTest"},{"method":"post","fn":"deleteTest"},{"method":"post","fn":"getSpecList"},{"method":"post","fn":"getConnection"}]}],"host":"127.0.0.1","route":"/bu/api/media","port":"4000","serviceUrl":"http://127.0.0.1:4000/bu/api/media","socketPath":"/bu/api/media/socket.io","namespace":"ws://127.0.0.1:4000/bu/api/media","SystemLynxService":true},"modules":[{"name":"Broadcasts","module":{"db":{"itemName":"Broadcast","collectionName":"Broadcasts"},"router":{"_events":{},"_eventsCount":2,"_maxListeners":null}}},{"name":"Posts","module":{"db":{"itemName":"Post","collectionName":"Posts"}}},{"name":"Reactions","module":{"db":{"itemName":"Reaction","collectionName":"Reactions"}}},{"name":"Storage","module":{"STORAGE":"/Users/odionedwards/buAPI/Media/files","STORAGE_URL":"http://127.0.0.1:4000/storage"}},{"name":"Plugin","module":{}}],"routing":{"route":"bu/api/media","port":"4000","host":"127.0.0.1","protocol":"http","ssl":null,"staticRouting":true},"services":[{"name":"Profiles","url":"http://127.0.0.1:4100/bu/api/profiles","onLoad":null,"client":{"Badges":{},"Locations":{},"Users":{},"Teams":{},"Tournaments":{},"Groups":{},"Events":{},"Follows":{},"Solicitations":{},"Aggregator":{},"Storage":{},"Plugin":{}}},{"name":"Basketball","url":"http://127.0.0.1:4900/bu/api/basketball","onLoad":null,"client":{"Games":{},"Stats":{},"Seasons":{},"Aggregator":{},"Storage":{},"Plugin":{}}},{"name":"SystemView","url":"http://localhost:3000/systemview/api","onLoad":null,"client":{"SystemView":{}}}]},"specList":{"docs":["Broadcasts.md","Media.md","Posts-contract.md","Posts.md","Reactions.md","Storage.md"],"tests":["Broadcasts.add.json","Broadcasts.addAdmin.json","Broadcasts.addContributor.json","Broadcasts.get.json","Broadcasts.getPage.json","Broadcasts.removeAdmin.json","Broadcasts.removeContributor.json","Broadcasts.setAdmins.json","Broadcasts.setContributors.json","Posts.add.json","Posts.delete.json","Posts.edit.json","Posts.get.json","Posts.getPage.json","Reactions.add.json","Reactions.delete.json","Reactions.get.json","Reactions.getCount.json","Reactions.getPage.json"]}},{"system":{"connectionData":{"modules":[{"namespace":"ws://localhost:5555/test/api/Math","route":"/test/api/Math","name":"Math","methods":[{"method":"post","fn":"add"},{"method":"post","fn":"subtract"},{"method":"post","fn":"multiply"}]},{"namespace":"ws://localhost:5555/test/api/String","route":"/test/api/String","name":"String","methods":[{"method":"post","fn":"concat"},{"method":"post","fn":"repeat"},{"method":"post","fn":"toUpperCase"}]},{"namespace":"ws://localhost:5555/test/api/Auth","route":"/test/api/Auth","name":"Auth","methods":[{"method":"post","fn":"signIn"},{"method":"post","fn":"getSession"}]},{"namespace":"ws://localhost:5555/test/api/Headers","route":"/test/api/Headers","name":"Headers","methods":[{"method":"post","fn":"getOrigin"}]},{"namespace":"ws://localhost:5555/test/api/Plugin","route":"/test/api/Plugin","name":"Plugin","methods":[{"method":"post","fn":"saveDoc"},{"method":"post","fn":"getDoc"},{"method":"post","fn":"getTests"},{"method":"post","fn":"saveTest"},{"method":"post","fn":"deleteTest"},{"method":"post","fn":"getSpecList"},{"method":"post","fn":"getConnection"},{"method":"post","fn":"getLog"}]}],"host":"localhost","route":"/test/api","port":5555,"serviceUrl":"http://localhost:5555/test/api","socketPath":"/test/api/socket.io","namespace":"ws://localhost:5555/test/api","SystemLynxService":true},"modules":[{"name":"Math","__constructor":{},"module":{}},{"name":"String","__constructor":{},"module":{}},{"name":"Auth","__constructor":{"_lastCookie":""},"module":{}},{"name":"Headers","__constructor":{"_lastOrigin":""},"module":{}},{"name":"Plugin","module":{}}],"routing":{"route":"test/api","port":5555},"services":[{"name":"SystemView","url":"http://localhost:3000/systemview/api","onLoad":null,"client":{"SystemView":{}}}]},"projectCode":"systemview-test","serviceId":"TestService","specList":{"docs":[],"tests":["Auth.getSession.json","Auth.signIn.json","Headers.getOrigin.json","Math.add.json","Math.subtract.json","String.concat.json","String.repeat.json"]}}]
@@ -40,12 +40,13 @@ function cookieHeader() {
40
40
  return pairs || null;
41
41
  }
42
42
 
43
- function createCookieHttpClient() {
43
+ function createCookieHttpClient(extraHeaders = {}) {
44
44
  return {
45
45
  request: async ({ method = "get", url, body: data, headers }) => {
46
46
  method = method.toLowerCase();
47
47
  const cookie = cookieHeader();
48
- if (cookie) headers = { ...headers, Cookie: cookie };
48
+ headers = { ...headers, ...extraHeaders };
49
+ if (cookie) headers.Cookie = cookie;
49
50
  try {
50
51
  const res = await axios({ url, method, headers, data });
51
52
  captureCookies(res.headers["set-cookie"]);
@@ -66,6 +67,7 @@ function createCookieHttpClient() {
66
67
  if (__arguments) form.append("__arguments", JSON.stringify(__arguments));
67
68
  const cookie = cookieHeader();
68
69
  const allHeaders = {
70
+ ...extraHeaders,
69
71
  ...(cookie ? { Cookie: cookie } : {}),
70
72
  ...headers,
71
73
  "Content-Type": "multipart/form-data",
@@ -87,5 +89,5 @@ function createCookieHttpClient() {
87
89
 
88
90
  module.exports = {
89
91
  createCookieHttpClient,
90
- createCookieClient: () => createClient(createCookieHttpClient()),
92
+ createCookieClient: (extraHeaders = {}) => createClient(createCookieHttpClient(extraHeaders)),
91
93
  };
package/cli/index.js CHANGED
@@ -34,6 +34,7 @@ async function startTest() {
34
34
  json: flags.json,
35
35
  verbose: flags.verbose,
36
36
  manifest: flags.manifest,
37
+ headers: flags.headers,
37
38
  });
38
39
  process.exit(exitCode);
39
40
  } catch (error) {
@@ -96,7 +97,7 @@ async function quitApp() {
96
97
  await connectService(input[1], input[2], { manifest: flags.manifest });
97
98
  process.exit(0);
98
99
  } else if (command === "probe") {
99
- const exitCode = await probe(input[1], input[2], { json: flags.json, manifest: flags.manifest });
100
+ const exitCode = await probe(input[1], input[2], { json: flags.json, manifest: flags.manifest, headers: flags.headers });
100
101
  process.exit(exitCode || 0);
101
102
  } else {
102
103
  await startApp();
package/cli/probe.js CHANGED
@@ -3,7 +3,7 @@ const path = require("path");
3
3
  const { createCookieClient } = require("./cookieClient");
4
4
  const log = require("./logger");
5
5
 
6
- module.exports = async function probe(namespace, argsStr, { json = false, manifest: manifestPath } = {}) {
6
+ module.exports = async function probe(namespace, argsStr, { json = false, manifest: manifestPath, headers: cliHeaders = {} } = {}) {
7
7
  if (!namespace) {
8
8
  log.error("Usage: systemview probe <ServiceId.Module.method> [args]");
9
9
  return 1;
@@ -48,10 +48,11 @@ module.exports = async function probe(namespace, argsStr, { json = false, manife
48
48
  return 1;
49
49
  }
50
50
 
51
+ const extraHeaders = { ...(manifest.probeHeaders || {}), ...cliHeaders };
51
52
  if (!json) log.info(`${serviceId}.${moduleName}.${methodName}(${argsStr || ""})`);
52
53
 
53
54
  try {
54
- const client = createCookieClient().createService(service.system.connectionData);
55
+ const client = createCookieClient(extraHeaders).createService(service.system.connectionData);
55
56
  const result = await client[moduleName][methodName](...args);
56
57
  if (json) {
57
58
  process.stdout.write(JSON.stringify({ serviceId, moduleName, methodName, args, result }, null, 2) + "\n");
package/cli/runTests.js CHANGED
@@ -1,7 +1,6 @@
1
1
  const fs = require("fs");
2
2
  const path = require("path");
3
3
  const { createCookieClient } = require("./cookieClient");
4
- const Client = createCookieClient();
5
4
  const { initializeSavedTests } = require("../testing-utilities/transformTests");
6
5
  const FullTestController = require("../testing-utilities/FullTestController");
7
6
  const log = require("./logger");
@@ -11,7 +10,7 @@ const { runFullTest } = new FullTestController();
11
10
  const chalk = require("chalk");
12
11
  const DIVIDER = chalk.dim(" " + "─".repeat(60));
13
12
 
14
- module.exports = async function runTests(url, project_code, namespace, { json = false, verbose = false, manifest: manifestPath } = {}) {
13
+ module.exports = async function runTests(url, project_code, namespace, { json = false, verbose = false, manifest: manifestPath, headers: cliHeaders = {} } = {}) {
15
14
  const api = `${url}/systemview/api`;
16
15
 
17
16
  if (!project_code) {
@@ -19,19 +18,22 @@ module.exports = async function runTests(url, project_code, namespace, { json =
19
18
  return 1;
20
19
  }
21
20
 
22
- const connectedServices = await resolveServices(api, project_code, manifestPath);
21
+ const { services: connectedServices, probeHeaders: manifestHeaders } = await resolveServices(api, project_code, manifestPath);
23
22
  if (!connectedServices || !connectedServices.length) {
24
23
  log.warn("No connected services found for project: " + project_code);
25
24
  return 1;
26
25
  }
27
26
 
27
+ const extraHeaders = { ...manifestHeaders, ...cliHeaders };
28
+ const Client = createCookieClient(extraHeaders);
29
+
28
30
  if (!json) {
29
31
  connectedServices.forEach(({ serviceId, system }) => {
30
32
  log.success(`connected: ${serviceId} @ ${system.connectionData.serviceUrl}`);
31
33
  });
32
34
  }
33
35
 
34
- const allTestLists = await getTests(connectedServices);
36
+ const allTestLists = await getTests(connectedServices, Client);
35
37
  const testToRun = allTestLists
36
38
  .map((list) =>
37
39
  namespace
@@ -55,7 +57,7 @@ module.exports = async function runTests(url, project_code, namespace, { json =
55
57
  if (!json) log.info(`Initializing tests for ${serviceId}...`);
56
58
 
57
59
  try {
58
- const initialized = initializeSavedTests(testList, connectedServices);
60
+ const initialized = initializeSavedTests(testList, connectedServices, Client);
59
61
  const { passed, failed, jsonTests } = await runAllTests(initialized, url, project_code, json, verbose);
60
62
  totalFailed += failed;
61
63
 
@@ -188,7 +190,7 @@ function serializePhase(tests) {
188
190
  });
189
191
  }
190
192
 
191
- async function getTests(connectedServices) {
193
+ async function getTests(connectedServices, Client) {
192
194
  const results = [];
193
195
  for (const { system } of connectedServices) {
194
196
  const { connectionData } = system;
@@ -207,7 +209,6 @@ async function resolveServices(api, project_code, manifestPath) {
207
209
  if (fs.existsSync(manifestFile)) {
208
210
  try {
209
211
  const raw = JSON.parse(fs.readFileSync(manifestFile, "utf8"));
210
- // Support both { projectCode, services: [] } and single-service { projectCode, serviceId, system, specList }
211
212
  const services = raw.services
212
213
  ? raw.services
213
214
  : [{ serviceId: raw.serviceId, system: raw.system, specList: raw.specList }];
@@ -215,17 +216,19 @@ async function resolveServices(api, project_code, manifestPath) {
215
216
  if (project_code && raw.projectCode && raw.projectCode !== project_code) {
216
217
  log.warn(`Manifest projectCode "${raw.projectCode}" doesn't match "${project_code}", falling back to API`);
217
218
  } else {
218
- return services;
219
+ return { services, probeHeaders: raw.probeHeaders || {} };
219
220
  }
220
221
  } catch (err) {
221
222
  log.warn(`Failed to read manifest: ${err.message}`);
222
223
  }
223
224
  }
224
225
 
225
- return await getConnectedServices(api, project_code);
226
+ const BaseClient = createCookieClient();
227
+ const services = await getConnectedServices(api, project_code, BaseClient);
228
+ return { services, probeHeaders: {} };
226
229
  }
227
230
 
228
- async function getConnectedServices(api, project_code) {
231
+ async function getConnectedServices(api, project_code, Client) {
229
232
  try {
230
233
  const { SystemView } = await Client.loadService(api);
231
234
  return await SystemView.getServices(project_code);
package/cli/utils/cli.js CHANGED
@@ -17,6 +17,7 @@ const HELP_TEXT = `
17
17
  --json Output results as JSON (for agents/CI)
18
18
  --verbose Print all phases including Before/After on pass
19
19
  --manifest <path> Path to manifest file (default: ./systemview.manifest.json)
20
+ --header "Name: Value" Extra request header (repeatable; overrides manifest.probeHeaders)
20
21
 
21
22
  Examples:
22
23
  systemview start
@@ -24,6 +25,8 @@ const HELP_TEXT = `
24
25
  systemview test buAPI Users.signUp --json
25
26
  systemview connect ProfilesService http://localhost:4100/bu/api/profiles
26
27
  systemview probe ProfilesService.Users.getUser '{"userId":"123"}'
28
+ systemview probe ProfilesService.Users.get --header "Origin: http://localhost:3300"
29
+ systemview test buAPI --header "X-Api-Key: secret"
27
30
  `;
28
31
 
29
32
  const rawArgs = process.argv.slice(2);
@@ -36,11 +39,24 @@ const flags = {
36
39
  const i = rawArgs.indexOf("--manifest");
37
40
  return i !== -1 ? rawArgs[i + 1] : null;
38
41
  })(),
42
+ headers: (() => {
43
+ const result = {};
44
+ rawArgs.forEach((a, i) => {
45
+ if (a === "--header" && rawArgs[i + 1]) {
46
+ const val = rawArgs[i + 1];
47
+ const colonIdx = val.indexOf(":");
48
+ if (colonIdx !== -1) {
49
+ result[val.slice(0, colonIdx).trim()] = val.slice(colonIdx + 1).trim();
50
+ }
51
+ }
52
+ });
53
+ return result;
54
+ })(),
39
55
  };
40
56
 
41
57
  const input = rawArgs.filter((a, i) => {
42
58
  if (a.startsWith("-")) return false;
43
- if (i > 0 && rawArgs[i - 1] === "--manifest") return false;
59
+ if (i > 0 && (rawArgs[i - 1] === "--manifest" || rawArgs[i - 1] === "--header")) return false;
44
60
  return true;
45
61
  });
46
62
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "systemview",
3
3
  "description": "A documentation and testing suite for SystemLynx",
4
- "version": "1.18.0",
4
+ "version": "1.19.0",
5
5
  "license": "UNLICENSED",
6
6
  "bin": {
7
7
  "systemview": "cli/index.js"
@@ -12,6 +12,7 @@ module.exports = function Test({
12
12
  index,
13
13
  editMode = true,
14
14
  logger,
15
+ client,
15
16
  }) {
16
17
  this.index = index;
17
18
  this.connection = {};
@@ -99,7 +100,7 @@ module.exports = function Test({
99
100
  }
100
101
  const { connectionData } = service.system;
101
102
 
102
- this.connection[serviceId] = Client.createService(connectionData);
103
+ this.connection[serviceId] = (client || Client).createService(connectionData);
103
104
  this.connection[serviceId].setHeaders({ Origin: `http://localhost:${3000}` });
104
105
  }
105
106
 
@@ -1,23 +1,23 @@
1
1
  const { Argument } = require("./Argument.class");
2
2
  const Test = require("./Test.class");
3
3
 
4
- function initializeSavedTests(savedTests, connectedServices) {
4
+ function initializeSavedTests(savedTests, connectedServices, client) {
5
5
  return savedTests.map((ft) => {
6
6
  // context matters
7
7
  const newTests = [];
8
8
  const { title, namespace } = ft;
9
9
 
10
10
  const Before = ft.Before.map((test) =>
11
- resetTestClass(test, newTests, connectedServices, false)
11
+ resetTestClass(test, newTests, connectedServices, false, client)
12
12
  );
13
13
  const Main = ft.Main.map((test) =>
14
- resetTestClass(test, newTests, connectedServices, false)
14
+ resetTestClass(test, newTests, connectedServices, false, client)
15
15
  );
16
16
  const Events = ft.Events.map((test) =>
17
- resetTestClass(test, newTests, connectedServices, false)
17
+ resetTestClass(test, newTests, connectedServices, false, client)
18
18
  );
19
19
  const After = ft.After.map((test) =>
20
- resetTestClass(test, newTests, connectedServices, false)
20
+ resetTestClass(test, newTests, connectedServices, false, client)
21
21
  );
22
22
  newTests.push(Before);
23
23
  newTests.push(Main);
@@ -27,7 +27,7 @@ function initializeSavedTests(savedTests, connectedServices) {
27
27
  });
28
28
  }
29
29
 
30
- const resetTestClass = (test, FullTest, connectedServices, editMode) => {
30
+ const resetTestClass = (test, FullTest, connectedServices, editMode, client) => {
31
31
  return new Test({
32
32
  ...test,
33
33
  args: test.args.map(
@@ -35,6 +35,7 @@ const resetTestClass = (test, FullTest, connectedServices, editMode) => {
35
35
  new Argument(arg.name, FullTest, arg.input_type, arg.input, arg.targetValues)
36
36
  ),
37
37
  editMode,
38
+ client,
38
39
  }).getConnection(connectedServices);
39
40
  };
40
41