# This is the IronFunctions API spec # If you make changes here, remember to run `go generate` in routeserver/ and # tasker/ to make sure you use the changes. swagger: '2.0' info: title: IronFunctions description: version: "0.0.1" # the domain of the service host: "localhost:8080" # array of all schemes that your API supports schemes: - https - http # will be prefixed to all paths basePath: /v1 consumes: - application/json produces: - application/json paths: /apps: get: summary: "Get all app names." description: "Get a list of all the apps in the system." tags: - Apps responses: 200: description: List of apps. schema: $ref: '#/definitions/AppsWrapper' default: description: Unexpected error schema: $ref: '#/definitions/Error' post: summary: "Post new app" description: "Insert a new app" tags: - Apps parameters: - name: body in: body description: App to post. required: true schema: $ref: '#/definitions/AppWrapper' responses: 200: description: App details and stats. schema: $ref: '#/definitions/AppWrapper' 400: description: Parameters are missing or invalid. schema: $ref: '#/definitions/Error' 500: description: Could not accept app due to internal error. schema: $ref: '#/definitions/Error' default: description: Unexpected error schema: $ref: '#/definitions/Error' /apps/{app}: get: summary: "Get information for a app." description: "This gives more details about a app, such as statistics." tags: - Apps parameters: - name: name in: path description: name of the app. required: true type: string responses: 200: description: App details and stats. schema: $ref: '#/definitions/AppWrapper' 404: description: App does not exist. schema: $ref: '#/definitions/Error' default: description: Unexpected error schema: $ref: '#/definitions/Error' put: summary: "Create/update a app." description: "You can set app level settings here. " tags: - Apps parameters: - name: app in: path description: name of the app. required: true type: string - name: body in: body description: App to post. required: true schema: $ref: '#/definitions/AppWrapper' responses: 200: description: App details and stats. schema: $ref: '#/definitions/AppWrapper' 400: description: Parameters are missing or invalid. schema: $ref: '#/definitions/Error' 500: description: Could not accept app due to internal error. schema: $ref: '#/definitions/Error' default: description: Unexpected error schema: $ref: '#/definitions/Error' /apps/{app}/routes: post: summary: Create new Route description: Create a new route tags: - Routes parameters: - name: app in: path description: name of the app. required: true type: string - name: body in: body description: Array of routes to post. required: true schema: $ref: '#/definitions/NewRoutesWrapper' responses: 201: description: Route created schema: $ref: '#/definitions/RoutesWrapper' 400: description: One or more of the routes were invalid due to parameters being missing or invalid. schema: $ref: '#/definitions/Error' 500: description: Could not accept routes due to internal error. schema: $ref: '#/definitions/Error' default: description: Unexpected error schema: $ref: '#/definitions/Error' get: summary: Get route list by app name. description: This will list routes for a particular app. tags: - Routes parameters: - name: app in: path description: Name of app for this set of routes. required: true type: string responses: 200: description: Route information schema: $ref: '#/definitions/RoutesWrapper' default: description: Unexpected error schema: $ref: '#/definitions/Error' /apps/{app}/routes/{route}: get: summary: Gets route by name description: Gets a route by name. tags: - Routes parameters: - name: app in: path description: Name of app for this set of routes. required: true type: string - name: route in: path description: Route name required: true type: string responses: 200: description: Route information schema: $ref: '#/definitions/RouteWrapper' 404: description: Route does not exist. schema: $ref: '#/definitions/Error' default: description: Unexpected error schema: $ref: '#/definitions/Error' delete: summary: Deletes the route tags: - Routes description: Deletes the route. parameters: - name: app in: path description: Name of app for this set of routes. required: true type: string - name: route in: path description: Route name required: true type: string responses: 200: description: Route successfully deleted. Deletion succeeds even on routes that do not exist. definitions: Route: allOf: - type: object properties: name: type: string description: "Route name" readOnly: true app_name: type: string description: "App this route belongs to." readOnly: true path: type: string description: URL path that will be matched to this route image: description: Name of Docker image to use in this route. You should include the image tag, which should be a version number, to be more accurate. Can be overridden on a per route basis with route.image. type: string headers: type: string description: Map of http headers that will be sent with the response App: type: object properties: name: type: string description: "Name of this app. Must be different than the image name. Can ony contain alphanumeric, -, and _." readOnly: true RoutesWrapper: type: object required: - routes properties: routes: type: array items: $ref: '#/definitions/Route' cursor: type: string description: Used to paginate results. If this is returned, pass it into the same query again to get more results. error: $ref: '#/definitions/ErrorBody' RouteWrapper: type: object required: - route properties: route: $ref: '#/definitions/Route' AppsWrapper: type: object required: - apps properties: apps: type: array items: $ref: '#/definitions/App' AppWrapper: type: object required: - app properties: app: $ref: '#/definitions/App' ErrorBody: type: object properties: message: type: string readOnly: true fields: type: string readOnly: true Error: type: object properties: error: $ref: '#/definitions/ErrorBody'