openapi: 3.0.2
info:
title: Cover Router Capacity API
version: 2.4.1
servers:
- url: http://127.0.0.1:3000
description: Local server
- url: https://api.staging.nexusmutual.io/
description: Staging server
- url: https://api.nexusmutual.io/
description: Production server
tags:
- name: Capacity
paths:
/v2/capacity/:
get:
tags:
- Capacity
description: Get capacity data for all products
parameters:
- in: query
name: period
schema:
type: integer
minimum: 28
maximum: 365
default: 30
description: Coverage period in days
responses:
'200':
description: Returns capacity for all products
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CapacityResult'
'400':
description: Invalid period
'500':
description: Internal Server Error
/v2/capacity/{productId}:
get:
tags:
- Capacity
description: Get capacity data for a product
parameters:
- in: path
name: productId
required: true
schema:
type: integer
description: The product id
- in: query
name: period
schema:
type: integer
minimum: 28
maximum: 365
default: 30
description: Coverage period in days
- in: query
name: coverEditId
required: false
schema:
type: integer
description: The id of the cover that is being edited
responses:
'200':
description: Returns capacity data for a product, including capacityPerPool data.
content:
application/json:
schema:
$ref: '#/components/schemas/CapacityResultWithPools'
example:
productId: 1
availableCapacity:
- assetId: 1
amount: '1000000000000000000'
asset:
id: 1
symbol: ETH
decimals: 18
allocatedNxm: '500000000000000000'
minAnnualPrice: '0.025'
maxAnnualPrice: '0.1'
capacityPerPool:
- poolId: 1
availableCapacity:
- assetId: 1
amount: '500000000000000000'
asset:
id: 1
symbol: ETH
decimals: 18
allocatedNxm: '250000000000000000'
minAnnualPrice: '0.025'
maxAnnualPrice: '0.1'
'400':
description: Invalid productId or period
'500':
description: Internal Server Error
/v2/capacity/pools/{poolId}:
get:
tags:
- Capacity
description: Gets capacity data for a pool, including all its products
parameters:
- in: path
name: poolId
required: true
schema:
type: integer
description: The pool id
- in: query
name: period
schema:
type: integer
minimum: 28
maximum: 365
default: 30
description: Coverage period in days
responses:
'200':
description: Returns capacity for all products in the specified pool
content:
application/json:
schema:
type: object
properties:
poolId:
type: integer
description: The pool id
utilizationRate:
type: integer
description: The pool-level utilization rate in basis points (0-10,000)
productsCapacity:
type: array
items:
$ref: '#/components/schemas/CapacityResult'
example:
poolId: 1
utilizationRate: 5000
productsCapacity:
- productId: 1
availableCapacity:
- assetId: 1
amount: '1000000000000000000'
asset:
id: 1
symbol: ETH
decimals: 18
allocatedNxm: '500000000000000000'
minAnnualPrice: '0.025'
maxAnnualPrice: '0.1'
'400':
description: Invalid pool id or period
'500':
description: Internal Server Error
/v2/capacity/pools/{poolId}/products/{productId}:
get:
tags:
- Capacity
description: Get capacity data for a specific product in a specific pool
parameters:
- in: path
name: poolId
required: true
schema:
type: integer
description: The pool id
- in: path
name: productId
required: true
schema:
type: integer
description: The product id
- in: query
name: period
schema:
type: integer
minimum: 28
maximum: 365
default: 30
description: Coverage period in days
responses:
'200':
description: Returns capacity for the specified product in the specified pool
content:
application/json:
schema:
$ref: '#/components/schemas/CapacityResult'
'400':
description: Invalid pool id, product id, or period
'404':
description: Product not found in the specified pool
'500':
description: Internal Server Error
components:
schemas:
AvailableCapacity:
type: object
properties:
assetId:
type: integer
description: The asset id
amount:
type: string
format: integer
description: The capacity amount expressed in the asset
asset:
$ref: '#/components/schemas/AssetInfo'
AssetInfo:
type: object
description: An object containing asset info
properties:
id:
type: integer
description: The id of the asset
symbol:
type: string
description: The symbol of the asset
decimals:
type: integer
description: The decimals of the asset
example: 18
CapacityResultWithPools:
allOf:
- $ref: '#/components/schemas/CapacityResult'
- type: object
properties:
capacityPerPool:
type: array
description: The capacity per pool breakdown
items:
allOf:
- $ref: '#/components/schemas/BaseCapacityFields'
- type: object
properties:
poolId:
type: integer
description: The pool id
BaseCapacityFields:
type: object
properties:
availableCapacity:
type: array
description: The maximum available capacity.
items:
$ref: '#/components/schemas/AvailableCapacity'
allocatedNxm:
type: string
format: integer
description: The used capacity amount for active covers.
minAnnualPrice:
type: string
description: The minimal annual price is a percentage value between 0-1.
maxAnnualPrice:
type: string
description: The maximal annual price is a percentage value between 0-1.
CapacityResult:
allOf:
- $ref: '#/components/schemas/BaseCapacityFields'
- type: object
properties:
productId:
type: integer
description: The product id