Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


  • Project:  A named configuration that relates an administrative user to a set of resource allocations (quotas), and resources (namespace, pods/services, volumes, configurations).
  • StackApplication (aka stack)A set of services that are administratively related (i.e., started and stopped together). For example, "clowder" or "dataverse"
  • Service definitionspecificationA specification of a logical "service" that includes a name, description, storage requirements, configuration options, and relationships to other services. An NDSLabs "service" may be composed of multiple related containers.
  • Service library: A collection of service definitions and procedures for adding official/trusted as well as local/development services.
  • Service Application instance: An instance of a service configured and running in a project namespace.
  • Resource quota: A set of soft and hard limits assigned to a project (storage and compute).
  • Volume mount: A named, allocated storage resource that counts against the project quota and can be mounted by one or more services.


Using the CLI for simplicity: a project administrator wants to add a set of services to their project configuration:

CommandWhat it doesResponse
list servicesLists the services in the service library that can be added to this project.



list resourcesLists the storage resources available to this projectstorage quota: 1TB

get service clowderGets the service specification<spec>
add service clowderAdds the specified service to the projectOK
get config clowderGets the configuration options available for the service
config clowder
env smtp-host smtp.ncsa.illinois.eduSets a configuration option for the named services
OKcreate volume clowder-vol 10GBCreates and formats a volume named "clowder-vol"OKattach clowder-vol clowderMakes the volume available to the service
start clowderStarts the service<status>
status clowderReturns the service status<status>
endpoint clowderReturns the service endpoint
add service image-previewAdds the specified service to the project
OKlink image-preview clowderLinks the specified services (in this case, by adding required rabbitmq)
start image-previewStarts the image preview service and updates the clowder service?<status>
stop servicesStops everything<status>
delete volume clowder-volRemoves the specified volumeOKdelete clowder image-previewRemoves the services from the projectOK


The following is a simple entity-relationship diagram intended to capture the entities, attributes, and relationships for the NDSLabs API.


For actor definitions, see NDS Labs Use Cases.


Base path: /api/

PathActionProject AdminCluster AdminNotes
/List available pathsGETGET 
/authenticate PUTPUTreturns token
/servicesList, add site-wide and project-specific servicesGET, PUTPUT 
/services/{service-id}Get, update, delete site-wide servicesGETPUT, DELETE 
/services/templates/{service-id}/{service|controller}Put, get, delete service templatesGETPUT, DELETE 
/projectsList, add projects GET, PUT 
/projects/{project-id}Get, update, delete projectGET, PUTDELETE 
/projects/{project-id}/serviceInstancesList, add project servicesGET, PUT  
/projects/{project-id}/serviceInstances/{instance-id}Get, update, delete project serviceGET, PUT, DELETE  
/projects/{project-id}/serviceInstances/{instance-id}/statusGet, update, delete project services statusGET, PUT, DELETE start, stop, restart
/projects/{project-id}/serviceInstance/{instance-id}/configGet, update, delete service configurationsGET, PUT, DELETE  
/projects/{project-id}/volumesList, add project volumesGET, PUT  
/projects/{project-id}/volumes/{volume-id}Get, update, delete project volumesGET, PUT, DELETE  
/projects/{project-id}/{stack-id}Get, update, delete service stackGET, PUT, DELETE  
/projects/{project-id}/{stack-id}/actions/{action}Start/Stop a stackGET,PUT  
/projects/{project-id}/{stack-id}/services/{service-id}Get, update, delete services in a stackGET, PUT, DELETE  
/versionGet server versionGETGET 
/refresh_tokenGet a new tokenGETGET 
/registerPost a new project POST 
/consoleGet a Websocket connection to a consoleGET  



The latest version of the API specification is available in Github: