diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a06532..0bb2bca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this project will be documented in this file, in reverse chronological order by release. -## 1.3.5 - TBD +## 1.3.5 - 2016-08-11 ### Added @@ -18,7 +18,9 @@ All notable changes to this project will be documented in this file, in reverse ### Fixed -- Nothing. +- [#118](https://github.com/zfcampus/zf-apigility-admin-ui/pull/118) fixes the + API dashboard new service modal handler to ensure that the sidebar is updated + when a new service is successfully created. ## 1.3.4 - 2016-08-10 diff --git a/dist/apigility-ui/2122ca26.apigility.js b/dist/apigility-ui/fe6d59d8.apigility.js similarity index 56% rename from dist/apigility-ui/2122ca26.apigility.js rename to dist/apigility-ui/fe6d59d8.apigility.js index 1a7b620..413a9f6 100644 --- a/dist/apigility-ui/2122ca26.apigility.js +++ b/dist/apigility-ui/fe6d59d8.apigility.js @@ -1,7 +1,7 @@ "function"!=typeof String.prototype.endsWith&&(String.prototype.endsWith=function(a){return this.length>=a.length&&this.substr(this.length-a.length)==a}),function(){"use strict";angular.module("apigility",["apigility.core","apigility.service","apigility.modal","apigility.api-module","apigility.rest","apigility.rpc","apigility.content-negotiation","apigility.authentication","apigility.database","apigility.documentation","apigility.package","apigility.about","ngSanitize","ui.bootstrap","ui.router","ui.tree","ui.select","angular-ladda","unsavedChanges","ngTagsInput","checklist-model","toggle-switch","angular-growl"])}(),function(){"use strict";function a(a,b,c,d,e,f,g){a.value("agApiPath",angular.element("body").data("ag-api-path")||angular.element("body").data("api-base-path")||"/api"),b.state({name:"ag",url:"/",controller:"Application",views:{"header@":{templateUrl:"apigility-ui/header/header.html",controller:"Header",controllerAs:"vm",parent:this},"sidebar@":{templateUrl:"apigility-ui/sidebar/sidebar.html",controller:"Sidebar",controllerAs:"vm",parent:this},"content@":{templateUrl:"apigility-ui/dashboard/dashboard.html",controller:"Dashboard",controllerAs:"vm",parent:this}}}),c.otherwise("/"),e.setPrefix("apigility"),f.theme="bootstrap",g.globalReversedOrder(!0),g.globalTimeToLive(5e3),g.globalDisableCountDown(!0),g.onlyUniqueMessages(!1)}angular.module("apigility").config(a).directive("autofocus",["$timeout",function(a){return{restrict:"A",link:function(b,c){a(function(){c[0].focus()})}}}]),a.$inject=["$provide","$stateProvider","$urlRouterProvider","$httpProvider","localStorageServiceProvider","uiSelectConfig","growlProvider"]}(),function(){"use strict";angular.module("apigility.core",["ui.bootstrap","ui.router","ngTagsInput","LocalStorageModule","templates-main"])}(),function(){"use strict";function a(){function a(a){for(var b in c.tabs)c.tabs[b].active=b===a}function b(){a("content-negotiation")}var c=this;c.select=a,c.tabs={"content-negotiation":{title:"Content Negotiation",active:!1},authentication:{title:"Authentication",active:!1},documentation:{title:"Documentation",active:!1},backend:{title:"Generate Backend",active:!1}},b()}angular.module("apigility.core").controller("Nav",a)}(),function(){"use strict";function a(a){var b=this;b.setSelected=a.setSelected,b.isCollapsed=!0}angular.module("apigility").controller("Header",a),a.$inject=["SidebarService"]}(),function(){"use strict";function a(a,b,c,d,e){function f(a,b){g.services=[],b.forEach(function(b){b.rest.forEach(function(a){g.services.push(a)}),a.getRestList(b.name,b.default_version,function(a){b.rest=a}),b.rpc.forEach(function(a){g.services.push(a)}),a.getRpcList(b.name,b.default_version,function(a){b.rpc=a})})}var g=this;g.apis=e.getApis(),g.getSelected=e.getSelected,g.setSelected=e.setSelected,g.changeVersion=e.setSelectedVersion,g.search="",0===g.apis.length&&(g.loading=!0,a.getApiList(function(b,c){g.loading=!1,b||(e.setApis(c),g.apis=c,f(a,c))})),g.searchApi=function(a){if(!a)return g.apis=e.getApis(),void(g.search="");var b=[];g.apis.forEach(function(c){var d=[];c.rest.forEach(function(b){b.toUpperCase()==a.toUpperCase()&&d.push(b)});var e=[];if(c.rpc.forEach(function(b){b.toUpperCase()==a.toUpperCase()&&e.push(b)}),d.length>0||e.length>0){var f=angular.copy(c);f.rest=d,f.rpc=e,b.push(f)}}),g.apis=b},g.toggle=function(a){a.toggle()},g.newApiModal=function(){var a=b.open({templateUrl:"apigility-ui/modal/new-api.html",controller:"NewApi",controllerAs:"vm"});a.result.then(function(a){e.addApi(a),g.setSelected("api"+a.name),d.go("ag.apimodule",{api:a.name,ver:1})})},g.newServiceModal=function(){var a=b.open({templateUrl:"apigility-ui/modal/new-service.html",controller:"NewService",controllerAs:"vm"});a.result.then(function(a){a.hasOwnProperty("rest")?(e.setSelectedVersion(a.api,a.ver),d.go("ag.rest",{api:a.api,ver:a.ver,rest:a.rest}),g.setSelected("api"+a.api+"rest"+a.rest)):a.hasOwnProperty("rpc")?(e.setSelectedVersion(a.api,a.ver),d.go("ag.rpc",{api:a.api,ver:a.ver,rpc:a.rpc}),g.setSelected("api"+a.api+"rpc"+a.rpc)):a.hasOwnProperty("rests")&&(e.setSelectedVersion(a.api,a.ver),d.go("ag.apimodule",{api:a.api,ver:a.ver}))})}}angular.module("apigility").controller("Sidebar",a),a.$inject=["api","$modal","$rootScope","$state","SidebarService"]}(),function(){"use strict";function a(){}angular.module("apigility").controller("Dashboard",a),a.$inject=["$rootScope"]}(),function(){"use strict";angular.module("apigility.modal",["ui.router"]).filter("emptyObject",function(){return function(a){return angular.equals({},a)}})}(),function(){"use strict";function a(a,b,c){var d=this;d.cancel=a.dismiss,d.apiname="",d.loading=!1,d.ok=function(){return d.apiname?(d.loading=!0,void b.newApi(d.apiname,function(b,e){return b?(d.alert=e,void(d.loading=!1)):void c(function(){d.loading=!1,a.close(e)},3e3)})):void(d.alert="The API name cannot be empty")}}angular.module("apigility.modal").controller("NewApi",a),a.$inject=["$modalInstance","api","$timeout"]}(),function(){"use strict";function a(a,b,c,d){var e=this;e.cancel=a.dismiss,e.apis=b.getApis(),e.tabs={},e.apiname=e.apis[0],e.hasDoctrine=!1;for(var f=0;f-1?delete h.validators[b]:h.validatorNames.push(b)}),h.selectValidator=function(a){h.options=h.validators[a],h.optionNames=[];for(var b in h.options)h.optionNames.push(b)},h.selectOption=function(a){h.option.value="bool"==h.options[a]?h.option.value=!1:""},h.addOption=function(){h.validator.options.hasOwnProperty(h.option.name)||(h.validator.options[h.option.name]=h.option.value)},h.deleteOption=function(a){h.validator.options.hasOwnProperty(a)&&delete h.validator.options[a]},h.ok=function(){h.loading=!0;var i=angular.copy(c);g(i,d,h.validator),"rest"===f?e.saveRestField(h.apiName,h.version,b.rest,i,function(b,c){return h.loading=!1,b?void(h.alert=c):void a.close(c)}):"rpc"===f&&e.saveRpcField(h.apiName,h.version,b.rpc,i,function(b,c){return h.loading=!1,b?void(h.alert=c):void a.close(c)})}}angular.module("apigility.modal").controller("AddValidator",a),a.$inject=["$modalInstance","$stateParams","fields","field","api","type"]}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i){function j(a,b,c){for(var d=0;d-1?delete h.filters[b]:h.filterNames.push(b)}),h.selectFilter=function(a){h.options=h.filters[a],h.optionNames=[];for(var b in h.options)h.optionNames.push(b)},h.selectOption=function(){h.option.value=""},h.addOption=function(){h.filter.options.hasOwnProperty(h.option.name)||(h.filter.options[h.option.name]=h.option.value)},h.deleteOption=function(a){h.filter.options.hasOwnProperty(a)&&delete h.filter.options[a]},h.ok=function(){var i=angular.copy(c);g(i,d,h.filter),"rest"===f?e.saveRestField(h.apiName,h.version,b.rest,i,function(b,c){return h.loading=!1,b?void(h.alert=c):void a.close(c)}):"rpc"===f&&e.saveRpcField(h.apiName,h.version,b.rpc,i,function(b,c){return h.loading=!1,b?void(h.alert=c):void a.close(c)})}}angular.module("apigility.modal").controller("AddFilter",a),a.$inject=["$modalInstance","$stateParams","fields","field","api","type"]}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i){function j(a,b,c){for(var d=0;d-1,k[a]=g.entity.indexOf(a)>-1});var m={};m[f+"::__collection__"]=j,m[f+"::__entity__"]=k,a.save(b+"/module/"+l+"/authorization",m).then(function(a){return e.success("Authorization saved"),i(!1,a)}).catch(function(){return e.error("Unable to save authorization",{ttl:-1}),i(!0)})},this.getRestList=function(c,d,f){var g=this.normalizeModuleName(c);a.get(b+"/module/"+g+"/rest?version="+d,"_embedded").then(function(a){return a.rest.forEach(function(a){a.hasOwnProperty("_links")&&delete a._links}),f(a.rest)}).catch(function(a){return e.error("Unable to fetch REST services",{ttl:-1}),console.log("Failed to get the list of REST services",a),!1})},this.getRpcList=function(c,d,f){var g=this.normalizeModuleName(c);a.get(b+"/module/"+g+"/rpc?version="+d,"_embedded").then(function(a){return a.rpc.forEach(function(a){a.hasOwnProperty("_links")&&delete a._links}),f(a.rpc)}).catch(function(a){return e.error("Unable to fetch RPC services",{ttl:-1}),console.log("Failed to get the list of RPC services",a),!1})},this.getRest=function(c,d,f,g){var h=this.normalizeModuleName(c);a.get(b+"/module/"+h+"/rest/"+f).then(function(a){var b=angular.copy(a);b.fields=[];var c=0;if(a.hasOwnProperty("_embedded")){if(a._embedded.hasOwnProperty("input_filters"))for(;!angular.isUndefined(a._embedded.input_filters[0][c]);)b.fields[c]=a._embedded.input_filters[0][c],c++;a._embedded.hasOwnProperty("documentation")&&(delete a._embedded.documentation._links,b.documentation=a._embedded.documentation)}return delete b._links,delete b._embedded,g(b)}).catch(function(a){return e.error("Unable to fetch service",{ttl:-1}),console.log("Failed to get the REST service",a),!1})},this.getRestDoctrineMetadata=function(c,d,f){a.get(b+"/doctrine/"+c+"/metadata/"+encodeURIComponent(d)).then(function(a){return f(!1,a)}).catch(function(){return e.error("Unable to fetch Doctrine metadata",{ttl:-1}),f(!0,"I cannot retrieve entity metadata")})},this.getHydrators=function(c){a.get(b+"/hydrators","hydrators").then(function(a){return c(a)}).catch(function(a){return e.error("Unable to fetch hydrators",{ttl:-1}),console.log("Failed to get the list of Hydrators",a),!1})},this.getContentNegotiation=function(c){a.get(b+"/content-negotiation","_embedded").then(function(a){return a.selectors.forEach(function(a){delete a._links}),c(a.selectors)}).catch(function(a){return e.error("Unable to fetch content-negotiation details",{ttl:-1}),console.log("Failed to get the list of Content Negotiation",a),!1})},this.newSelector=function(c,d){var f=["content_name"];a.create(b+"/content-negotiation",[c],f).then(function(a){return e.success("Selector created"),delete a._links,d(!1,a)}).catch(function(){return e.error("Unable to create content-negotiation selector",{ttl:-1}),d(!0,"I cannot create the Selector, please enter a valid name (alpha characters)")})},this.deleteSelector=function(c,d){a.remove(b+"/content-negotiation/"+c).then(function(a){return e.success("Content-negotiation selector deleted"),d(!1,a)}).catch(function(){return e.error("Unable to delete content-negotiation selector",{ttl:-1}),d(!0)})},this.saveSelector=function(c,d){var f=["selectors"],g=angular.copy(c);delete g.content_name,a.update(b+"/content-negotiation/"+c.content_name,[g],f).then(function(a){return e.success("Selector updated"),delete a._links,d(!1,a)}).catch(function(a){switch(a.status){case 422:if(a.data.hasOwnProperty("validation_messages")&&a.data.validation_messages.hasOwnProperty("selectors")&&a.data.validation_messages.selectors.hasOwnProperty("classNotFound"))return e.error("Unable to update selector due to validation errors",{ttl:-1}),d(!0,a.data.validation_messages.selectors.classNotFound)}return e.error("Error updating selector",{ttl:-1}),d(!0,"Error during the API communication")})},this.getValidators=function(c){a.get(b+"/validators","validators").then(function(a){return c(a)}).catch(function(a){return e.error("Unable to fetch validator list",{ttl:-1}),console.log("Failed to get the list of Validators",a),!1})},this.getFilters=function(c){a.get(b+"/filters","filters").then(function(a){return c(a)}).catch(function(a){return e.error("Unable to fetch filter list",{ttl:-1}),console.log("Failed to get the list of Filters",a),!1})},this.saveRestField=function(c,d,f,g,h){angular.forEach(g,function(a){a.hasOwnProperty("error_message")&&!a.error_message&&delete a.error_message});var i=this.normalizeModuleName(c);a.save(b+"/module/"+i+"/rest/"+f+"/input-filter",g).then(function(a){return e.success("Saved field"),delete a._links,delete a.input_filter_name,a=Object.keys(a).map(function(b){return a[b] -}),h(!1,a)}).catch(function(){return e.error("Error saving field",{ttl:-1}),h(!0,"Error during the API communication")})},this.getAuthorizationRpc=function(c,d,f,g){var h=this.normalizeModuleName(c);a.get(b+"/module/"+h+"/authorization").then(function(a){var b=[],c=a[f+"::"+f];for(var d in c)c[d]&&b.push(d);return g(!1,b)}).catch(function(a){return e.error("Unable to fetch authorization details",{ttl:-1}),g(!0,a.detail)})},this.saveAuthorizationRpc=function(c,d,f,g,i){var j={},k=this.normalizeModuleName(c);h.forEach(function(a){j[a]=g.indexOf(a)>-1});var l={};l[f+"::"+f]=j,a.save(b+"/module/"+k+"/authorization",l).then(function(a){return e.success("Authorization updated"),i(!1,a)}).catch(function(){return e.error("Error saving authorization details",{ttl:-1}),i(!0)})},this.saveRpcField=function(c,d,f,g,h){angular.forEach(g,function(a){a.hasOwnProperty("error_message")&&!a.error_message&&delete a.error_message});var i=this.normalizeModuleName(c);a.save(b+"/module/"+i+"/rpc/"+f+"/input-filter",g).then(function(a){return e.success("Field saved"),delete a._links,delete a.input_filter_name,a=Object.keys(a).map(function(b){return a[b]}),h(!1,a)}).catch(function(){return e.error("Error saving field",{ttl:-1}),h(!0,"Error during the API communication")})},this.saveRestDoc=function(c,d,f,g,h){var i=this.normalizeModuleName(c);a.save(b+"/module/"+i+"/rest/"+f+"/doc",g).then(function(a){return e.success("Documentation saved"),delete a._links,h(!1,a)}).catch(function(){return e.error("Error saving documentation",{ttl:-1}),h(!0,"Error during the API communication")})},this.saveRpcDoc=function(c,d,f,g,h){var i=this.normalizeModuleName(c);a.save(b+"/module/"+i+"/rpc/"+f+"/doc",g).then(function(a){return e.success("Documentation saved"),delete a._links,h(!1,a)}).catch(function(){return e.error("Error saving documentation",{ttl:-1}),h(!0,"Error during the API communication")})},this.newRpc=function(c,d,f,g){var h=["service_name","route_match"],i=this.normalizeModuleName(c);a.create(b+"/module/"+i+"/rpc",[d,f],h).then(function(a){return e.success("Service created"),g(!1,a)}).catch(function(a){switch(e.error("Error creating service",{ttl:-1}),a.status){case 409:return g(!0,"The service already exists; please choose a different name")}return g(!0,"Error creating service (Code: "+a.status+"): "+a.data.detail)})},this.getRpc=function(c,d,f,g){var h=this.normalizeModuleName(c);a.get(b+"/module/"+h+"/rpc/"+f).then(function(a){var b=angular.copy(a);b.fields=[];var c=0;if(a._embedded){if(a._embedded.input_filters)for(;!angular.isUndefined(a._embedded.input_filters[0][c]);)b.fields[c]=a._embedded.input_filters[0][c],c++;a._embedded.documentation&&(delete a._embedded.documentation._links,b.documentation=a._embedded.documentation)}return delete b._links,delete b._embedded,g(!1,b)}).catch(function(){return e.error("Unable to fetch service",{ttl:-1}),g(!0,"Error getting the RPC service")})},this.updateGeneralRpc=function(c,d,f,h,i){var j=this.normalizeModuleName(c),k=["accept_whitelist","content_type_whitelist","controller_class","http_methods","route_match","selector","service_name"],l=g(h,k);a.update(b+"/module/"+j+"/rpc/"+f,l.value,l.key).then(function(a){return e.success("Service updated"),i(!1,a)}).catch(function(a){return a.data.detail?e.error(a.data.detail,{ttl:-1}):e.error("Error updating service",{ttl:-1}),i(!0,"Error during the update of the RPC service")})},this.deleteRpc=function(c,d,f,g,h){var i=this.normalizeModuleName(c);a.remove(b+"/module/"+i+"/rpc/"+f+"?recursive="+(g?1:0)).then(function(a){return e.success("Service deleted"),h(!1,a)}).catch(function(){return e.error("Error deleting service",{ttl:-1}),h(!0)})},this.getAuthentication=function(c){a.get(b+"/authentication").then(function(a){return a.hasOwnProperty("_links")&&delete a._links,c(!1,a)}).catch(function(){return e.error("Unable to fetch authentication details",{ttl:-1}),c(!0,null)})},this.addBasicAuthentication=function(c,d){var f=["accept_schemes","htpasswd","realm"];c.hasOwnProperty("accept_schemes")||(c.accept_schemes=[]),c.accept_schemes.push("basic"),a.create(b+"/authentication/http-basic",[c.accept_schemes,c.htpasswd,c.realm],f).then(function(a){return e.success("HTTP Basic authentication adapter created"),a.hasOwnProperty("_links")&&delete a._links,d(!1,a)}).catch(function(){return e.error("Error creating HTTP Basic authentication adapter",{ttl:-1}),d(!0,null)})},this.saveBasicAuthentication=function(c,d){var f=["htpasswd","realm"];a.update(b+"/authentication/http-basic",[c.htpasswd,c.realm],f).then(function(a){return e.success("Authentication updated"),a.hasOwnProperty("_links")&&delete a._links,d(!1,a)}).catch(function(a){switch(a.status){case 422:return e.error("Unable to update authentication due to validation errors",{ttl:-1}),d(!0,a.validation_messages.htpasswd[0])}return e.error("Unable to update authentication",{ttl:-1}),d(!0,"Error saving the basic authentication")})},this.getApiDocumentList=function(c){a.get(b+"/../documentation").then(function(a){return c(!1,a)}).catch(function(){return e.error("Unable to fetch documentation",{ttl:-1}),c(!0,null)})},this.getApiDocument=function(c,d,f){var g=this.normalizeModuleName(c);a.get(b+"/../documentation/"+g+"-v"+d).then(function(a){return f(!1,a)}).catch(function(){return e.error("Unable to fetch documentation",{ttl:-1}),f(!0,null)})},this.getDatabase=function(c){a.get(b+"/db-adapter","_embedded").then(function(a){return a.db_adapter.forEach(function(a){delete a._links}),c(!0,a)}).catch(function(){return e.error("Unable to fetch database adapters",{ttl:-1}),c(!0,null)})},this.addDatabase=function(c,d){var f=["adapter_name","charset","database","driver","hostname","username","password","port","dsn","driver_options"],h=g(c,f);a.create(b+"/db-adapter",h.value,h.key).then(function(a){return e.success("Database adapter created"),a.hasOwnProperty("_links")&&delete a._links,d(!1,a)}).catch(function(){return e.error("Error creating database adapter",{ttl:-1}),d(!0,null)})},this.saveDatabase=function(c,d){var f=["charset","database","driver","hostname","username","password","port","dsn","driver_options"],h=g(c,f);a.update(b+"/db-adapter/"+c.adapter_name,h.value,h.key).then(function(a){return e.success("Database adapter updated"),a.hasOwnProperty("_links")&&delete a._links,d(!1,a)}).catch(function(){return e.error("Error updating database adapter",{ttl:-1}),d(!0,null)})},this.deleteDatabase=function(c,d){a.remove(b+"/db-adapter/"+c).then(function(a){return e.success("Database adapter removed"),d(!1,a)}).catch(function(){return e.error("Error removing database adapter",{ttl:-1}),d(!0)})},this.autodiscover=function(c,d,f,g,h){var i=f?"doctrine/":"",j=this.normalizeModuleName(c);a.get(b+"/module/"+j+"/"+d+"/autodiscovery/"+i+g).then(function(a){return h(!0,a)}).catch(function(a){return a.data.detail?e.error(a.data.detail,{ttl:-1}):f?e.error("Error getting Doctrine service(s)",{ttl:-1}):e.error("Error getting db service(s)",{ttl:-1}),h(!0,null)})},this.newDbConnected=function(c,d,f,g){var h=["adapter_name","table_name"],i=this.normalizeModuleName(c);a.create(b+"/module/"+i+"/rest",[d,f],h).then(function(a){return e.success("DB-Connected service(s) created"),g(!1,a)}).catch(function(a){switch(e.error("Error creating DB-Connected service(s)",{ttl:-1}),a.status){case 500:return g(!0,"I cannot create the DB-Connected service, please check if already exists")}return g(!0,"I cannot create the DB-Connected service, please check your database server")})},this.getDoctrineAdapters=function(a){var f,g={method:"GET",url:b+"/doctrine-adapter",headers:{Accept:"application/json"},cache:!1},h=d.defer(),i=c(g),j="_embedded";i.then(function(b){if(204==b.status)return a(!0,b.status);var c=b.data;return h.resolve(c[j]),c.hasOwnProperty(j)?(f=c[j],f.doctrine_adapter.forEach(function(a){delete a._links}),a(!1,f)):void 0}).catch(function(a){e.error("Unable to fetch Doctrine adapters",{ttl:-1}),h.reject(a)})},this.newDoctrine=function(c,d,f,g){var h=["object_manager","entity_class","service_name"],i=this.normalizeModuleName(c);a.create(b+"/module/"+i+"/doctrine/"+f.service_name,[d,f.entity_class,f.service_name],h).then(function(a){return e.success("Doctrine-connected service created"),g(!1,a)}).catch(function(a){switch(e.error("Error creating Doctrine-connected service",{ttl:-1}),a.status){case 500:return g(!0,"I cannot create the Doctrine-Connected service, please check if already exists")}return g(!0,"I cannot create the Doctrine-Connected service, please check your database server")})},this.newVersion=function(c,d){var f=["module"];a.update(b+"/versioning",[c],f).then(function(a){return e.success("New API version created"),d(!1,a)}).catch(function(){return e.error("Error creating new API version",{ttl:-1}),d(!0,null)})},this.setDefaultVersion=function(c,d,f){var g=["module","version"];a.update(b+"/default-version",[c,d],g).then(function(a){return e.success("API default version updated"),f(!1,a)}).catch(function(){return e.error("Error updating default API version",{ttl:-1}),f(!0,null)})},this.getSourceCode=function(c,d,f){var g=this.normalizeModuleName(c);a.get(b+"/source?module="+g+"&class="+d).then(function(a){return f(!1,a)}).catch(function(){return e.error("Error fetching source code",{ttl:-1}),f(!0,null)})},this.buildPackage=function(c,d,f){var g=["format","apis","composer","config","zpk_xml","zpk_assets","zpk_version"],h={};d.forEach(function(a){h[a.name]=c.modules.indexOf(a.name)>=0});var i=[c.format,h,c.composer,c.config];"zpk"===c.format&&i.push.apply(i,[c.zpk.xml,c.zpk.assets,c.zpk.version]),a.create(b+"/package",i,g).then(function(a){return a?(e.success("Package creation initiated"),f(!1,a)):(e.error("Error occurred when building package",{ttl:-1}),f(!0,"Error occurred building the package"))}).catch(function(){return e.error("Error occurred when building package",{ttl:-1}),f(!0,"Error occurred building the package")})},this.getAuthenticationAdapters=function(c){a.get(b+"/authentication","_embedded",2).then(function(a){return a.items.forEach(function(a){delete a._links}),c(!0,a.items)}).catch(function(){return e.error("Error fetching authentication adapters",{ttl:-1}),c(!0,null)})},this.addAuthenticationAdapter=function(c,d){for(var g=f(c),h=0;h\n
\n

Apigility {{vm.version}}

\n
\n
\n
\n \n
\n

Apigility is the open source API builder for PHP, designed to simplify creating and maintaining useful, easy to consume, and well structured APIs. Regardless of your experience in API building, with Apigility you can build APIs that enable mobile apps, developer communities, and any other consumer controlled access to your applications.

\n

Key features: RESTful or RPC services; JSON (specifically, HAL); Problem Details for HTTP APIs; Versioning; Normalisation and Validation; Authentication (HTTP Basic/Digest, OAuth2); Documentation (HTML, Swagger).

\n

Apigility is made using Zend Framework 2, AngularJS and Bootstrap.

\n

If you want to contribute you can fork the project on github.

\n

The official web site of the project is apigility.org.

\n
\n\n')}]),angular.module("apigility-ui/api-module/api-module.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/api-module/api-module.html",'
\n
\n

\n \n API: {{vm.apiName}} (v{{vm.version}})\n

\n
\n
\n \n
\n
\n

Authentication

\n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n

Version

\n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n

\n

REST

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Service nameURLDescription
{{rest.service_name}}{{rest.route_match}}\n Add a description for this service\n {{rest._embedded.documentation.description}}\n
\n No REST services, create a new one\n
\n
\n
\n

RPC

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Service nameURLDescription
{{rpc.service_name}}{{rpc.route_match}}\n Add a description for this service\n {{rpc._embedded.documentation.description}}\n
\n No RPC services, create a new one\n
\n
\n
\n
\n')}]),angular.module("apigility-ui/authentication/authentication.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/authentication/authentication.html",'
\n
\n

Authentication

\n
\n
\n
\n

Adapters

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameTypeOptionsActions
{{item.name}}{{item.type}} ({{item.oauth2_type}})\n \n {{option}} = {{value}}, \n Route: {{item.oauth2_route}}\n Route: {{item.route}}\n \n \n \n \n \n No actions for custom adapter\n \n
\n
\n
\n
\n')}]),angular.module("apigility-ui/content-negotiation/content-negotiation.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/content-negotiation/content-negotiation.html",'
\n
\n

Content Negotiation

\n
\n
\n
\n

Selectors

\n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameView modelAction
{{item.content_name}}\n \n {{viewmodel}}, \n No view models\n \n \n
\n
\n
\n
\n')}]),angular.module("apigility-ui/dashboard/dashboard.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/dashboard/dashboard.html",'
\n
\n
\n \n
\n\n
\n

Welcome to Apigility!

\n\n

\n Apigility is an API Builder, designed to simplify\n creating and maintaining useful, easy to consume, and well-structured\n APIs.
\n

\n\n

\n If this is the first time using Apigility we suggest\n you read the introduction or watch the getting started video.\n

\n
\n
\n
\n')}]),angular.module("apigility-ui/database/database.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/database/database.html",'
\n
\n

Database

\n
\n
\n
\n

Database adapters

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameDriverDatabaseDriver optionsActions
{{item.adapter_name}}{{item.driver}}{{item.database}}\n \n {{option}} = {{value}}, \n \n \n
\n
\n
\n
\n

Doctrine adapters

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Adapter nameConfigurationEvent ManagerDriver classParams
{{item.adapter_name}}{{item.configuration}}{{item.eventmanager}}{{item.driverClass}}
\n
\n
\n
\n
\n') -}]),angular.module("apigility-ui/documentation/documentation-api.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/documentation/documentation-api.html",'
\n
\n \n \n \n

{{service.description}}

\n \n \n \n \n \n \n
\n \n
\n
\n
\n')}]),angular.module("apigility-ui/documentation/documentation-list.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/documentation/documentation-list.html",'\n \n \n \n \n \n \n \n \n \n \n
API nameVersions
{{api.name}}\n Ver. {{ver}}, \n
\n')}]),angular.module("apigility-ui/documentation/documentation-service.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/documentation/documentation-service.html",'\n {{http}} {{service.route_collection}}\n requires authentication\n \n

{{collection.description}}

\n

Fields

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FieldDescriptionRequired
{{field}}{{data.description}}  
\n
\n

Request

\n
\n

Headers

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
HeaderValue
Accept\n
{{type}}
\n
AuthenticationHTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details)
\n

Body

\n
{{collection.request}}
\n
\n
\n
\n

Response

\n
\n

Status Codes

\n
    \n
  • {{status.code}}: {{status.message}}
  • \n
\n

Headers

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
HeaderValue
Content-Type\n
{{type}}
\n
AllowComma-separated list of all HTTP methods allowed
\n

Body

\n
{{collection.response}}
\n
\n
\n')}]),angular.module("apigility-ui/documentation/documentation.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/documentation/documentation.html",'
\n
\n

Documentation of {{vm.apiName}} (v{{vm.version}})

\n
\n
\n \n \n
\n
\n')}]),angular.module("apigility-ui/header/header.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/header/header.html",'\n')}]),angular.module("apigility-ui/modal/add-authoption.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/add-authoption.html",'\n\n\n')}]),angular.module("apigility-ui/modal/add-dboption.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/add-dboption.html",'\n\n\n')}]),angular.module("apigility-ui/modal/add-filter.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/add-filter.html",'\n\n\n')}]),angular.module("apigility-ui/modal/add-validator.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/add-validator.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-api.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-api.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-auth.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-auth.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-authoption.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-authoption.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-db.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-db.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-dboption.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-dboption.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-field.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-field.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-filter.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-filter.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-rest.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-rest.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-rpc.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-rpc.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-selector.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-selector.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-validator.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-validator.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-viewmodel.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-viewmodel.html",'\n\n\n')}]),angular.module("apigility-ui/modal/edit-auth.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/edit-auth.html",'\n\n\n') +})},f.deleteApiModal=function(){var a=b.open({templateUrl:"apigility-ui/modal/delete-api.html",controller:"DeleteApi",controllerAs:"vm"});a.result.then(function(a){e.removeApi(a),c.go("ag",null,{reload:!0})})},f.newServiceModal=function(){var a=b.open({templateUrl:"apigility-ui/modal/new-service.html",controller:"NewService",controllerAs:"vm",resolve:{apiname:function(){return f.apiName},version:function(){return f.version}}});a.result.then(function(a){a.hasOwnProperty("rest")?(e.setSelectedVersion(a.api,a.ver),c.go("ag.rest",{api:a.api,ver:a.ver,rest:a.rest}),f.setSelected("api"+a.api+"rest"+a.rest)):a.hasOwnProperty("rpc")?(e.setSelectedVersion(a.api,a.ver),c.go("ag.rpc",{api:a.api,ver:a.ver,rpc:a.rpc}),f.setSelected("api"+a.api+"rpc"+a.rpc)):a.hasOwnProperty("rests")&&(e.setSelectedVersion(a.api,a.ver),c.go("ag.apimodule",{api:a.api,ver:a.ver}))})},f.setDefaultVersion=function(){f.loading=!0,a.setDefaultVersion(f.apiName,f.module.default_version,function(a,b){return f.loading=!1,a?void(f.alert=b):void 0})},f.saveAuthentication=function(b){f.loading=!0,"none"===b.toLowerCase()?a.deleteModuleAuthentication(f.apiName,f.version,function(a,b){return f.loading=!1,a?void(f.alert=b):void 0}):a.saveModuleAuthentication(f.apiName,f.version,b,function(a,b){return f.loading=!1,a?void(f.alert=b):void 0})}}angular.module("apigility").controller("ApiModule",a),a.$inject=["api","$modal","$state","$stateParams","SidebarService"]}(),function(){"use strict";angular.module("apigility.rest",["ui.router"])}(),function(){"use strict";function a(a){a.state("ag.rest",b)}angular.module("apigility.rest").config(a);var b={url:"/module/:api/:ver/rest/:rest",views:{"content@":{templateUrl:"apigility-ui/rest/rest.html",controller:"Rest",controllerAs:"vm"}}};a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i){function j(){l.selectorNames=[],l.adapterNames=[],l.tags={accept_whitelist:[],content_type_whitelist:[],collection_query_whitelist:[]},a.getHydrators(function(a){l.hydrators=a}),a.getDatabase(function(a,b){for(var c in b.db_adapter)l.adapterNames.push(b.db_adapter[c].adapter_name)}),a.getDoctrineAdapters(function(a,b){l.doctrine=b.doctrine_adapter}),a.getRest(l.apiName,l.version,l.restName,function(b){l.rest=b,l.serviceName=l.rest.service_name,l.isDoctrine=angular.isDefined(b.object_manager),l.rest.accept_whitelist.forEach(function(a){l.tags.accept_whitelist.push({text:a})}),l.rest.content_type_whitelist.forEach(function(a){l.tags.content_type_whitelist.push({text:a})}),l.rest.collection_query_whitelist.forEach(function(a){l.tags.collection_query_whitelist.push({text:a})}),l.isDoctrine&&(0===l.rest.strategies.length&&(l.rest.strategies={}),a.getRestDoctrineMetadata(b.object_manager,b.entity_class,function(a,b){return a?void console.log(b):void(l.doctrineMetadata=b)})),l.rest.source_code=[{name:"Collection Class",classname:l.rest.collection_class},{name:"Entity Class",classname:l.rest.entity_class}],l.rest.resource_class&&l.rest.source_code.push({name:"Resource Class",classname:l.rest.resource_class},{name:"Resource Factory",classname:l.rest.resource_class+"Factory"}),l.getSourceCode(l.rest.source_code[0].classname),l.source=l.rest.source_code[0],a.getContentNegotiation(function(a){l.content_negotiation=a;for(var b in a)l.selectorNames.push(a[b].content_name)})})}function k(){a.getAuthorizationRest(l.apiName,l.version,l.restName,function(a,b){return a?void console.log("Error getting the authorization data"):void(l.auth=b)})}var l=this;l.apiName=c.api,l.version=c.ver,l.restName=c.rest,l.httpMethods=["GET","POST","PUT","PATCH","DELETE"],l.disabled=!e.isLastVersion(l.version,l.apiName),l.selectHydrator=function(){},j(),k(),l.saveGeneral=function(){l.loading=!0,l.adapter&&(l.rest.adapter_name=l.adapter.adapter_name),l.rest.collection_query_whitelist=l.tags.collection_query_whitelist.map(a.mapTagInput),l.rest.hydrator_name.name&&(l.rest.hydrator_name=l.rest.hydrator_name.name),a.updateGeneralRest(l.apiName,l.version,l.restName,l.rest,l.isDoctrine,function(a,b){return l.loading=!1,a?void(l.alert=b):void 0})},l.resetGeneral=function(){j()},l.newDoctrineStrategyModal=function(){var a=b.open({templateUrl:"apigility-ui/modal/new-doctrinestrategy.html",controller:"NewDoctrineStrategy",controllerAs:"vm",resolve:{fields:function(){var a=[];return angular.forEach(l.doctrineMetadata.fieldNames,function(b){a[b]=b}),a}}});a.result.then(function(a){l.rest.strategies[a.field]=a.strategy})},l.removeStrategy=function(a){delete l.rest.strategies[a]},l.hasProperties=function(a){for(var b in a)if(a.hasOwnProperty(b))return!0;return!1},l.saveContentNegotiation=function(){l.loading=!0,l.rest.accept_whitelist=l.tags.accept_whitelist.map(a.mapTagInput),l.rest.content_type_whitelist=l.tags.content_type_whitelist.map(a.mapTagInput),a.updateContentNegotiationRest(l.apiName,l.version,l.restName,l.rest,function(a,b){return l.loading=!1,a?void(l.alert=b):void 0})},l.resetContentNegotiation=function(){j()},l.saveAuthorization=function(){l.loading=!0,a.saveAuthorizationRest(l.apiName,l.version,l.restName,l.auth,function(a,b){return l.loading=!1,a?void(l.alert=b):void 0})},l.resetAuthorization=function(){k()},l.saveDocumentation=function(){a.saveRestDoc(l.apiName,l.version,l.restName,l.rest.documentation,function(a,b){return l.loading=!1,a?void(l.alert=b):void 0})},l.resetDocumentation=function(){j()},l.deleteRestModal=function(){var a=b.open({templateUrl:"apigility-ui/modal/delete-rest.html",controller:"DeleteRest",controllerAs:"vm",resolve:{isDoctrine:function(){return void 0!==l.rest.object_manager}}});a.result.then(function(a){e.removeRestService(a.api,a.service),f.go("ag.apimodule",{api:a.api,ver:a.version},{reload:!0})})},l.newFieldModal=function(){var a=b.open({templateUrl:"apigility-ui/modal/new-field.html",controller:"NewField",controllerAs:"vm",resolve:{fields:function(){return l.rest.fields},type:function(){return"rest"}}});a.result.then(function(a){l.rest.fields=a})},l.editFieldModal=function(a){var c=b.open({templateUrl:"apigility-ui/modal/edit-field.html",controller:"EditField",controllerAs:"vm",resolve:{field:function(){return a},fields:function(){return l.rest.fields},type:function(){return"rest"}}});c.result.then(function(a){l.rest.fields=a})},l.deleteFieldModal=function(a){var c=b.open({templateUrl:"apigility-ui/modal/delete-field.html",controller:"DeleteField",controllerAs:"vm",resolve:{field:function(){return a},fields:function(){return l.rest.fields},type:function(){return"rest"}}});c.result.then(function(a){l.rest.fields=a})},l.addValidatorModal=function(a){var c=b.open({templateUrl:"apigility-ui/modal/add-validator.html",controller:"AddValidator",controllerAs:"vm",resolve:{field:function(){return a},fields:function(){return l.rest.fields},type:function(){return"rest"}}});c.result.then(function(a){l.rest.fields=a})},l.editValidatorModal=function(a,c){var d=b.open({templateUrl:"apigility-ui/modal/edit-validator.html",controller:"EditValidator",controllerAs:"vm",resolve:{field:function(){return a},validator:function(){return c},fields:function(){return l.rest.fields},type:function(){return"rest"}}});d.result.then(function(a){l.rest.fields=a})},l.addFilterModal=function(a){var c=b.open({templateUrl:"apigility-ui/modal/add-filter.html",controller:"AddFilter",controllerAs:"vm",resolve:{field:function(){return a},fields:function(){return l.rest.fields},type:function(){return"rest"}}});c.result.then(function(a){l.rest.fields=a})},l.editFilterModal=function(a,c){var d=b.open({templateUrl:"apigility-ui/modal/edit-filter.html",controller:"EditFilter",controllerAs:"vm",resolve:{field:function(){return a},filter:function(){return c},fields:function(){return l.rest.fields},type:function(){return"rest"}}});d.result.then(function(a){l.rest.fields=a})},l.getSourceCode=function(b){a.getSourceCode(l.apiName,b,function(a,b){l.sourcecode=h.trustAsHtml(b.source),l.file=b.file})},l.generateFromConfiguration=function(a,b,c){return i.fromConfiguration(a,b,c,l.rest.fields,l.tags.accept_whitelist,l.rest.route_match,l.rest.collection_name)}}angular.module("apigility.rest").controller("Rest",a),a.$inject=["api","$modal","$stateParams","$rootScope","SidebarService","$state","$scope","$sce","documentation"]}(),function(){"use strict";angular.module("apigility.rpc",["ui.router"])}(),function(){"use strict";function a(a){a.state("ag.rpc",b)}angular.module("apigility.rpc").config(a);var b={url:"/module/:api/:ver/rpc/:rpc",views:{"content@":{templateUrl:"apigility-ui/rpc/rpc.html",controller:"Rpc",controllerAs:"vm"}}};a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b,c,d,e,f,g,h,i){function j(){l.tags={accept_whitelist:[],content_type_whitelist:[]},a.getRpc(l.apiName,l.version,l.rpcName,function(b,c){return b?void(l.alert="The RPC service doesn't exist. Try to choose a different version!"):(l.rpc=c,l.serviceName=l.rpc.service_name,l.rpc.accept_whitelist.forEach(function(a){l.tags.accept_whitelist.push({text:a})}),l.rpc.content_type_whitelist.forEach(function(a){l.tags.content_type_whitelist.push({text:a})}),l.rpc.source_code=[{name:"Controller Class",classname:l.rpc.controller_class},{name:"Controller Factory",classname:l.rpc.controller_class+"Factory"}],l.getSourceCode(l.rpc.source_code[0].classname),l.source=l.rpc.source_code[0],void a.getContentNegotiation(function(a){l.content_negotiation=a;for(var b in a)l.selectorNames.push(a[b].content_name)}))})}function k(){a.getAuthorizationRpc(l.apiName,l.version,l.rpcName,function(a,b){return a?void console.log("Error getting the authorization data"):void(l.auth=b)})}var l=this;l.apiName=c.api,l.version=c.ver,l.rpcName=c.rpc,l.httpMethods=["GET","POST","PUT","PATCH","DELETE"],l.disabled=!e.isLastVersion(l.version,l.apiName),l.selectorNames=[],j(),k(),l.saveGeneral=function(){l.loading=!0,l.rpc.accept_whitelist=l.tags.accept_whitelist.map(a.mapTagInput),l.rpc.content_type_whitelist=l.tags.content_type_whitelist.map(a.mapTagInput),a.updateGeneralRpc(l.apiName,l.version,l.rpcName,l.rpc,function(a,b){return l.loading=!1,a?void(l.alert=b):void 0})},l.resetGeneral=function(){j()},l.saveAuthorization=function(){l.loading=!0,a.saveAuthorizationRpc(l.apiName,l.version,l.rpcName,l.auth,function(a,b){return l.loading=!1,a?void(l.alert=b):void 0})},l.resetAuthorization=function(){k()},l.saveDocumentation=function(){l.loading=!0,a.saveRpcDoc(l.apiName,l.version,l.rpcName,l.rpc.documentation,function(a,b){return l.loading=!1,a?(error=!0,void(l.alert=b)):void 0})},l.resetDocumentation=function(){j()},l.deleteRpcModal=function(){var a=b.open({templateUrl:"apigility-ui/modal/delete-rpc.html",controller:"DeleteRpc",controllerAs:"vm"});a.result.then(function(a){e.removeRpcService(a.api,a.service),f.go("ag.apimodule",{api:a.api,ver:a.version},{reload:!0})})},l.newFieldModal=function(){var a=b.open({templateUrl:"apigility-ui/modal/new-field.html",controller:"NewField",controllerAs:"vm",resolve:{fields:function(){return l.rpc.fields},type:function(){return"rpc"}}});a.result.then(function(a){l.rpc.fields=a})},l.editFieldModal=function(a){var c=b.open({templateUrl:"apigility-ui/modal/edit-field.html",controller:"EditField",controllerAs:"vm",resolve:{field:function(){return a},fields:function(){return l.rpc.fields},type:function(){return"rpc"}}});c.result.then(function(a){l.rpc.fields=a})},l.deleteFieldModal=function(a){var c=b.open({templateUrl:"apigility-ui/modal/delete-field.html",controller:"DeleteField",controllerAs:"vm",resolve:{field:function(){return a},fields:function(){return l.rpc.fields},type:function(){return"rpc"}}});c.result.then(function(a){l.rpc.fields=a})},l.addValidatorModal=function(a){var c=b.open({templateUrl:"apigility-ui/modal/add-validator.html",controller:"AddValidator",controllerAs:"vm",resolve:{field:function(){return a},fields:function(){return l.rpc.fields},type:function(){return"rpc"}}});c.result.then(function(a){l.rpc.fields=a})},l.editValidatorModal=function(a,c){var d=b.open({templateUrl:"apigility-ui/modal/edit-validator.html",controller:"EditValidator",controllerAs:"vm",resolve:{field:function(){return a},validator:function(){return c},fields:function(){return l.rpc.fields},type:function(){return"rpc"}}});d.result.then(function(a){l.rpc.fields=a})},l.addFilterModal=function(a){var c=b.open({templateUrl:"apigility-ui/modal/add-filter.html",controller:"AddFilter",controllerAs:"vm",resolve:{field:function(){return a},fields:function(){return l.rpc.fields},type:function(){return"rpc"}}});c.result.then(function(a){l.rpc.fields=a})},l.editFilterModal=function(a,c){var d=b.open({templateUrl:"apigility-ui/modal/edit-filter.html",controller:"EditFilter",controllerAs:"vm",resolve:{field:function(){return a},filter:function(){return c},fields:function(){return l.rpc.fields},type:function(){return"rpc"}}});d.result.then(function(a){l.rpc.fields=a})},l.getSourceCode=function(b){a.getSourceCode(l.apiName,b,function(a,b){l.sourcecode=h.trustAsHtml(b.source),l.file=b.file})},l.generateFromConfiguration=function(a,b){return i.fromConfiguration(a,b,null,l.rpc.fields,l.tags.accept_whitelist,l.rpc.route_match,null)}}angular.module("apigility.rpc").controller("Rpc",a),a.$inject=["api","$modal","$stateParams","$rootScope","SidebarService","$state","$scope","$sce","documentation"]}(),function(){"use strict";angular.module("apigility.content-negotiation",["ui.router"])}(),function(){"use strict";function a(a){a.state("ag.content",b)}angular.module("apigility.content-negotiation").config(a);var b={url:"/content",views:{"content@":{templateUrl:"apigility-ui/content-negotiation/content-negotiation.html",controller:"ContentNegotiation",controllerAs:"vm"}}};a.$inject=["$stateProvider"]}(),function(){"use strict";function a(a,b){function c(a){for(var b=0;b-1,k[a]=g.entity.indexOf(a)>-1});var m={};m[f+"::__collection__"]=j,m[f+"::__entity__"]=k,a.save(b+"/module/"+l+"/authorization",m).then(function(a){return e.success("Authorization saved"),i(!1,a)}).catch(function(){return e.error("Unable to save authorization",{ttl:-1}),i(!0)})},this.getRestList=function(c,d,f){var g=this.normalizeModuleName(c);a.get(b+"/module/"+g+"/rest?version="+d,"_embedded").then(function(a){return a.rest.forEach(function(a){a.hasOwnProperty("_links")&&delete a._links}),f(a.rest)}).catch(function(a){return e.error("Unable to fetch REST services",{ttl:-1}),console.log("Failed to get the list of REST services",a),!1})},this.getRpcList=function(c,d,f){var g=this.normalizeModuleName(c);a.get(b+"/module/"+g+"/rpc?version="+d,"_embedded").then(function(a){return a.rpc.forEach(function(a){a.hasOwnProperty("_links")&&delete a._links}),f(a.rpc)}).catch(function(a){return e.error("Unable to fetch RPC services",{ttl:-1}),console.log("Failed to get the list of RPC services",a),!1})},this.getRest=function(c,d,f,g){var h=this.normalizeModuleName(c);a.get(b+"/module/"+h+"/rest/"+f).then(function(a){var b=angular.copy(a);b.fields=[];var c=0;if(a.hasOwnProperty("_embedded")){if(a._embedded.hasOwnProperty("input_filters"))for(;!angular.isUndefined(a._embedded.input_filters[0][c]);)b.fields[c]=a._embedded.input_filters[0][c],c++;a._embedded.hasOwnProperty("documentation")&&(delete a._embedded.documentation._links,b.documentation=a._embedded.documentation)}return delete b._links,delete b._embedded,g(b)}).catch(function(a){return e.error("Unable to fetch service",{ttl:-1}),console.log("Failed to get the REST service",a),!1})},this.getRestDoctrineMetadata=function(c,d,f){a.get(b+"/doctrine/"+c+"/metadata/"+encodeURIComponent(d)).then(function(a){return f(!1,a)}).catch(function(){return e.error("Unable to fetch Doctrine metadata",{ttl:-1}),f(!0,"I cannot retrieve entity metadata")})},this.getHydrators=function(c){a.get(b+"/hydrators","hydrators").then(function(a){return c(a)}).catch(function(a){return e.error("Unable to fetch hydrators",{ttl:-1}),console.log("Failed to get the list of Hydrators",a),!1})},this.getContentNegotiation=function(c){a.get(b+"/content-negotiation","_embedded").then(function(a){return a.selectors.forEach(function(a){delete a._links}),c(a.selectors)}).catch(function(a){return e.error("Unable to fetch content-negotiation details",{ttl:-1}),console.log("Failed to get the list of Content Negotiation",a),!1})},this.newSelector=function(c,d){var f=["content_name"];a.create(b+"/content-negotiation",[c],f).then(function(a){return e.success("Selector created"),delete a._links,d(!1,a)}).catch(function(){return e.error("Unable to create content-negotiation selector",{ttl:-1}),d(!0,"I cannot create the Selector, please enter a valid name (alpha characters)")})},this.deleteSelector=function(c,d){a.remove(b+"/content-negotiation/"+c).then(function(a){return e.success("Content-negotiation selector deleted"),d(!1,a)}).catch(function(){return e.error("Unable to delete content-negotiation selector",{ttl:-1}),d(!0)})},this.saveSelector=function(c,d){var f=["selectors"],g=angular.copy(c);delete g.content_name,a.update(b+"/content-negotiation/"+c.content_name,[g],f).then(function(a){return e.success("Selector updated"),delete a._links,d(!1,a)}).catch(function(a){switch(a.status){case 422:if(a.data.hasOwnProperty("validation_messages")&&a.data.validation_messages.hasOwnProperty("selectors")&&a.data.validation_messages.selectors.hasOwnProperty("classNotFound"))return e.error("Unable to update selector due to validation errors",{ttl:-1}),d(!0,a.data.validation_messages.selectors.classNotFound)}return e.error("Error updating selector",{ttl:-1}),d(!0,"Error during the API communication")})},this.getValidators=function(c){a.get(b+"/validators","validators").then(function(a){return c(a)}).catch(function(a){return e.error("Unable to fetch validator list",{ttl:-1}),console.log("Failed to get the list of Validators",a),!1})},this.getFilters=function(c){a.get(b+"/filters","filters").then(function(a){return c(a)}).catch(function(a){return e.error("Unable to fetch filter list",{ttl:-1}),console.log("Failed to get the list of Filters",a),!1 +})},this.saveRestField=function(c,d,f,g,h){angular.forEach(g,function(a){a.hasOwnProperty("error_message")&&!a.error_message&&delete a.error_message});var i=this.normalizeModuleName(c);a.save(b+"/module/"+i+"/rest/"+f+"/input-filter",g).then(function(a){return e.success("Saved field"),delete a._links,delete a.input_filter_name,a=Object.keys(a).map(function(b){return a[b]}),h(!1,a)}).catch(function(){return e.error("Error saving field",{ttl:-1}),h(!0,"Error during the API communication")})},this.getAuthorizationRpc=function(c,d,f,g){var h=this.normalizeModuleName(c);a.get(b+"/module/"+h+"/authorization").then(function(a){var b=[],c=a[f+"::"+f];for(var d in c)c[d]&&b.push(d);return g(!1,b)}).catch(function(a){return e.error("Unable to fetch authorization details",{ttl:-1}),g(!0,a.detail)})},this.saveAuthorizationRpc=function(c,d,f,g,i){var j={},k=this.normalizeModuleName(c);h.forEach(function(a){j[a]=g.indexOf(a)>-1});var l={};l[f+"::"+f]=j,a.save(b+"/module/"+k+"/authorization",l).then(function(a){return e.success("Authorization updated"),i(!1,a)}).catch(function(){return e.error("Error saving authorization details",{ttl:-1}),i(!0)})},this.saveRpcField=function(c,d,f,g,h){angular.forEach(g,function(a){a.hasOwnProperty("error_message")&&!a.error_message&&delete a.error_message});var i=this.normalizeModuleName(c);a.save(b+"/module/"+i+"/rpc/"+f+"/input-filter",g).then(function(a){return e.success("Field saved"),delete a._links,delete a.input_filter_name,a=Object.keys(a).map(function(b){return a[b]}),h(!1,a)}).catch(function(){return e.error("Error saving field",{ttl:-1}),h(!0,"Error during the API communication")})},this.saveRestDoc=function(c,d,f,g,h){var i=this.normalizeModuleName(c);a.save(b+"/module/"+i+"/rest/"+f+"/doc",g).then(function(a){return e.success("Documentation saved"),delete a._links,h(!1,a)}).catch(function(){return e.error("Error saving documentation",{ttl:-1}),h(!0,"Error during the API communication")})},this.saveRpcDoc=function(c,d,f,g,h){var i=this.normalizeModuleName(c);a.save(b+"/module/"+i+"/rpc/"+f+"/doc",g).then(function(a){return e.success("Documentation saved"),delete a._links,h(!1,a)}).catch(function(){return e.error("Error saving documentation",{ttl:-1}),h(!0,"Error during the API communication")})},this.newRpc=function(c,d,f,g){var h=["service_name","route_match"],i=this.normalizeModuleName(c);a.create(b+"/module/"+i+"/rpc",[d,f],h).then(function(a){return e.success("Service created"),g(!1,a)}).catch(function(a){switch(e.error("Error creating service",{ttl:-1}),a.status){case 409:return g(!0,"The service already exists; please choose a different name")}return g(!0,"Error creating service (Code: "+a.status+"): "+a.data.detail)})},this.getRpc=function(c,d,f,g){var h=this.normalizeModuleName(c);a.get(b+"/module/"+h+"/rpc/"+f).then(function(a){var b=angular.copy(a);b.fields=[];var c=0;if(a._embedded){if(a._embedded.input_filters)for(;!angular.isUndefined(a._embedded.input_filters[0][c]);)b.fields[c]=a._embedded.input_filters[0][c],c++;a._embedded.documentation&&(delete a._embedded.documentation._links,b.documentation=a._embedded.documentation)}return delete b._links,delete b._embedded,g(!1,b)}).catch(function(){return e.error("Unable to fetch service",{ttl:-1}),g(!0,"Error getting the RPC service")})},this.updateGeneralRpc=function(c,d,f,h,i){var j=this.normalizeModuleName(c),k=["accept_whitelist","content_type_whitelist","controller_class","http_methods","route_match","selector","service_name"],l=g(h,k);a.update(b+"/module/"+j+"/rpc/"+f,l.value,l.key).then(function(a){return e.success("Service updated"),i(!1,a)}).catch(function(a){return a.data.detail?e.error(a.data.detail,{ttl:-1}):e.error("Error updating service",{ttl:-1}),i(!0,"Error during the update of the RPC service")})},this.deleteRpc=function(c,d,f,g,h){var i=this.normalizeModuleName(c);a.remove(b+"/module/"+i+"/rpc/"+f+"?recursive="+(g?1:0)).then(function(a){return e.success("Service deleted"),h(!1,a)}).catch(function(){return e.error("Error deleting service",{ttl:-1}),h(!0)})},this.getAuthentication=function(c){a.get(b+"/authentication").then(function(a){return a.hasOwnProperty("_links")&&delete a._links,c(!1,a)}).catch(function(){return e.error("Unable to fetch authentication details",{ttl:-1}),c(!0,null)})},this.addBasicAuthentication=function(c,d){var f=["accept_schemes","htpasswd","realm"];c.hasOwnProperty("accept_schemes")||(c.accept_schemes=[]),c.accept_schemes.push("basic"),a.create(b+"/authentication/http-basic",[c.accept_schemes,c.htpasswd,c.realm],f).then(function(a){return e.success("HTTP Basic authentication adapter created"),a.hasOwnProperty("_links")&&delete a._links,d(!1,a)}).catch(function(){return e.error("Error creating HTTP Basic authentication adapter",{ttl:-1}),d(!0,null)})},this.saveBasicAuthentication=function(c,d){var f=["htpasswd","realm"];a.update(b+"/authentication/http-basic",[c.htpasswd,c.realm],f).then(function(a){return e.success("Authentication updated"),a.hasOwnProperty("_links")&&delete a._links,d(!1,a)}).catch(function(a){switch(a.status){case 422:return e.error("Unable to update authentication due to validation errors",{ttl:-1}),d(!0,a.validation_messages.htpasswd[0])}return e.error("Unable to update authentication",{ttl:-1}),d(!0,"Error saving the basic authentication")})},this.getApiDocumentList=function(c){a.get(b+"/../documentation").then(function(a){return c(!1,a)}).catch(function(){return e.error("Unable to fetch documentation",{ttl:-1}),c(!0,null)})},this.getApiDocument=function(c,d,f){var g=this.normalizeModuleName(c);a.get(b+"/../documentation/"+g+"-v"+d).then(function(a){return f(!1,a)}).catch(function(){return e.error("Unable to fetch documentation",{ttl:-1}),f(!0,null)})},this.getDatabase=function(c){a.get(b+"/db-adapter","_embedded").then(function(a){return a.db_adapter.forEach(function(a){delete a._links}),c(!0,a)}).catch(function(){return e.error("Unable to fetch database adapters",{ttl:-1}),c(!0,null)})},this.addDatabase=function(c,d){var f=["adapter_name","charset","database","driver","hostname","username","password","port","dsn","driver_options"],h=g(c,f);a.create(b+"/db-adapter",h.value,h.key).then(function(a){return e.success("Database adapter created"),a.hasOwnProperty("_links")&&delete a._links,d(!1,a)}).catch(function(){return e.error("Error creating database adapter",{ttl:-1}),d(!0,null)})},this.saveDatabase=function(c,d){var f=["charset","database","driver","hostname","username","password","port","dsn","driver_options"],h=g(c,f);a.update(b+"/db-adapter/"+c.adapter_name,h.value,h.key).then(function(a){return e.success("Database adapter updated"),a.hasOwnProperty("_links")&&delete a._links,d(!1,a)}).catch(function(){return e.error("Error updating database adapter",{ttl:-1}),d(!0,null)})},this.deleteDatabase=function(c,d){a.remove(b+"/db-adapter/"+c).then(function(a){return e.success("Database adapter removed"),d(!1,a)}).catch(function(){return e.error("Error removing database adapter",{ttl:-1}),d(!0)})},this.autodiscover=function(c,d,f,g,h){var i=f?"doctrine/":"",j=this.normalizeModuleName(c);a.get(b+"/module/"+j+"/"+d+"/autodiscovery/"+i+g).then(function(a){return h(!0,a)}).catch(function(a){return a.data.detail?e.error(a.data.detail,{ttl:-1}):f?e.error("Error getting Doctrine service(s)",{ttl:-1}):e.error("Error getting db service(s)",{ttl:-1}),h(!0,null)})},this.newDbConnected=function(c,d,f,g){var h=["adapter_name","table_name"],i=this.normalizeModuleName(c);a.create(b+"/module/"+i+"/rest",[d,f],h).then(function(a){return e.success("DB-Connected service(s) created"),g(!1,a)}).catch(function(a){switch(e.error("Error creating DB-Connected service(s)",{ttl:-1}),a.status){case 500:return g(!0,"I cannot create the DB-Connected service, please check if already exists")}return g(!0,"I cannot create the DB-Connected service, please check your database server")})},this.getDoctrineAdapters=function(a){var f,g={method:"GET",url:b+"/doctrine-adapter",headers:{Accept:"application/json"},cache:!1},h=d.defer(),i=c(g),j="_embedded";i.then(function(b){if(204==b.status)return a(!0,b.status);var c=b.data;return h.resolve(c[j]),c.hasOwnProperty(j)?(f=c[j],f.doctrine_adapter.forEach(function(a){delete a._links}),a(!1,f)):void 0}).catch(function(a){e.error("Unable to fetch Doctrine adapters",{ttl:-1}),h.reject(a)})},this.newDoctrine=function(c,d,f,g){var h=["object_manager","entity_class","service_name"],i=this.normalizeModuleName(c);a.create(b+"/module/"+i+"/doctrine/"+f.service_name,[d,f.entity_class,f.service_name],h).then(function(a){return e.success("Doctrine-connected service created"),g(!1,a)}).catch(function(a){switch(e.error("Error creating Doctrine-connected service",{ttl:-1}),a.status){case 500:return g(!0,"I cannot create the Doctrine-Connected service, please check if already exists")}return g(!0,"I cannot create the Doctrine-Connected service, please check your database server")})},this.newVersion=function(c,d){var f=["module"];a.update(b+"/versioning",[c],f).then(function(a){return e.success("New API version created"),d(!1,a)}).catch(function(){return e.error("Error creating new API version",{ttl:-1}),d(!0,null)})},this.setDefaultVersion=function(c,d,f){var g=["module","version"];a.update(b+"/default-version",[c,d],g).then(function(a){return e.success("API default version updated"),f(!1,a)}).catch(function(){return e.error("Error updating default API version",{ttl:-1}),f(!0,null)})},this.getSourceCode=function(c,d,f){var g=this.normalizeModuleName(c);a.get(b+"/source?module="+g+"&class="+d).then(function(a){return f(!1,a)}).catch(function(){return e.error("Error fetching source code",{ttl:-1}),f(!0,null)})},this.buildPackage=function(c,d,f){var g=["format","apis","composer","config","zpk_xml","zpk_assets","zpk_version"],h={};d.forEach(function(a){h[a.name]=c.modules.indexOf(a.name)>=0});var i=[c.format,h,c.composer,c.config];"zpk"===c.format&&i.push.apply(i,[c.zpk.xml,c.zpk.assets,c.zpk.version]),a.create(b+"/package",i,g).then(function(a){return a?(e.success("Package creation initiated"),f(!1,a)):(e.error("Error occurred when building package",{ttl:-1}),f(!0,"Error occurred building the package"))}).catch(function(){return e.error("Error occurred when building package",{ttl:-1}),f(!0,"Error occurred building the package")})},this.getAuthenticationAdapters=function(c){a.get(b+"/authentication","_embedded",2).then(function(a){return a.items.forEach(function(a){delete a._links}),c(!0,a.items)}).catch(function(){return e.error("Error fetching authentication adapters",{ttl:-1}),c(!0,null)})},this.addAuthenticationAdapter=function(c,d){for(var g=f(c),h=0;h\n
\n

Apigility {{vm.version}}

\n
\n
\n
\n \n
\n

Apigility is the open source API builder for PHP, designed to simplify creating and maintaining useful, easy to consume, and well structured APIs. Regardless of your experience in API building, with Apigility you can build APIs that enable mobile apps, developer communities, and any other consumer controlled access to your applications.

\n

Key features: RESTful or RPC services; JSON (specifically, HAL); Problem Details for HTTP APIs; Versioning; Normalisation and Validation; Authentication (HTTP Basic/Digest, OAuth2); Documentation (HTML, Swagger).

\n

Apigility is made using Zend Framework 2, AngularJS and Bootstrap.

\n

If you want to contribute you can fork the project on github.

\n

The official web site of the project is apigility.org.

\n
\n\n')}]),angular.module("apigility-ui/api-module/api-module.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/api-module/api-module.html",'
\n
\n

\n \n API: {{vm.apiName}} (v{{vm.version}})\n

\n
\n
\n \n
\n
\n

Authentication

\n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n

Version

\n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n

\n

REST

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Service nameURLDescription
{{rest.service_name}}{{rest.route_match}}\n Add a description for this service\n {{rest._embedded.documentation.description}}\n
\n No REST services, create a new one\n
\n
\n
\n

RPC

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Service nameURLDescription
{{rpc.service_name}}{{rpc.route_match}}\n Add a description for this service\n {{rpc._embedded.documentation.description}}\n
\n No RPC services, create a new one\n
\n
\n
\n
\n')}]),angular.module("apigility-ui/authentication/authentication.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/authentication/authentication.html",'
\n
\n

Authentication

\n
\n
\n
\n

Adapters

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameTypeOptionsActions
{{item.name}}{{item.type}} ({{item.oauth2_type}})\n \n {{option}} = {{value}}, \n Route: {{item.oauth2_route}}\n Route: {{item.route}}\n \n \n \n \n \n No actions for custom adapter\n \n
\n
\n
\n
\n')}]),angular.module("apigility-ui/content-negotiation/content-negotiation.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/content-negotiation/content-negotiation.html",'
\n
\n

Content Negotiation

\n
\n
\n
\n

Selectors

\n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameView modelAction
{{item.content_name}}\n \n {{viewmodel}}, \n No view models\n \n \n
\n
\n
\n
\n')}]),angular.module("apigility-ui/dashboard/dashboard.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/dashboard/dashboard.html",'
\n
\n
\n \n
\n\n
\n

Welcome to Apigility!

\n\n

\n Apigility is an API Builder, designed to simplify\n creating and maintaining useful, easy to consume, and well-structured\n APIs.
\n

\n\n

\n If this is the first time using Apigility we suggest\n you read the introduction or watch the getting started video.\n

\n
\n
\n
\n') +}]),angular.module("apigility-ui/database/database.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/database/database.html",'
\n
\n

Database

\n
\n
\n
\n

Database adapters

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameDriverDatabaseDriver optionsActions
{{item.adapter_name}}{{item.driver}}{{item.database}}\n \n {{option}} = {{value}}, \n \n \n
\n
\n
\n
\n

Doctrine adapters

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Adapter nameConfigurationEvent ManagerDriver classParams
{{item.adapter_name}}{{item.configuration}}{{item.eventmanager}}{{item.driverClass}}
\n
\n
\n
\n
\n')}]),angular.module("apigility-ui/documentation/documentation-api.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/documentation/documentation-api.html",'
\n
\n \n \n \n

{{service.description}}

\n \n \n \n \n \n \n
\n \n
\n
\n
\n')}]),angular.module("apigility-ui/documentation/documentation-list.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/documentation/documentation-list.html",'\n \n \n \n \n \n \n \n \n \n \n
API nameVersions
{{api.name}}\n Ver. {{ver}}, \n
\n')}]),angular.module("apigility-ui/documentation/documentation-service.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/documentation/documentation-service.html",'\n {{http}} {{service.route_collection}}\n requires authentication\n \n

{{collection.description}}

\n

Fields

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FieldDescriptionRequired
{{field}}{{data.description}}  
\n
\n

Request

\n
\n

Headers

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
HeaderValue
Accept\n
{{type}}
\n
AuthenticationHTTP Basic, HTTP Digest, or OAuth2 Bearer token (check API provider for details)
\n

Body

\n
{{collection.request}}
\n
\n
\n
\n

Response

\n
\n

Status Codes

\n
    \n
  • {{status.code}}: {{status.message}}
  • \n
\n

Headers

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
HeaderValue
Content-Type\n
{{type}}
\n
AllowComma-separated list of all HTTP methods allowed
\n

Body

\n
{{collection.response}}
\n
\n
\n')}]),angular.module("apigility-ui/documentation/documentation.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/documentation/documentation.html",'
\n
\n

Documentation of {{vm.apiName}} (v{{vm.version}})

\n
\n
\n \n \n
\n
\n')}]),angular.module("apigility-ui/header/header.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/header/header.html",'\n')}]),angular.module("apigility-ui/modal/add-authoption.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/add-authoption.html",'\n\n\n')}]),angular.module("apigility-ui/modal/add-dboption.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/add-dboption.html",'\n\n\n')}]),angular.module("apigility-ui/modal/add-filter.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/add-filter.html",'\n\n\n')}]),angular.module("apigility-ui/modal/add-validator.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/add-validator.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-api.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-api.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-auth.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-auth.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-authoption.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-authoption.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-db.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-db.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-dboption.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-dboption.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-field.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-field.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-filter.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-filter.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-rest.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-rest.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-rpc.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-rpc.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-selector.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-selector.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-validator.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-validator.html",'\n\n\n')}]),angular.module("apigility-ui/modal/delete-viewmodel.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/delete-viewmodel.html",'\n\n\n')}]),angular.module("apigility-ui/modal/edit-auth.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/edit-auth.html",'\n\n\n') }]),angular.module("apigility-ui/modal/edit-authoption.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/edit-authoption.html",'\n\n\n')}]),angular.module("apigility-ui/modal/edit-db.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/edit-db.html",'\n\n\n')}]),angular.module("apigility-ui/modal/edit-dboption.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/edit-dboption.html",'\n\n\n')}]),angular.module("apigility-ui/modal/edit-field.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/edit-field.html",'\n\n\n')}]),angular.module("apigility-ui/modal/edit-filter.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/edit-filter.html",'\n\n\n')}]),angular.module("apigility-ui/modal/edit-validator.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/edit-validator.html",'\n\n\n')}]),angular.module("apigility-ui/modal/edit-viewmodel.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/edit-viewmodel.html",'\n\n\n')}]),angular.module("apigility-ui/modal/new-api.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/new-api.html",'\n\n\n')}]),angular.module("apigility-ui/modal/new-auth.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/new-auth.html",'\n\n\n')}]),angular.module("apigility-ui/modal/new-db.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/new-db.html",'\n\n\n')}]),angular.module("apigility-ui/modal/new-doctrinestrategy.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/new-doctrinestrategy.html",'\n\n\n')}]),angular.module("apigility-ui/modal/new-field.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/new-field.html",'\n\n\n')}]),angular.module("apigility-ui/modal/new-selector.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/new-selector.html",'\n\n\n')}]),angular.module("apigility-ui/modal/new-service.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/new-service.html",'\n\n\n') }]),angular.module("apigility-ui/modal/new-version.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/new-version.html",'\n\n\n')}]),angular.module("apigility-ui/modal/new-viewmodel.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/new-viewmodel.html",'\n\n\n')}]),angular.module("apigility-ui/modal/view-doctrineparams.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/modal/view-doctrineparams.html",'\n\n\n')}]),angular.module("apigility-ui/package/package.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/package/package.html",'
\n
\n

Package

\n
\n
\n \n
\n

Package your API for deployment! This tool will build a deployment file in the format you specify (ZIP, TAR, TGZ or ZPK). For more information about deploying Apigility projects read the documentation.

\n
\n
\n \n
\n \n
\n
\n ZPK packages are for deployment on Zend Server\n
\n
\n
\n \n
\n \n {{api.name}}\n \n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
Zend Server ZPK options
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n Please wait, the building process can take some time (last build took {{vm.package.time}} sec)\n
\n
\n
\n
\n
\n')}]),angular.module("apigility-ui/rest/rest.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/rest/rest.html",'
\n
\n

\n \n REST service: {{vm.serviceName}} (v{{vm.version}})\n

\n
\n
\n \n \n
\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n \n
\n \n \n \n
\n
\n
\n \n
\n \n
\n \n
\n \n \n \n
\n
\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n \n
\n \n {{$select.selected}}\n \n
\n \n \n
\n
\n
\n \n
\n \n {{collection.text}}, \n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n \n
\n \n {{$select.selected}}\n \n
\n \n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FieldStrategy 
No hydrator strategy configured, create the first one
{{k}}{{v}}
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n \n
\n \n {{$select.selected}}\n \n
\n \n \n
\n
\n
\n \n
\n \n {{accept.text}}, \n
\n
\n
\n \n
\n \n {{content.text}}, \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n

Fields

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameRequiredValidatorFilterAction
{{field.name}}\n \n {{validator.name}}, \n No validators\n \n \n {{filter.name}}, \n No filters\n \n \n
\n No fields have been configured, create the first one\n
\n
\n
\n \n
\n

HTTP methods authorization

\n

In this page you can specify which HTTP methods to put under authentication, for your entity and collection service.\n You can choose only the HTTP methods available for the service, if you want to change it choose the General Settings option in the tab above.\n The authentication type is defined per API in this page.

\n
\n
\n \n
\n \n \n \n
\n
\n
\n \n
\n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n \n \n
\n \n
\n \n
\n
\n
\n \n \n
\n \n
\n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n
\n \n
\n \n
\n \n
\n
\n
\n \n \n
\n \n
\n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n
{{vm.file}}
\n
\n
\n
\n
\n
\n \n
\n') }]),angular.module("apigility-ui/rpc/rpc.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/rpc/rpc.html",'
\n
\n

\n \n RPC service: {{vm.serviceName}} (v{{vm.version}})\n

\n
\n
\n \n \n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n \n \n
\n
\n
\n \n
\n \n {{$select.selected}}\n \n
\n \n \n
\n
\n
\n \n
\n \n {{accept.text}}, \n
\n
\n
\n \n
\n \n {{accept.text}}, \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n

Fields

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameRequiredValidatorFilterAction
{{field.name}}\n \n {{validator.name}}, \n No validators\n \n \n {{filter.name}}, \n No filters\n \n \n
\n No fields have been configured, create the first one\n
\n
\n
\n \n
\n

HTTP methods authorization

\n

In this page you can specify which HTTP methods to put under authentication. You can choose only the HTTP methods available for the service, if you want to change it choose the General Settings option in the tab above.\n The authentication type is defined per API in this page.

\n
\n
\n \n
\n \n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n \n \n
\n \n
\n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n \n
\n \n \n
\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n
{{vm.file}}
\n
\n
\n
\n
\n
\n
\n')}]),angular.module("apigility-ui/sidebar/sidebar.html",[]).run(["$templateCache",function(a){a.put("apigility-ui/sidebar/sidebar.html",'\n\n
\n
\n API LIST\n Loading...\n \n \n
\n
\n\n
\n
    \n
  1. \n
    \n \n \n \n {{item.name}} - version \n {{item.rest.length + item.rpc.length}}\n
    \n
      \n
    1. \n \n
    2. \n
    3. \n \n
    4. \n
    \n
  2. \n
\n
\n\n\n\n\n')}]); \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 6410726..9d9c514 100644 --- a/dist/index.html +++ b/dist/index.html @@ -44,7 +44,7 @@ - +