Anthony Lapenna
2189deb3bd
chore(version): bump version number
2019-12-04 17:05:36 +13:00
Anthony Lapenna
a42619a442
fix(api): fix invalid extensions.json location
2019-12-04 11:42:43 +13:00
xAt0mZ
e19bc8abc7
fix(app): registry push-pull features overhaul ( #3393 )
...
* feat(registry): registry or direct url selector
* feat(app): push pull container creation
* feat(app): push pull container duplicate
* feat(app): push pull container details recreate
* feat(app): push pull container details commit
* feat(app): push pull images
* feat(app): push pull image tag
* feat(app): push pull image push
* feat(app): push pull image pull
* feat(app): push pull service creation
* feat(app): push pull templates create container
* feat(app): push pull templates create stacks
* feat(app): push pull template edit
* feat(app): push pull service details update
* fix(app): refactor registry selector + registry auto select
* feat(app): remove autocomplete on registry selector
* style(image-registry): reword simple/advanced mode
* Revert "feat(app): remove autocomplete on registry selector"
This reverts commit 97ec2ddd62
.
* refactor(registry-selector): reverse registry and image fields
* feat(app): autocomplete on registry selector
* feat(registry-selector): change gitlab registry autocomplete
* feat(registry-selector): autocomplete for dockerhub
* feat(registry-selector): gitlab url based on locked value instead of name
* fix(registry-selector): gitlab registries URL are not modified anymore
* fix(registry-selector): change gitlab image autofill on duplicate
* fix(registry-selector): gitlab registries now only suggest their own images and not all from gitlab
* fix(registry-selector): psuh pull issues with gitlab registries
* fix(registry-selector): dockerhub registry selection on duplicate for dockerhub images
* fix(templates): registry retrieval for template
* feat(images): add autocomplete on image pull panel
* fix(registry-selector): add latest tag when no tag is specified
* fix(registry-selector): latest tag now applied for non gitlab registries
2019-11-28 11:36:39 +13:00
Anthony Lapenna
a85f0058ee
feat(extensions): add the ability to upload and enable an extension ( #3345 )
...
* feat(extensions): offline mode mockup
* feat(extensions): offline mode mockup
* feat(api): add support for extensionUpload API operation
* feat(extensions): offline extension upload
* feat(api): better support for extensions in offline mode
* feat(extension): update offline description
* feat(api): introduce local extension manifest
* fix(api): fix LocalExtensionManifestFile value
* feat(api): use a 5second timeout for online extension infos
* feat(extensions): add download archive link
* feat(extensions): add support for offline update
* fix(api): fix issues with offline install and online updates of extensions
* fix(extensions): fix extensions link URL
* fix(extension): hide screenshot in offline mode
2019-11-20 18:16:40 +13:00
Anthony Lapenna
8b0eb71d69
feat(api): automatically update extensions at startup ( #3349 )
...
* feat(api): automatically update extensions at startup
* feat(api): review updateAndStartExtensions
2019-11-20 18:02:07 +13:00
Anthony Lapenna
81c0bf0632
fix(api): introduce priority based logic for RBAC roles ( #3374 )
...
* fix(api): introduce priority based logic for RBAC roles
* refactor(api): rename method
2019-11-18 21:22:47 +13:00
Anthony Lapenna
19d4db13be
feat(api): rewrite access control management in Docker ( #3337 )
...
* feat(api): decorate Docker resource creation response with resource control
* fix(api): fix a potential resource control conflict between stacks/volumes
* feat(api): generate a default private resource control instead of admin only
* fix(api): fix default RC value
* fix(api): update RC authorizations check to support admin only flag
* refactor(api): relocate access control related methods
* fix(api): fix a potential conflict when fetching RC from database
* refactor(api): refactor access control logic
* refactor(api): remove the concept of DecoratedStack
* feat(api): automatically remove RC when removing a Docker resource
* refactor(api): update filter resource methods documentation
* refactor(api): update proxy package structure
* refactor(api): renamed proxy/misc package
* feat(api): re-introduce ResourceControlDelete operation as admin restricted
* refactor(api): relocate default endpoint authorizations
* feat(api): migrate RBAC data
* feat(app): ResourceControl management refactor
* fix(api): fix access control issue on stack deletion and automatically delete RC
* fix(api): fix stack filtering
* fix(api): fix UpdateResourceControl operation checks
* refactor(api): introduce a NewTransport builder method
* refactor(api): inject endpoint in Docker transport
* refactor(api): introduce Docker client into Docker transport
* refactor(api): refactor http/proxy package
* feat(api): inspect a Docker resource labels during access control validation
* fix(api): only apply automatic resource control creation on success response
* fix(api): fix stack access control check
* fix(api): use StatusCreated instead of StatusOK for automatic resource control creation
* fix(app): resource control fixes
* fix(api): fix an issue preventing administrator to inspect a resource with a RC
* refactor(api): remove useless error return
* refactor(api): document DecorateStacks function
* fix(api): fix invalid resource control type for container deletion
* feat(api): support Docker system networks
* feat(api): update Swagger docs
* refactor(api): rename transport variable
* refactor(api): rename transport variable
* feat(networks): add system tag for system networks
* feat(api): add support for resource control labels
* feat(api): upgrade to DBVersion 22
* refactor(api): refactor access control management in Docker proxy
* refactor(api): re-implement docker proxy taskListOperation
* refactor(api): review parameters declaration
* refactor(api): remove extra blank line
* refactor(api): review method comments
* fix(api): fix invalid ServerAddress property and review method visibility
* feat(api): update error message
* feat(api): update restrictedVolumeBrowserOperation method
* refactor(api): refactor method parameters
* refactor(api): minor refactor
* refactor(api): change Azure transport visibility
* refactor(api): update struct documentation
* refactor(api): update struct documentation
* feat(api): review restrictedResourceOperation method
* refactor(api): remove unused authorization methods
* feat(api): apply RBAC when enabled on stack operations
* fix(api): fix invalid data migration procedure for DBVersion = 22
* fix(app): RC duplicate on private resource
* feat(api): change Docker API version logic for libcompose/client factory
* fix(api): update access denied error message to be Docker API compliant
* fix(api): update volume browsing authorizations data migration
* fix(api): fix an issue with access control in multi-node agent Swarm cluster
2019-11-13 12:41:42 +13:00
xAt0mZ
198e92c734
feat(registry): gitlab support ( #3107 )
...
* feat(api): gitlab registry type
* feat(registries): early support for gitlab registries
* feat(app): registry service selector
* feat(registry): gitlab support : list repositories and tags - remove features missing
* feat(registry): gitlab registry remove features
* feat(registry): gitlab switch to registry V2 API for repositories and tags
* feat(api): use development extension binary
* fix(registry): avoid 401 on gitlab retrieve to disconnect the user
* feat(registry): gitlab browse projects without extension
* style(app): code cleaning
* refactor(app): PR review changes + refactor on types
* fix(gitlab): remove gitlab info from registrymanagementconfig and force gitlab type
* style(api): go fmt
* feat(api): update APIVersion and ExtensionDefinitionsURL
* fix(api): fix invalid RM extension URL
* feat(registry): PAT scope help
* feat(registry): defaults on registry creation
* style(registry-creation): update layout and text for Gitlab registry
* feat(registry-creation): update gitlab notice
2019-11-12 16:28:31 +13:00
Anthony Lapenna
0175490161
fix(api): data migration to update default Portainer authorizations ( #3314 )
2019-10-31 12:12:04 +13:00
Anthony Lapenna
4fad28590d
chore(version): bump version number
2019-10-11 10:40:41 +13:00
Anthony Lapenna
ab2acea463
feat(app): add externally sourced support options ( #3249 )
...
* feat(app): add externally sourced support options
* refactor(api): rename struct fields
2019-10-10 10:59:27 +13:00
Anthony Lapenna
182f3734d0
fix(api): fix an issue with unsupported cron format ( #3240 )
...
* fix(api): fix an issue with unsupported cron format
* refactor(api): review migration method
2019-10-08 16:18:32 +13:00
Anthony Lapenna
9aa52a6975
feat(settings): add new settings to disable volume browser ( #3239 )
...
* feat(settings): add new settings to disable volume browser
* feat(api): update setting to be compliant with RBAC
* refactor(api): update method comment
* fix(api): remove volume browsing authorizations by default
* feat(settings): rewrite volume management setting description
* feat(settings): rewrite volume management setting tooltip
* Update app/portainer/views/settings/settings.html
Co-Authored-By: William <william.conquest@portainer.io>
2019-10-08 13:17:58 +13:00
Anthony Lapenna
ea05d96c73
feat(sidebar): add update notification ( #3196 )
...
* feat(sidebar): add update notification
* style(sidebar): update notification color palette
* refactor(api): rollback to latest version
* feat(sidebar): update style
* style(sidebar): fix color override
2019-09-26 08:38:11 +12:00
Anthony Lapenna
7d76bc89e7
feat(api): relocate authorizations outside of JWT ( #3079 )
...
* feat(api): relocate authorizations outside of JWT
* fix(api): update user authorization after enabling the RBAC extension
* feat(api): add PortainerEndpointList operation in the default portainer authorizations
* feat(auth): retrieve authorization from API instead of JWT
* refactor(auth): move permissions retrieval to function
* refactor(api): document authorizations methods
2019-09-10 10:58:26 +12:00
Anthony Lapenna
8cb18f9877
chore(version): bump version number
2019-07-26 14:01:49 +12:00
Anthony Lapenna
12a512f01f
feat(edge): introduce support for Edge agent ( #3031 )
...
* feat(edge): fix webconsole and agent deployment command
* feat(edge): display agent features when connected to IoT endpoint
* feat(edge): add -e CAP_HOST_MANAGEMENT=1 to agent command
* feat(edge): add -v /:/host and --name portainer_agent_iot to agent command
* style(endpoint-creation): refactor IoT agent to Edge agent
* refactor(api): rename AgentIoTEnvironment to AgentEdgeEnvironment
* refactor(api): rename AgentIoTEnvironment to AgentEdgeEnvironment
* feat(endpoint-creation): update Edge agent deployment instructions
* feat(edge): wip edge
* feat(edge): refactor key creation
* feat(edge): update deployment instructions
* feat(home): update Edge agent endpoint item
* feat(edge): support dynamic ports
* feat(edge): support sleep/wake and snapshots
* feat(edge): support offline mode
* feat(edge): host job support for Edge endpoints
* feat(edge): introduce STANDBY state
* feat(edge): update Edge agent deployment command
* feat(edge): introduce EDGE_ID support
* feat(edge): update default inactivity interval to 5min
* feat(edge): reload Edge schedules after restart
* fix(edge): fix execution of endpoint job against an Edge endpoint
* fix(edge): fix minor issues with scheduling UI/UX
* feat(edge): introduce EdgeSchedule version management
* feat(edge): switch back to REQUIRED state from ACTIVE on error
* refactor(edge): remove comment
* feat(edge): updated tunnel status management
* feat(edge): fix flickering UI when accessing Edge endpoint from home view
* feat(edge): remove STANDBY status
* fix(edge): fix an issue with console and Swarm endpoint
* fix(edge): fix an issue with stack deployment
* fix(edge): reset timer when applying active status
* feat(edge): add background ping for Edge endpoints
* fix(edge): fix infinite loading loop after Edge endpoint connection failure
* fix(home): fix an issue with merge
* feat(api): remove SnapshotRaw from EndpointList response
* feat(api): add pagination for EndpointList operation
* feat(api): rename last_id query parameter to start
* feat(api): implement filter for EndpointList operation
* fix(edge): prevent a pointer issue after removing an active Edge endpoint
* feat(home): front - endpoint backend pagination (#2990 )
* feat(home): endpoint pagination with backend
* feat(api): remove default limit value
* fix(endpoints): fix a minor issue with column span
* fix(endpointgroup-create): fix an issue with endpoint group creation
* feat(app): minor loading optimizations
* refactor(api): small refactor of EndpointList operation
* fix(home): fix minor loading text display issue
* refactor(api): document bolt services functions
* feat(home): minor optimization
* fix(api): replace seek with index scanning for EndpointPaginated
* fix(api): fix invalid starting index issue
* fix(api): first implementation of working filter
* fix(home): endpoints list keeps backend pagination when it needs to
* fix(api): endpoint pagination doesn't drop the first item on pages >=2 anymore
* fix(home): UI flickering on page/filter load/change
* feat(auth): login spinner
* feat(api): support searching in associated endpoint group data
* refactor(api): remove unused API endpoint
* refactor(api): remove comment
* refactor(api): refactor proxy manager
* feat(api): declare EndpointList params as optional
* feat(api): support groupID filter on endpoints route
* feat(api): add new API operations endpointGroupAddEndpoint and endpointGroupDeleteEndpoint
* feat(edge): new icon for Edge agent endpoint
* fix(edge): fix missing exec quick action
* fix(edge): add loading indicator when connecting to Edge endpoint
* feat(edge): disable service webhooks for Edge endpoints
* feat(endpoints): backend pagination for endpoints view (#3004 )
* feat(edge): dynamic loading for stack migration feature
* feat(edge): wordwrap edge key
* feat(endpoint-groups): backend pagination support for create and edit
* feat(endpoint-groups): debounce on filter for create/edit views
* feat(endpoint-groups): filter assigned on create view
* (endpoint-groups): unassigned endpoints edit view
* refactor(endpoint-groups): code clean
* feat(endpoint-groups): remove message for Unassigned group
* refactor(websocket): minor refactor associated to Edge agent
* feat(endpoint-group): enable backend pagination (#3017 )
* feat(api): support groupID filter on endpoints route
* feat(api): add new API operations endpointGroupAddEndpoint and endpointGroupDeleteEndpoint
* feat(endpoint-groups): backend pagination support for create and edit
* feat(endpoint-groups): debounce on filter for create/edit views
* feat(endpoint-groups): filter assigned on create view
* (endpoint-groups): unassigned endpoints edit view
* refactor(endpoint-groups): code clean
* feat(endpoint-groups): remove message for Unassigned group
* refactor(api): endpoint group endpoint association refactor
* refactor(api): rename files and remove comments
* refactor(api): remove usage of utils
* refactor(api): optional parameters
* Merge branch 'feat-endpoint-backend-pagination' into edge
# Conflicts:
# api/bolt/endpoint/endpoint.go
# api/http/handler/endpointgroups/endpointgroup_update.go
# api/http/handler/endpointgroups/handler.go
# api/http/handler/endpoints/endpoint_list.go
# app/portainer/services/api/endpointService.js
* fix(api): fix default tunnel server credentials
* feat(api): update endpointListOperation behavior and parameters
* fix(api): fix interface declaration
* feat(edge): support configurable Edge agent checkin interval
* feat(edge): support dynamic tunnel credentials
* feat(edge): update Edge agent deployment commands
* style(edge): update Edge agent settings text
* refactor(edge): remove unused credentials management methods
* feat(edge): associate a remote addr to tunnel credentials
* style(edge): update Edge endpoint icon
* feat(edge): support encrypted tunnel credentials
* fix(edge): fix invalid pointer cast
* feat(bolt): decode endpoints with jsoniter
* feat(edge): persist reverse tunnel keyseed
* refactor(edge): minor refactor
* feat(edge): update chisel library usage
* refactor(endpoint): use controller function
* feat(api): database migration to DBVersion 19
* refactor(api): refactor AddSchedule function
* refactor(schedules): remove comment
* refactor(api): remove comment
* refactor(api): remove comment
* feat(api): tunnel manager now only manage Edge endpoints
* refactor(api): clean-up and clarification of the Edge service
* refactor(api): clean-up and clarification of the Edge service
* fix(api): fix an issue with Edge agent snapshots
* refactor(api): add missing comments
* refactor(api): update constant description
* style(home): remove loading text on error
* feat(endpoint): remove 15s timeout for ping request
* style(home): display information about associated Edge endpoints
* feat(home): redirect to endpoint details on click on unassociated Edge endpoint
* feat(settings): remove 60s Edge poll frequency option
2019-07-26 10:38:07 +12:00
Anthony Lapenna
90d3f3a358
Enable endpoint backend pagination ( #2989 )
...
* feat(api): remove SnapshotRaw from EndpointList response
* feat(api): add pagination for EndpointList operation
* feat(api): rename last_id query parameter to start
* feat(api): implement filter for EndpointList operation
* feat(home): front - endpoint backend pagination (#2990 )
* feat(home): endpoint pagination with backend
* feat(api): remove default limit value
* fix(endpoints): fix a minor issue with column span
* fix(endpointgroup-create): fix an issue with endpoint group creation
* feat(app): minor loading optimizations
* refactor(api): small refactor of EndpointList operation
* fix(home): fix minor loading text display issue
* refactor(api): document bolt services functions
* feat(home): minor optimization
* fix(api): replace seek with index scanning for EndpointPaginated
* fix(api): fix invalid starting index issue
* fix(api): first implementation of working filter
* fix(home): endpoints list keeps backend pagination when it needs to
* fix(api): endpoint pagination doesn't drop the first item on pages >=2 anymore
* fix(home): UI flickering on page/filter load/change
* feat(api): support searching in associated endpoint group data
* feat(api): declare EndpointList params as optional
* feat(endpoints): backend pagination for endpoints view (#3004 )
* feat(endpoint-group): enable backend pagination (#3017 )
* feat(api): support groupID filter on endpoints route
* feat(api): add new API operations endpointGroupAddEndpoint and endpointGroupDeleteEndpoint
* feat(endpoint-groups): backend pagination support for create and edit
* feat(endpoint-groups): debounce on filter for create/edit views
* feat(endpoint-groups): filter assigned on create view
* (endpoint-groups): unassigned endpoints edit view
* refactor(endpoint-groups): code clean
* feat(endpoint-groups): remove message for Unassigned group
* refactor(api): endpoint group endpoint association refactor
* refactor(api): rename files and remove comments
* refactor(api): remove usage of utils
* refactor(api): optional parameters
* feat(api): update endpointListOperation behavior and parameters
* refactor(api): remove unused methods associated to EndpointService
* refactor(api): remove unused methods associated to EndpointService
* refactor(api): minor refactor
2019-07-20 16:28:11 -07:00
Anthony Lapenna
7a8a54c96a
refactor(api): introduce ExtensionServer constant
2019-06-23 11:36:45 +12:00
Anthony Lapenna
48281df41a
chore(version): bump version number
2019-06-04 15:51:11 +12:00
Anthony Lapenna
b4c16a1fb4
refactor(api): update ExtensionDefinitionsURL
2019-06-04 13:54:16 +12:00
Anthony Lapenna
50f547a6e7
feat(motd): add the ability to use custom style ( #2918 )
...
* feat(motd): rework motd display mechanism for more flexibility on motd content
* feat(api): enhance MOTD
* refactor(api): refactor MOTD related codebase
* feat(motd): hash on message
2019-06-02 18:16:43 +12:00
Anthony Lapenna
a2d29df21b
fix(rbac): add specific authorization for Storidge management
2019-05-27 10:41:12 +12:00
Anthony Lapenna
8057aa45c4
feat(extensions): introduce RBAC extension ( #2900 )
2019-05-24 18:04:58 +12:00
Anthony Lapenna
cb858f0412
chore(version): bump version number
2019-03-05 17:34:19 +13:00
Anthony Lapenna
2b31f489d9
feat(api): add support for an externally fetched title for motd ( #2755 )
...
* feat(api): add support for an externally fetched title for motd
* refactor(api): gofmt motd.go
* refactor(api): update go comment
2019-03-05 16:05:15 +13:00
Anthony Lapenna
0670079566
feat(api): update ExtensionDefinitionsURL
2019-03-04 13:46:27 +13:00
Anthony Lapenna
db0091b46d
feat(api): revert extension URLs to correct one
2019-03-01 13:58:55 +13:00
Anthony Lapenna
7643f8d08c
feat(oauth): dev build supporting Oauth extension
2019-02-18 14:46:34 +13:00
baron_l
2755527d28
feat(oauth): default team for user on oauth settings
2019-02-07 19:32:02 +01:00
Anthony Lapenna
508352f4ea
Merge branch 'develop' into oath-poc
2019-02-04 09:19:12 +13:00
Anthony Lapenna
6b1c476b63
chore(version): bump version number
2019-01-31 13:15:18 +13:00
Chaim Lev Ari
46e8f10aea
refactor(ouath): use oauth2 library to get token
2019-01-18 10:56:16 +02:00
Chaim Lev Ari
60040e90d0
refactor(oauth): move build url logic to service
2019-01-18 10:24:42 +02:00
Anthony Lapenna
54163e3b92
fix(extensions): fix an issue with extensions with expired licenses ( #2628 )
...
* fix(extensions): fix an issue with extensions with expired licenses
* fix(api): fix invalid log call
* fix(api): allow to re-enable an extension
2019-01-18 10:00:18 +13:00
Chaim Lev Ari
241a701eca
feat(oauth): merge pr from https://github.com/portainer/portainer/pull/2515
2018-12-30 18:02:22 +02:00
Anthony Lapenna
6b05a35881
fix(api): set a default value for potentially empty snapshot interval ( #2543 )
2018-12-12 21:16:44 +13:00
Anthony Lapenna
189d131105
chore(version): bump version number
2018-12-12 17:03:25 +13:00
Anthony Lapenna
8a186b4024
feat(api): update DigitalSignatureService ( #2539 )
2018-12-12 11:19:23 +13:00
Anthony Lapenna
5c2e714e69
style(extensions): minor update to extension UX/UI ( #2538 )
...
* style(extensions): update extension icons
* style(extensions): style update
* feat(extensions): update extension UX
* style(extensions): update extension style
* style(extension-details): update screenshot default size
* style(extensions): update overview diagram image
* refactor(support): fix support URLs
2018-12-12 10:28:21 +13:00
Anthony Lapenna
e440ba53cb
feat(api): migrate template data logo URLs ( #2537 )
2018-12-12 09:46:05 +13:00
Anthony Lapenna
6fd5ddc802
feat(extensions): introduce extension support ( #2527 )
...
* wip
* wip: missing repository & tags removal
* feat(registry): private registry management
* style(plugin-details): update view
* wip
* wip
* wip
* feat(plugins): add license info
* feat(plugins): browse feature preview
* feat(registry-configure): add the ability to configure registry management
* style(app): update text in app
* feat(plugins): add plugin version number
* feat(plugins): wip plugin upgrade process
* feat(plugins): wip plugin upgrade
* feat(plugins): add the ability to update a plugin
* feat(plugins): init plugins at startup time
* feat(plugins): add the ability to remove a plugin
* feat(plugins): update to latest plugin definitions
* feat(plugins): introduce plugin-tooltip component
* refactor(app): relocate plugin files to app/plugins
* feat(plugins): introduce PluginDefinitionsURL constant
* feat(plugins): update the flags used by the plugins
* feat(plugins): wip
* feat(plugins): display a label when a plugin has expired
* wip
* feat(registry-creation): update registry creation logic
* refactor(registry-creation): change name/ids for inputs
* feat(api): pass registry type to management configuration
* feat(api): unstrip /v2 in regsitry proxy
* docs(api): add TODO
* feat(store): mockup-1
* feat(store): mockup 2
* feat(store): mockup 2
* feat(store): update mockup-2
* feat(app): add unauthenticated event check
* update gruntfile
* style(support): update support views
* style(support): update product views
* refactor(extensions): refactor plugins to extensions
* feat(extensions): add a deal property
* feat(extensions): introduce ExtensionManager
* style(extensions): update extension details style
* feat(extensions): display license/company when enabling extension
* feat(extensions): update extensions views
* feat(extensions): use ProductId defined in extension schema
* style(app): remove padding left for form section title elements
* style(support): use per host model
* refactor(extensions): multiple refactors related to extensions mecanism
* feat(extensions): update tls file path for registry extension
* feat(extensions): update registry management configuration
* feat(extensions): send license in header to extension proxy
* fix(proxy): fix invalid default loopback address
* feat(extensions): add header X-RegistryManagement-ForceNew for specific operations
* feat(extensions): add the ability to display screenshots
* feat(extensions): center screenshots
* style(extensions): tune style
* feat(extensions-details): open full screen image on click (#2517 )
* feat(extension-details): show magnifying glass on images
* feat(extensions): support extension logo
* feat(extensions): update support logos
* refactor(lint): fix lint issues
2018-12-09 16:49:27 +13:00
baron_l
1a94158f77
* feat(UX): schedule creation UX overhaul ( #2485 )
...
* feat(api): add a new Recurring property on Schedule
* feat(schedules): date to cron convert + recurring flag
* feat(schedules): update angularjs-datetime-picker from v1 to v2
* chore(app): use minified dependency for angularjs-datetime-picker
* chore(vendor): rollback version of angularjs-datetime-picker
* * feat(ux): replace datepicker for schedule creation/details
* feat(container-stats): add refresh rate of 1 and 3 seconds (#2493 )
* fix(templates): set var to default value if no value selected (#2323 )
* fix(templates): set preset to true iff var type is preset
* fix(templates): add env var value when changing type
* feat(security): shutdown instance after 5minutes if no admin account created (#2500 )
* feat(security): skip admin check if --no-auth
* fix(security): change error message
* fix(vendor): use datepicker minified version
* feat(schedule-creation): replace angular-datetime-picker
* feat(schedule): parse cron to datetime
* fix(schedule): fix zero based months
2018-12-07 08:53:23 +13:00
baron_l
a9b107dbb5
feat(app): add the capability to enable/disable host management features ( #2472 )
...
* feat(settings): add the capability to enable/disable the host management features
* feat(settings): remove the validation of EnableHostManagementFeatures in frontend
* feat(api): disable schedules API when HostManagementFeatures is false + DB migration
* style(settings): update host management settings tooltip
* refacot(schedules): update DBVersion to 15
2018-12-06 11:36:25 +13:00
Anthony Lapenna
d510bbbcfd
feat(api): filter LDAP password from settings response ( #2488 )
2018-11-24 08:40:56 +13:00
Anthony Lapenna
d03fd5805a
feat(api): support AGENT_SECRET environment variable ( #2486 )
2018-11-23 11:46:51 +13:00
Anthony Lapenna
94d3d7bde2
feat(motd): relocate motd file URL and always return 200 ( #2466 )
2018-11-14 12:20:33 +13:00
Anthony Lapenna
64c29f7402
feat(schedules): add the ability to list tasks from snapshots ( #2458 )
...
* feat(schedules): add the ability to list tasks from snapshots
* feat(schedules): update schedules
* refactor(schedules): fix linting issue
2018-11-13 14:39:26 +13:00
Anthony Lapenna
a2d9f591a7
feat(schedules): add retry policy to script schedules ( #2445 )
2018-11-09 15:22:08 +13:00
Anthony Lapenna
807c830db0
feat(schedules): add the ability to update a schedule script ( #2438 )
2018-11-07 17:19:10 +13:00
Anthony Lapenna
7d32a6619d
feat(api): add created property for schedules ( #2435 )
2018-11-07 09:22:30 +13:00
Anthony Lapenna
110fcc46a6
feat(api): revamp scheduling to introduce system schedules ( #2433 )
...
* feat(api): revamp scheduling to introduce system schedules
* fix(api): fix linting issues
* fix(api): fix lint issues
* refactor(api): fix lint issues
2018-11-06 22:49:48 +13:00
Chaim Lev-Ari
dbbea0a20f
feat(schedules): add the schedule API
...
* feat(jobs): add job service interface
* feat(jobs): create job execution api
* style(jobs): remove comment
* feat(jobs): add bindings
* feat(jobs): validate payload different cases
* refactor(jobs): rename endpointJob method
* refactor(jobs): return original error
* feat(jobs): pull image before creating container
* feat(jobs): run jobs with sh
* style(jobs): remove comment
* refactor(jobs): change error names
* feat(jobs): sync pull image
* fix(jobs): close image reader after error check
* style(jobs): remove comment and add docs
* refactor(jobs): inline script command
* fix(jobs): handle pul image error
* refactor(jobs): handle image pull output
* fix(docker): set http client timeout to 100s
* feat(api): create schedule type
* feat(agent): add basic schedule api
* feat(schedules): add schedule service in bolt
* feat(schedule): add schedule service to handler
* feat(schedule): add and list schedules from db
* feat(agent): get schedule from db
* feat(schedule): update schedule in db
* feat(agent): delete schedule
* fix(bolt): remove sync method from scheduleService
* feat(schedules): save/delete script in fs
* feat(schedules): schedules cron service implementation
* feat(schedule): integrate handler with cron
* feat(schedules): schedules API overhaul
* refactor(project): remove .idea folder
* fix(schedules): fix script task execute call
* refactor(schedules): refactor/fix golint issues
* refactor(schedules): update SnapshotTask documentation
* refactor(schedules): validate image name in ScheduleCreate operation
2018-11-06 09:58:15 +13:00
baron_l
a61654a35d
feat(endpoints): add the ability to browse offline endpoints ( #2253 )
...
* feat(back): saved data in snapshot
* feat(endpoints): adding interceptors to retrieve saved data on offline endpoints
* feat(endpoints): offline dashboard working - need tests on offline views
* refactor(endpoints): interceptors cleaning and saving/loading offline endpoints data in/from localstorage
* feat(endpoints): browsing offline endpoints
* feat(endpoints): removing all the link in offline mode - sidebar not working when switching between off and on modes w/ stateManager logic
* feat(endpoints): endpoint status detection in real time
* fix(endpoints): offline swarm endpoint are not accessible anymore
* fix(endpoints): refactor message + disable offline browsing for an endpoint when no snapshot is available for it
* fix(endpoints): adding timeout and enabling loading bar for offline requests
* fix(endpoints): trying to access a down endpoint wont remove sidebar items if it fails
* feat(endpoints): disable checkboxes on offline views for offline mode
* feat(endpoints): updating endpoint status when detecting a change
* refactor(host): moved offline status panel from engine view to new host view
* fix(endpoints): missing endpoint update on ping from home view
* fix(api): rework EndpointUpdate operation
* refactor(offline): moved endpoint status to EndpointProvider and refactor the status-changed detection
* fix(offline): moved status detection to callback on views -> prevent displaying the offline message when endpoint is back online on view change
* fix(offline): offline message is now displayed online when browsing an offline endpoint
* fix(offline): sidebar updates correctly on endpoint status change
* fix(offline): offline panel not displayed and hidden on online mode
* refactor(offline): rework of OfflineMode management
* refactor(offline): extract information-panel for offlineMode into a component
* refactor(offline): remove redundant binding of informationPanel + endpointStatusInterceptor patter as service
* refactor(interceptors): moved interceptors pattern to service pattern
* feat(stacks): prevent inspection of a stack in offline mode
* feat(host): hide devices/disk panels in offline mode
* feat(host): disable browse action in offline mode
* refactor(home): remove comments
2018-10-28 22:27:06 +13:00
baron_l
354fda31f1
feat(jobs): add the ability to run a job on a target endpoint #2374
...
* feat(jobs): adding the ability to run scripts on endpoints
fix(job): click on containerId in JobsDatatable redirects to container's logs
refactor(job): remove the jobs datatable settings + texts changes on JobCreation view
fix(jobs): jobs payloads are now following API rules and case
feat(jobs): adding the capability to run scripts on hosts
* feat(jobs): adding the ability to purge jobs containers
* refactor(job): apply review changes
* feat(job-creation): store image name in local storage
* feat(host): disable job exec link in non-agent Swarm setup
* feat(host): only display execute job in agent setups or standalone
* feat(job): job execution overhaul
* docs(swagger): update EndpointJob documentation
2018-10-28 19:06:50 +13:00
Anthony Lapenna
14d2bf4ebb
refactor(api): fix typo ( #2391 )
...
* refactor(api): fix typo
* refactor(api): remove newline
2018-10-23 10:07:39 +13:00
Chaim Lev-Ari
65291c68e9
feat(jobs): add the job execution API
...
* feat(jobs): add job service interface
* feat(jobs): create job execution api
* style(jobs): remove comment
* feat(jobs): add bindings
* feat(jobs): validate payload different cases
* refactor(jobs): rename endpointJob method
* refactor(jobs): return original error
* feat(jobs): pull image before creating container
* feat(jobs): run jobs with sh
* style(jobs): remove comment
* refactor(jobs): change error names
* feat(jobs): sync pull image
* fix(jobs): close image reader after error check
* style(jobs): remove comment and add docs
* refactor(jobs): inline script command
* fix(jobs): handle pul image error
* refactor(jobs): handle image pull output
* fix(docker): set http client timeout to 100s
* fix(client): remove timeout from http client
2018-10-23 10:03:30 +13:00
Anthony Lapenna
313c8be997
chore(version): bump version number
2018-09-15 19:26:03 +08:00
Anthony Lapenna
57bd82ba85
chore(version): bump version number
2018-09-15 16:40:26 +08:00
Kendrick
0efeeaf185
feat(webhooks): add support for service update webhooks ( #2161 )
...
* Initial pass at adding webhook controller and routes
* Moving some objects around
* Cleaning up comments
* Fixing syntax, switching to using the docker sdk over building an http client
* Adding delete and list functionality
* Updating the handler to use the correct permissions. Updating some comments
* Fixing some comments
* Code cleanup per pull request comments
* Cleanup per PR feedback. Syntax error fix
* Initial creation of webhook app code
* Moving ClientFactory creation out of handler code and instead using the one created by the main process. Removing webhookInspect method and updating the list function to use json filters
* Delete now works on the webhook ID vs service ID
* WIP - Service creates a webhook. Display will show an existing webhook URL.
* Adding the webhook field to the service view. There is now the ability to add or remove a webhook from a service
* Moving all api calls to be webhooks vs webhook
* Code cleanup. Moving all api calls to be webhooks vs webhook
* More conversion of webhook to webhooks?
* Moving UI elements around. Starting function for copying to clipboard
* Finalizing function for copying to clipboard. Adding button that calls function and copies webhook to clipboard.
* Fixing UI issues. Hiding field entirely when there is no webhook
* Moving URL crafting to a helper method. The edit pane for service now creates/deletes webhooks immidiately.
* style(service-details): update webhook line
* feat(api): strip sha when updating an image via the update webhook
* Fixing up some copy. Only displying the port if it is not http or https
* Fixing tooltip copy. Setting the forceupdate to be true to require an update to occur
* Fixing code climate errors
* Adding WebhookType field and setting to ServiceWebhook for new webhooks. Renaming ServiceID to resourceID so future work can add new types of webhooks in other resource areas.
* Adding the webhook type to the payload to support more types of webhooks in the future. Setting the type correctly when creating one for a service
* feat(webhooks): changes related to webhook management
* API code cleanup, removing unneeded functions, and updating validation logic
* Incorrectly ignoring the error that the webhook did not exist
* Re-adding missing error handling. Changing error response to be a 404 vs 500 when token can't find an object
* fix(webhooks): close Docker client after service webhook execution
2018-09-03 12:08:03 +02:00
Anthony Lapenna
6ab6cfafb7
feat(motd): add the ability to display motd and dimiss information panels ( #2191 )
...
* feat(api): add motd handler
* feat(app): add the motd api layer
* feat(motd): display motd and add the ability to dismiss information messages
* style(home): relocate important message before info01
* feat(api): silently fail when an error occurs during motd retrieval
2018-08-21 20:40:42 +02:00
Ricardo Cardona Ramirez
e1e263d8c8
feat(UAC): change default ownership to admininstrators ( #2137 )
...
* #960 feat(UAC): change ownership to admins for externally created ressources
* feat(UAC): change ownership to admins for externally created resources
Deprecated AdministratorsOnly js and go backend
* #960 feat(UAC): remove AdministratorsOnly property and minor GUI fixes
Update swagger definition changing AdministratorsOnly to Public
* #960 feat(UAC): fix create resource with access control data
* #960 feat(UAC): authorization of non-admin users for restricted operations
On stacks, containers networks, services , tasks and volumes.
* #960 feat(UAC): database migration to version 14
The administrator resources are deleted and Public resources are now managed by admins
* #960 feat(UAC): small fixes from PR #2137
* #960 feat(UAC): improve the readability of the source code
* feat(UAC) fix displayed ownership for Swarm related resources (#960 )
2018-08-19 07:57:28 +02:00
Anthony Lapenna
ee9c8d7d1a
feat(templates): re-introduce external template management ( #2119 )
...
* feat(templates): re-introduce external template management
* refactor(api): review error handling
2018-08-07 17:43:36 +02:00
Anthony Lapenna
b8ed6d3d4a
chore(version): bump version number
2018-07-28 20:42:17 +02:00
Anthony Lapenna
b15af67552
chore(version): bump version number
2018-07-28 19:44:01 +02:00
Anthony Lapenna
8964dad73b
chore(version): bump version number
2018-07-27 16:05:57 +02:00
Jan Jansen
76e1aa97e2
feat(stack-creation): add the ability to specify git reference ( #1948 ) ( #2063 )
2018-07-24 16:11:35 +02:00
Anthony Lapenna
1f24320fa7
fix(api): fix endpoint snapshot process at endpoint creation time ( #2072 )
...
* fix(api): fix endpoint snapshot process at endpoint creation time
* refactor(api): remove comments
2018-07-24 14:47:19 +02:00
Anthony Lapenna
113da93145
feat(authentication): add a setting to toggle automatic user provisioning when u… ( #2068 )
...
* feat(api): add a setting to toggle automatic user provisioning when using LDAP authentication
* fix(auth): fix an issue with AutoCreateUsers disabled
2018-07-24 08:49:17 +02:00
Olli Janatuinen
cec878b01d
feat(authentication/ldap): Auto create and assign LDAP users ( #2042 )
2018-07-23 06:57:38 +02:00
Anthony Lapenna
b6792461a4
feat(home): add a new home view ( #2033 )
2018-07-11 10:39:20 +02:00
Anthony Lapenna
61c285bd2e
feat(templates): introduce templates management ( #2017 )
2018-07-03 20:31:02 +02:00
Anthony Lapenna
e7939a5384
chore(version): bump version number
2018-06-25 18:33:08 +03:00
Anthony Lapenna
686712e042
chore(version): bump version number
2018-06-25 16:49:50 +03:00
Anthony Lapenna
b19356be6f
chore(version): bump version number
2018-06-25 15:13:01 +03:00
Anthony Lapenna
3782761d04
chore(version): bump version number
2018-06-21 16:59:05 +03:00
Anthony Lapenna
decb67f4d9
chore(version): bump version number
2018-06-21 14:28:07 +03:00
Anthony Lapenna
d7ff14777f
refactor(api): restructure bolt package ( #1981 )
...
* refactor(api): bolt package refactor
* refactor(api): refactor bolt package
2018-06-19 13:15:10 +02:00
Anthony Lapenna
b4c2820ad7
refactor(api): use a standard stack identifier ( #1980 )
2018-06-18 12:07:56 +02:00
Anthony Lapenna
5e73a49473
feat(tags): add the ability to manage tags ( #1971 )
...
* feat(tags): add the ability to manage tags
* feat(tags): update tag selector UX
* refactor(app): remove unused ui-select library
2018-06-15 09:18:25 +02:00
Anthony Lapenna
e3d564325b
feat(stacks): support compose v2.0 stack ( #1963 )
2018-06-11 15:13:19 +02:00
Anthony Lapenna
9ff4b21616
feat(support): add support view ( #1937 )
2018-05-28 16:40:59 +02:00
Anthony Lapenna
9ad9cc5e2d
feat(azure): add experimental Azure endpoint support ( #1936 )
2018-05-28 16:40:33 +02:00
Anthony Lapenna
9a071a57f2
chore(version): bump version number
2018-05-21 13:58:47 +02:00
Anthony Lapenna
19f9840c8c
chore(version): bump version number
2018-05-21 11:03:48 +02:00
Anthony Lapenna
63d338c4da
fix(api): refactor TLS support ( #1909 )
...
* refactor(api): refactor TLS support
* feat(api): migrate endpoint data
* refactor(api): remove unused code and rename functions
* refactor(app): remove console.log statement
2018-05-19 16:25:11 +02:00
Anthony Lapenna
f75c87315e
chore(version): bump version number
2018-05-10 17:22:11 +02:00
Anthony Lapenna
2327d696e0
feat(agent): add agent support ( #1828 )
2018-05-06 09:15:57 +02:00
Anthony Lapenna
1162549209
feat(endpoint-groups): add endpoint-groups ( #1837 )
2018-04-26 18:08:46 +02:00
Anthony Lapenna
81ed0e4507
chore(version): bump version number
2018-04-02 07:44:19 +10:00
Anthony Lapenna
30dfd3d616
fix(api): manage registry authentication in the API ( #1751 )
2018-03-23 08:44:43 +10:00
Anthony Lapenna
adf1ba7b47
feat(stack-creation): add the ability to specify git credentials ( #1722 )
...
* feat(stack-creation): add the ability to specify git credentials
* docs(api): update Swagger
2018-03-16 07:22:05 +10:00
Anthony Lapenna
706490db5e
fix(api): use EntryPoint as a reference to overwrite stack Compose file ( #1725 )
2018-03-13 21:35:12 +10:00
Anthony Lapenna
ec2a9e149b
chore(version): bump version number
2018-03-11 20:30:07 +10:00
Anthony Lapenna
9634cf1563
chore(version): bump version number
2018-03-03 09:19:54 +10:00
Anthony Lapenna
eb43579378
feat(storidge): introduce endpoint extensions and proxy Storidge API ( #1661 )
2018-02-23 03:10:26 +01:00
Anthony Lapenna
27dcfd043b
chore(version): bump version number
2018-02-08 09:27:13 +01:00
Anthony Lapenna
1de0619fd5
fix(api): ignore Docker login errors during stack deployment ( #1635 )
2018-02-07 08:37:01 +01:00
Anthony Lapenna
672819f3af
refactor(api): remove CLI deprecation related code ( #1602 )
2018-01-24 21:58:58 +01:00
Anthony Lapenna
4c2dfb3346
chore(version): bump version number
2018-01-23 16:52:54 +01:00
Anthony Lapenna
b1863430df
revert: revert PR 1366 ( #1588 )
2018-01-22 10:06:47 +01:00
Anthony Lapenna
a7cb0ca823
chore(version): bump version number
2018-01-21 17:30:06 +01:00
Miguel A. C
edadce359c
feat(stack-details): add stack deploy prune option ( #1567 )
...
* feat(stack-details): add stack deploy prune option
* fix go fmt issues
* add changes proposed by reviewer
* refactor deployStack as suggested by codeclimate
2018-01-20 18:05:01 +01:00
1138-4EB
6acfb580dc
feat(cli): Add CLI flag for health-check ( #1366 )
2018-01-15 19:34:07 +01:00
Anthony Lapenna
fbd9139928
chore(version): bump version number
2017-12-11 16:03:53 +01:00
Anthony Lapenna
7dcf5c2d0b
chore(version): bump version number
2017-12-10 10:09:11 +01:00
Anthony Lapenna
ca036b56c1
feat(database-migration): enable donation header when upgrading Portainer ( #1450 )
2017-11-28 13:40:33 +01:00
Anthony Lapenna
2275467bdc
chore(version): bump version number
2017-11-26 10:07:59 +01:00
1138-4EB
688b15fb4b
feat(about): add a new about view as well as a support header
2017-11-26 10:05:03 +01:00
Anthony Lapenna
d9262d4b7f
chore(version): bump version number
2017-11-13 10:11:11 +01:00
Anthony Lapenna
7ee16d1e51
chore(version): bump version number
2017-11-08 08:28:37 +01:00
Thomas Kooi
407f0f5807
feat(configs): add support for docker configs ( #996 )
2017-11-06 09:47:31 +01:00
Anthony Lapenna
693f1319a4
feat(stacks): add the ability to specify env vars when deploying stacks ( #1345 )
2017-11-01 10:30:02 +01:00
Anthony Lapenna
b5629c5b1a
feat(stacks): allow to use images from private registries in stacks ( #1327 )
2017-10-26 14:22:09 +02:00
Anthony Lapenna
e110986728
chore(version): bump version number
2017-10-15 19:27:23 +02:00
Anthony Lapenna
587e2fa673
feat(stacks): add support for stack deploy ( #1280 )
2017-10-15 19:24:40 +02:00
Anthony Lapenna
9c10a1def2
Merge tag '1.14.3' into develop
...
Release 1.14.3
2017-09-27 19:43:11 +02:00
Anthony Lapenna
b59dd03b43
chore(version): bump version number
2017-09-27 19:43:01 +02:00
Anthony Lapenna
0bdcff09f8
feat(settings): add a setting to disable privileged mode for non-admins ( #1239 )
2017-09-27 09:26:04 +02:00
Anthony Lapenna
ca9d9b9a77
feat(settings): add a setting to disable bind mounts for non-admins ( #1237 )
...
* feat(settings): add a setting to disable bind mounts for non-admins
* refactor(gruntfile): remove temporary setting
2017-09-26 05:36:51 +02:00
Nenad Ilic
6cfffb38f9
feat(cli): Allow adding admin password using docker secrets aka file ( #1199 ) ( #1214 )
2017-09-25 18:13:56 +02:00
Anthony Lapenna
4b53c3422f
chore(version): bump version number
2017-09-21 17:22:01 +02:00
Anthony Lapenna
5e2b3c1d07
chore(version): bump version number
2017-09-20 15:41:01 +02:00
Anthony Lapenna
61f652da04
feat(secrets): add UAC ( #1200 )
2017-09-19 17:10:15 +02:00
Anthony Lapenna
a2b4cd8050
feat(networks): add UAC ( #1196 )
2017-09-19 16:58:30 +02:00
Anthony Lapenna
8d4807c9e7
feat(api): TLS endpoint creation and init overhaul ( #1173 )
2017-09-14 08:08:37 +02:00
Anthony Lapenna
27188f4dff
chore(version): bump version number
2017-08-13 20:17:23 +02:00
Anthony Lapenna
d27528a771
feat(authentication): add LDAP authentication support ( #1093 )
2017-08-10 10:35:23 +02:00
Anthony Lapenna
f2347b2f77
chore(version): bump version number
2017-07-17 15:59:43 +02:00
Anthony Lapenna
206eb0513d
chore(version): bump version number
2017-07-13 18:08:39 +02:00
Anthony Lapenna
0e0764eff8
chore(version): bump version number
2017-06-29 16:37:22 +02:00
Anthony Lapenna
c82cd50d87
chore(version): bump version number
2017-06-20 13:21:06 +02:00
Anthony Lapenna
08c5a5a4f6
feat(registries): add registry management ( #930 )
2017-06-20 13:00:32 +02:00
Anthony Lapenna
afd99d2d68
chore(version): bump version number
2017-06-05 08:42:08 +02:00
Anthony Lapenna
c7e306841a
feat(settings): add settings management ( #906 )
2017-06-01 10:14:55 +02:00
Anthony Lapenna
de9be4bbe0
chore(version): bump version number
2017-05-25 12:20:43 +02:00
Anthony Lapenna
db1a754b39
chore(version): bump version number
2017-05-23 21:13:55 +02:00
Anthony Lapenna
5523fc9023
feat(global): introduce user teams and new UAC system ( #868 )
2017-05-23 20:56:10 +02:00
Thomas Krzero
7c6c9284f2
feat(endpoints) - Access exposed containers on endpoint public URL ( #826 )
2017-05-01 11:19:43 +01:00
030
6fa6dde637
feat(backend): native SSL support
2017-04-25 10:51:22 +01:00
dedalusj
5745606fe7
feat(cli): Allow setting admin password from CLI ( #752 )
2017-04-16 08:54:51 +01:00
Anthony Lapenna
abc929824c
fix(endpoints): add the ability to update TLS for an existing endpoint ( #784 )
2017-04-09 19:38:41 +01:00
Anthony Lapenna
0cde215259
chore(version): bump version number
2017-04-06 10:37:26 +02:00
Anthony Lapenna
e9c6feb3c4
chore(version): bump version number
2017-04-05 10:15:03 +02:00
Anthony Lapenna
135a92feb4
chore(version): bump version number
2017-03-28 15:18:29 +02:00
Anthony Lapenna
be2acdbdfb
chore(version): bump version number
2017-03-13 10:12:42 +01:00
Anthony Lapenna
1294ebaa8c
chore(version): bump version number
2017-03-12 22:33:26 +01:00
Anthony Lapenna
80d50378c5
feat(uac): add multi user management and UAC ( #647 )
2017-03-12 17:24:15 +01:00
Anthony Lapenna
44ceae40b5
merge branch 'release-1.11.4' into develop
2017-03-03 12:54:22 +01:00
Anthony Lapenna
ccaabf3b6b
chore(version): bump version number
2017-03-03 12:36:24 +01:00
Anthony Lapenna
73082f1674
feat(cli): add a --no-analytics flag to disable google analytics ( #601 )
2017-02-14 12:37:37 +13:00
Anthony Lapenna
dc78ec5135
feat(endpoints): add the ability to define endpoints from an external source
2017-02-06 18:29:34 +13:00
Anthony Lapenna
10f7744a62
feat(authentication): add a --no-auth flag to disable authentication ( #553 )
2017-02-01 22:13:48 +13:00
Anthony Lapenna
a97e7bbaae
chore(version): bump version number
2017-02-01 11:02:05 +13:00
Anthony Lapenna
f8ced03792
chore(version): bump version number
2017-01-26 17:43:47 +13:00
Anthony Lapenna
fa4ec04c47
feat(state): introduce endpoint state ( #529 )
2017-01-23 12:14:34 +13:00
Anthony Lapenna
d1b9820a29
chore(version): bump version number
2017-01-05 10:42:38 +13:00
Anthony Lapenna
4d6dadd17c
chore(version): bump version number
2016-12-26 13:30:06 +13:00
Anthony Lapenna
d54d30a7be
feat(global): multi endpoint management ( #407 )
2016-12-26 09:34:02 +13:00
Anthony Lapenna
0a38bba874
refactor(api): API overhaul ( #392 )
2016-12-18 18:21:29 +13:00