{"schema_version":1,"host":"localhost:8080","namespace":"/v1","api":"Aker/API/V1","objects":[{"type":"api","value":{"id":"Aker/API/V1","name":"Vast API Gatekeeper","description":null,"authenticator":"Aker/API/V1/Authenticator","route_set":{"routes":[{"path":"volumes","request_method":"GET","controller":null,"endpoint":"Aker/API/V1/Endpoints/Volumes/List","group":"volumes"},{"path":"volumes/usage","request_method":"GET","controller":null,"endpoint":"Aker/API/V1/Endpoints/Volumes/ListUsage","group":"volumes"},{"path":"volumes","request_method":"POST","controller":null,"endpoint":"Aker/API/V1/Endpoints/Volumes/Create","group":"volumes"},{"path":"volumes/:volume","request_method":"GET","controller":null,"endpoint":"Aker/API/V1/Endpoints/Volumes/Info","group":"volumes"},{"path":"volumes/:volume","request_method":"PATCH","controller":null,"endpoint":"Aker/API/V1/Endpoints/Volumes/Update","group":"volumes"},{"path":"volumes/:volume","request_method":"DELETE","controller":null,"endpoint":"Aker/API/V1/Endpoints/Volumes/Delete","group":"volumes"}],"groups":[{"id":"volumes","name":"Volumes","description":null,"groups":[]}]},"scopes":[]}},{"type":"authenticator","value":{"id":"Aker/API/V1/Authenticator","name":"API Token Authenticator","description":"Authenticates requests using an API token provided in the Authorization header","type":"bearer","potential_errors":["Aker/API/V1/Authenticator/MissingAPIToken","Aker/API/V1/Authenticator/InvalidAPIToken"]}},{"type":"error","value":{"id":"Aker/API/V1/Authenticator/MissingAPIToken","name":null,"description":"No API token was provided in the Authorization header. Ensure a token is provided prefixed with Bearer","code":"missing_api_token","http_status":400,"fields":[]}},{"type":"error","value":{"id":"Aker/API/V1/Authenticator/InvalidAPIToken","name":null,"description":"The API token provided was not valid (it may not exist or have expired)","code":"invalid_api_token","http_status":403,"fields":[]}},{"type":"scalar","value":{"id":"Rapid/Scalars/Integer","name":"Integer","description":null}},{"type":"scalar","value":{"id":"Rapid/Scalars/String","name":"String","description":null}},{"type":"scalar","value":{"id":"Rapid/Scalars/Boolean","name":"Boolean","description":null}},{"type":"object","value":{"id":"Rapid/Schema/ScopeType","name":null,"description":null,"fields":[{"id":"Rapid/Schema/ScopeType/NameField","name":"name","description":null,"type":"Rapid/Scalars/String","null":false,"array":false,"spec":{"all":true,"spec":null}},{"id":"Rapid/Schema/ScopeType/DescriptionField","name":"description","description":null,"type":"Rapid/Scalars/String","null":false,"array":false,"spec":{"all":true,"spec":null}}]}},{"type":"endpoint","value":{"id":"Aker/API/V1/Endpoints/Volumes/List","name":"Get list of volumes","description":"Return used storage information for all volumes","http_status":200,"authenticator":null,"argument_set":{"id":"Aker/API/V1/Endpoints/Volumes/List/BaseArgumentSet","name":null,"description":null,"arguments":[]},"fields":[{"id":"Aker/API/V1/Endpoints/Volumes/List/VolumesField","name":"volumes","description":null,"type":"Aker/API/V1/Objects/Volume","null":false,"array":true,"spec":{"all":false,"spec":"id,path,size_limit,inode_limit,posix_acl,allowed_hosts"}}],"potential_errors":["Aker/API/V1/Errors/VastError","Aker/API/V1/Errors/VastTimeout","Aker/API/V1/Errors/VolumeNotFound"],"scopes":[]}},{"type":"argument_set","value":{"id":"Aker/API/V1/Endpoints/Volumes/List/BaseArgumentSet","name":null,"description":null,"arguments":[]}},{"type":"error","value":{"id":"Aker/API/V1/Errors/VastError","name":null,"description":"Received an unexpected response from VAST API","code":"vast_error","http_status":500,"fields":[{"id":"Aker/API/V1/Errors/VastError/InfoField","name":"info","description":null,"type":"Rapid/Scalars/String","null":true,"array":false,"spec":{"all":true,"spec":null}},{"id":"Aker/API/V1/Errors/VastError/RequestMethodField","name":"request_method","description":null,"type":"Rapid/Scalars/String","null":true,"array":false,"spec":{"all":true,"spec":null}},{"id":"Aker/API/V1/Errors/VastError/RequestUriField","name":"request_uri","description":null,"type":"Rapid/Scalars/String","null":true,"array":false,"spec":{"all":true,"spec":null}},{"id":"Aker/API/V1/Errors/VastError/ResponseStatusField","name":"response_status","description":null,"type":"Rapid/Scalars/Integer","null":true,"array":false,"spec":{"all":true,"spec":null}}]}},{"type":"error","value":{"id":"Aker/API/V1/Errors/VastTimeout","name":null,"description":"Request to Vast API timed out","code":"vast_timeout","http_status":504,"fields":[]}},{"type":"error","value":{"id":"Aker/API/V1/Errors/VolumeNotFound","name":null,"description":"No volume was found matching any of the criteria provided in the arguments","code":"volume_not_found","http_status":404,"fields":[]}},{"type":"object","value":{"id":"Aker/API/V1/Objects/Volume","name":null,"description":null,"fields":[{"id":"Aker/API/V1/Objects/Volume/IdField","name":"id","description":"Unique alphanumeric ID of the volume.","type":"Aker/API/V1/Scalars/VolumeId","null":false,"array":false,"spec":{"all":true,"spec":null}},{"id":"Aker/API/V1/Objects/Volume/PathField","name":"path","description":"Full physical path for volume.","type":"Rapid/Scalars/String","null":true,"array":false,"spec":{"all":true,"spec":null}},{"id":"Aker/API/V1/Objects/Volume/AllowedHostsField","name":"allowed_hosts","description":"Array of IPv4 addresses which are allowed to access the volume.","type":"Aker/API/V1/Scalars/IPv4Address","null":true,"array":true,"spec":{"all":true,"spec":null}},{"id":"Aker/API/V1/Objects/Volume/PosixAclField","name":"posix_acl","description":"Does volume use POSIX ACL permissions?","type":"Rapid/Scalars/Boolean","null":true,"array":false,"spec":{"all":true,"spec":null}},{"id":"Aker/API/V1/Objects/Volume/SizeLimitField","name":"size_limit","description":"Hard size limit for volume in bytes.","type":"Rapid/Scalars/Integer","null":true,"array":false,"spec":{"all":true,"spec":null}},{"id":"Aker/API/V1/Objects/Volume/InodeLimitField","name":"inode_limit","description":"Hard limit for number of inodes volume can use.","type":"Rapid/Scalars/Integer","null":true,"array":false,"spec":{"all":true,"spec":null}},{"id":"Aker/API/V1/Objects/Volume/UsedBytesField","name":"used_bytes","description":"Total size in bytes used by volume.","type":"Rapid/Scalars/Integer","null":true,"array":false,"spec":{"all":true,"spec":null}},{"id":"Aker/API/V1/Objects/Volume/UsedInodesField","name":"used_inodes","description":"Total number of inodes used by volume.","type":"Rapid/Scalars/Integer","null":true,"array":false,"spec":{"all":true,"spec":null}},{"id":"Aker/API/V1/Objects/Volume/QuotaStateField","name":"quota_state","description":"Status of quota/usage information.","type":"Rapid/Scalars/String","null":true,"array":false,"spec":{"all":true,"spec":null}}]}},{"type":"scalar","value":{"id":"Aker/API/V1/Scalars/VolumeId","name":"VolumeId","description":"Alphanumeric string representing a Volume ID. Must be between 1 and 64 characters in length, and only contain a-z, A-Z, 0-9, and \"_\"."}},{"type":"scalar","value":{"id":"Aker/API/V1/Scalars/IPv4Address","name":"IPv4Address","description":"IPv4 address string."}},{"type":"endpoint","value":{"id":"Aker/API/V1/Endpoints/Volumes/ListUsage","name":"Get list of volume sizes/usage","description":"Return used storage information for all volumes","http_status":200,"authenticator":null,"argument_set":{"id":"Aker/API/V1/Endpoints/Volumes/ListUsage/BaseArgumentSet","name":null,"description":null,"arguments":[]},"fields":[{"id":"Aker/API/V1/Endpoints/Volumes/ListUsage/VolumesField","name":"volumes","description":null,"type":"Aker/API/V1/Objects/Volume","null":false,"array":true,"spec":{"all":false,"spec":"id,used_bytes,used_inodes"}}],"potential_errors":["Aker/API/V1/Errors/VastError","Aker/API/V1/Errors/VastTimeout","Aker/API/V1/Errors/VolumeNotFound"],"scopes":[]}},{"type":"argument_set","value":{"id":"Aker/API/V1/Endpoints/Volumes/ListUsage/BaseArgumentSet","name":null,"description":null,"arguments":[]}},{"type":"endpoint","value":{"id":"Aker/API/V1/Endpoints/Volumes/Create","name":"Create a volume","description":"Creates a volume for given options","http_status":201,"authenticator":null,"argument_set":{"id":"Aker/API/V1/Endpoints/Volumes/Create/BaseArgumentSet","name":null,"description":null,"arguments":[{"name":"id","description":"The unique alphanumeric ID of the volume.","type":"Aker/API/V1/Scalars/VolumeId","required":true,"array":false,"default":null},{"name":"allowed_hosts","description":"Array of IPv4 addresses which are allowed to access the volume.","type":"Aker/API/V1/Scalars/IPv4Address","required":false,"array":true,"default":"[]"},{"name":"size_limit","description":"Hard size limit for volume in bytes.","type":"Rapid/Scalars/Integer","required":false,"array":false,"default":"5000000000000"},{"name":"inode_limit","description":"Hard limit for number of inodes volume can use.","type":"Rapid/Scalars/Integer","required":false,"array":false,"default":"100000000"},{"name":"posix_acl","description":"Should volume use POSIX ACL permissions?","type":"Rapid/Scalars/Boolean","required":false,"array":false,"default":"false"}]},"fields":[{"id":"Aker/API/V1/Endpoints/Volumes/Create/VolumeField","name":"volume","description":null,"type":"Aker/API/V1/Objects/Volume","null":false,"array":false,"spec":{"all":true,"spec":null}}],"potential_errors":["Aker/API/V1/Errors/VastError","Aker/API/V1/Errors/VastTimeout","Aker/API/V1/Errors/VolumeAlreadyExists"],"scopes":[]}},{"type":"argument_set","value":{"id":"Aker/API/V1/Endpoints/Volumes/Create/BaseArgumentSet","name":null,"description":null,"arguments":[{"name":"id","description":"The unique alphanumeric ID of the volume.","type":"Aker/API/V1/Scalars/VolumeId","required":true,"array":false,"default":null},{"name":"allowed_hosts","description":"Array of IPv4 addresses which are allowed to access the volume.","type":"Aker/API/V1/Scalars/IPv4Address","required":false,"array":true,"default":"[]"},{"name":"size_limit","description":"Hard size limit for volume in bytes.","type":"Rapid/Scalars/Integer","required":false,"array":false,"default":"5000000000000"},{"name":"inode_limit","description":"Hard limit for number of inodes volume can use.","type":"Rapid/Scalars/Integer","required":false,"array":false,"default":"100000000"},{"name":"posix_acl","description":"Should volume use POSIX ACL permissions?","type":"Rapid/Scalars/Boolean","required":false,"array":false,"default":"false"}]}},{"type":"error","value":{"id":"Aker/API/V1/Errors/VolumeAlreadyExists","name":null,"description":"A volume with specified ID already exists","code":"volume_already_exists","http_status":409,"fields":[]}},{"type":"endpoint","value":{"id":"Aker/API/V1/Endpoints/Volumes/Info","name":"Get volume info","description":"Return information about a volume","http_status":200,"authenticator":null,"argument_set":{"id":"Aker/API/V1/Endpoints/Volumes/Info/BaseArgumentSet","name":null,"description":null,"arguments":[{"name":"volume","description":null,"type":"Aker/API/V1/ArgumentSets/VolumeLookup","required":true,"array":false,"default":null}]},"fields":[{"id":"Aker/API/V1/Endpoints/Volumes/Info/VolumeField","name":"volume","description":null,"type":"Aker/API/V1/Objects/Volume","null":false,"array":false,"spec":{"all":true,"spec":null}}],"potential_errors":["Aker/API/V1/Errors/VastError","Aker/API/V1/Errors/VastTimeout","Aker/API/V1/Errors/VolumeNotFound"],"scopes":[]}},{"type":"argument_set","value":{"id":"Aker/API/V1/Endpoints/Volumes/Info/BaseArgumentSet","name":null,"description":null,"arguments":[{"name":"volume","description":null,"type":"Aker/API/V1/ArgumentSets/VolumeLookup","required":true,"array":false,"default":null}]}},{"type":"lookup_argument_set","value":{"id":"Aker/API/V1/ArgumentSets/VolumeLookup","name":"Volume Lookup","description":"Provides for volumes to be looked up","arguments":[{"name":"id","description":null,"type":"Aker/API/V1/Scalars/VolumeId","required":false,"array":false,"default":null}],"potential_errors":["Aker/API/V1/Errors/VastError","Aker/API/V1/Errors/VastTimeout"]}},{"type":"endpoint","value":{"id":"Aker/API/V1/Endpoints/Volumes/Update","name":"Update a volume","description":"Update the specified valume's settings","http_status":200,"authenticator":null,"argument_set":{"id":"Aker/API/V1/Endpoints/Volumes/Update/BaseArgumentSet","name":null,"description":null,"arguments":[{"name":"volume","description":null,"type":"Aker/API/V1/ArgumentSets/VolumeLookup","required":true,"array":false,"default":null},{"name":"allowed_hosts","description":"Array of IPv4 addresses which are allowed to access the volume.","type":"Aker/API/V1/Scalars/IPv4Address","required":false,"array":true,"default":null},{"name":"size_limit","description":"Hard size limit for volume in bytes.","type":"Rapid/Scalars/Integer","required":false,"array":false,"default":null},{"name":"inode_limit","description":"Hard limit for number of inodes volume can use.","type":"Rapid/Scalars/Integer","required":false,"array":false,"default":null},{"name":"posix_acl","description":"Should volume use POSIX ACL permissions?","type":"Rapid/Scalars/Boolean","required":false,"array":false,"default":null}]},"fields":[{"id":"Aker/API/V1/Endpoints/Volumes/Update/VolumeField","name":"volume","description":null,"type":"Aker/API/V1/Objects/Volume","null":false,"array":false,"spec":{"all":true,"spec":null}}],"potential_errors":["Aker/API/V1/Errors/VastError","Aker/API/V1/Errors/VastTimeout"],"scopes":[]}},{"type":"argument_set","value":{"id":"Aker/API/V1/Endpoints/Volumes/Update/BaseArgumentSet","name":null,"description":null,"arguments":[{"name":"volume","description":null,"type":"Aker/API/V1/ArgumentSets/VolumeLookup","required":true,"array":false,"default":null},{"name":"allowed_hosts","description":"Array of IPv4 addresses which are allowed to access the volume.","type":"Aker/API/V1/Scalars/IPv4Address","required":false,"array":true,"default":null},{"name":"size_limit","description":"Hard size limit for volume in bytes.","type":"Rapid/Scalars/Integer","required":false,"array":false,"default":null},{"name":"inode_limit","description":"Hard limit for number of inodes volume can use.","type":"Rapid/Scalars/Integer","required":false,"array":false,"default":null},{"name":"posix_acl","description":"Should volume use POSIX ACL permissions?","type":"Rapid/Scalars/Boolean","required":false,"array":false,"default":null}]}},{"type":"endpoint","value":{"id":"Aker/API/V1/Endpoints/Volumes/Delete","name":"Delete a volume","description":"Deletes the specified volume","http_status":204,"authenticator":null,"argument_set":{"id":"Aker/API/V1/Endpoints/Volumes/Delete/BaseArgumentSet","name":null,"description":null,"arguments":[{"name":"volume","description":null,"type":"Aker/API/V1/ArgumentSets/VolumeLookup","required":true,"array":false,"default":null}]},"fields":[],"potential_errors":["Aker/API/V1/Errors/VastError","Aker/API/V1/Errors/VastTimeout","Aker/API/V1/Errors/VolumeNotFound"],"scopes":[]}},{"type":"argument_set","value":{"id":"Aker/API/V1/Endpoints/Volumes/Delete/BaseArgumentSet","name":null,"description":null,"arguments":[{"name":"volume","description":null,"type":"Aker/API/V1/ArgumentSets/VolumeLookup","required":true,"array":false,"default":null}]}}]}
