Slope Software Models API

The Models API from Slope Software — 13 operation(s) for models.

OpenAPI Specification

slope-software-models-api-openapi.yml Raw ↑
openapi: 3.0.4
info:
  title: Slope Arrays Models API
  version: '1.0'
tags:
- name: Models
paths:
  /api/v1/Models:
    get:
      tags:
      - Models
      summary: Get a paginated list of models by type (Library, Workspace, or Production).
      operationId: ListModels
      parameters:
      - name: ModelType
        in: query
        description: 'Type of models to retrieve: Library, Workspace, or Production'
        required: true
        schema:
          $ref: '#/components/schemas/ModelTypeFilter'
      - name: Fields
        in: query
        description: "Optional parameter to filter the top-level fields that are returned. \nThe list must be in CSV format. Example: field1,field2,field3"
        schema:
          type: string
      - name: Limit
        in: query
        description: Optional parameter to limit the number of items returned. Default is 200.
        schema:
          type: integer
          format: int32
      - name: Offset
        in: query
        description: Optional parameter to offset the items returned. Default is 0.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseListModelsResponseItemV1'
        '201':
          description: Created
        '400':
          description: Bad Request
        '403':
          description: Not Allowed To Access
        '429':
          description: Too Many Requests
        '404':
          description: Not Found
        '401':
          description: Unauthorized
      security:
      - API Token: []
  /api/v1/Models/{ModelId}/ProjectionTemplates:
    get:
      tags:
      - Models
      summary: Get model's projection templates.
      operationId: GetProjectionTemplatesByModelId
      parameters:
      - name: ModelId
        in: path
        description: Model Id
        required: true
        schema:
          type: integer
          description: Model Id
          format: int32
      - name: Fields
        in: query
        description: "Optional parameter to filter the top-level fields that are returned. \nThe list must be in CSV format. Example: field1,field2,field3"
        schema:
          type: string
      - name: Limit
        in: query
        description: Optional parameter to limit the number of items returned. Default is 200.
        schema:
          type: integer
          format: int32
      - name: Offset
        in: query
        description: Optional parameter to offset the items returned. Default is 0.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseGetModelProjectionTemplatesResponseItemV1'
        '201':
          description: Created
        '400':
          description: Bad Request
        '403':
          description: Not Allowed To Access
        '429':
          description: Too Many Requests
        '404':
          description: Not Found
        '401':
          description: Unauthorized
      security:
      - API Token: []
  /api/v1/Models/{ModelId}/DataTables:
    get:
      tags:
      - Models
      summary: Get model's data tables.
      operationId: GetDataTablesByModelId
      parameters:
      - name: ModelId
        in: path
        description: Model Id
        required: true
        schema:
          type: integer
          description: Model Id
          format: int32
      - name: TableStructureName
        in: query
        description: Optional Table Structure Name filter
        schema:
          type: string
      - name: Fields
        in: query
        description: "Optional parameter to filter the top-level fields that are returned. \nThe list must be in CSV format. Example: field1,field2,field3"
        schema:
          type: string
      - name: Limit
        in: query
        description: Optional parameter to limit the number of items returned. Default is 200.
        schema:
          type: integer
          format: int32
      - name: Offset
        in: query
        description: Optional parameter to offset the items returned. Default is 0.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseGetModelDataTablesResponseItemV1'
        '201':
          description: Created
        '400':
          description: Bad Request
        '403':
          description: Not Allowed To Access
        '429':
          description: Too Many Requests
        '404':
          description: Not Found
        '401':
          description: Unauthorized
      security:
      - API Token: []
  /api/v1/Models/{ModelId}/DecrementTables:
    get:
      tags:
      - Models
      summary: Get model's decrement tables.
      operationId: GetDecrementTablesByModelId
      parameters:
      - name: ModelId
        in: path
        description: Model Id
        required: true
        schema:
          type: integer
          description: Model Id
          format: int32
      - name: Fields
        in: query
        description: "Optional parameter to filter the top-level fields that are returned. \nThe list must be in CSV format. Example: field1,field2,field3"
        schema:
          type: string
      - name: Limit
        in: query
        description: Optional parameter to limit the number of items returned. Default is 200.
        schema:
          type: integer
          format: int32
      - name: Offset
        in: query
        description: Optional parameter to offset the items returned. Default is 0.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseGetModelDecrementTablesResponseItemV1'
        '201':
          description: Created
        '400':
          description: Bad Request
        '403':
          description: Not Allowed To Access
        '429':
          description: Too Many Requests
        '404':
          description: Not Found
        '401':
          description: Unauthorized
      security:
      - API Token: []
  /api/v1/Models/{ModelId}/ScenarioTables:
    get:
      tags:
      - Models
      summary: Get model's scenario tables.
      operationId: GetScenarioTablesByModelId
      parameters:
      - name: ModelId
        in: path
        description: Model Id
        required: true
        schema:
          type: integer
          description: Model Id
          format: int32
      - name: Fields
        in: query
        description: "Optional parameter to filter the top-level fields that are returned. \nThe list must be in CSV format. Example: field1,field2,field3"
        schema:
          type: string
      - name: Limit
        in: query
        description: Optional parameter to limit the number of items returned. Default is 200.
        schema:
          type: integer
          format: int32
      - name: Offset
        in: query
        description: Optional parameter to offset the items returned. Default is 0.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseGetModelScenarioTablesResponseItemV1'
        '201':
          description: Created
        '400':
          description: Bad Request
        '403':
          description: Not Allowed To Access
        '429':
          description: Too Many Requests
        '404':
          description: Not Found
        '401':
          description: Unauthorized
      security:
      - API Token: []
  /api/v1/Models/{ModelId}/ImprovementScales:
    get:
      tags:
      - Models
      summary: Get model's improvement scales.
      operationId: GetImprovementScalesByModelId
      parameters:
      - name: ModelId
        in: path
        description: Model Id
        required: true
        schema:
          type: integer
          description: Model Id
          format: int32
      - name: Fields
        in: query
        description: "Optional parameter to filter the top-level fields that are returned. \nThe list must be in CSV format. Example: field1,field2,field3"
        schema:
          type: string
      - name: Limit
        in: query
        description: Optional parameter to limit the number of items returned. Default is 200.
        schema:
          type: integer
          format: int32
      - name: Offset
        in: query
        description: Optional parameter to offset the items returned. Default is 0.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseGetModelImprovementScalesResponseItemV1'
        '201':
          description: Created
        '400':
          description: Bad Request
        '403':
          description: Not Allowed To Access
        '429':
          description: Too Many Requests
        '404':
          description: Not Found
        '401':
          description: Unauthorized
      security:
      - API Token: []
  /api/v1/Models/{ModelId}/TableStructures:
    get:
      tags:
      - Models
      summary: Get model's table structures.
      operationId: GetTableStructuresByModelId
      parameters:
      - name: ModelId
        in: path
        description: Model Id
        required: true
        schema:
          type: integer
          description: Model Id
          format: int32
      - name: Fields
        in: query
        description: "Optional parameter to filter the top-level fields that are returned. \nThe list must be in CSV format. Example: field1,field2,field3"
        schema:
          type: string
      - name: Limit
        in: query
        description: Optional parameter to limit the number of items returned. Default is 200.
        schema:
          type: integer
          format: int32
      - name: Offset
        in: query
        description: Optional parameter to offset the items returned. Default is 0.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseGetModelTableStructuresResponseItemV1'
        '201':
          description: Created
        '400':
          description: Bad Request
        '403':
          description: Not Allowed To Access
        '429':
          description: Too Many Requests
        '404':
          description: Not Found
        '401':
          description: Unauthorized
      security:
      - API Token: []
  /api/v1/Models/{ModelId}/InvestmentStrategies:
    get:
      tags:
      - Models
      summary: Get model's investment strategies.
      operationId: GetInvestmentStrategiesByModelId
      parameters:
      - name: ModelId
        in: path
        description: Model Id
        required: true
        schema:
          type: integer
          description: Model Id
          format: int32
      - name: Fields
        in: query
        description: "Optional parameter to filter the top-level fields that are returned. \nThe list must be in CSV format. Example: field1,field2,field3"
        schema:
          type: string
      - name: Limit
        in: query
        description: Optional parameter to limit the number of items returned. Default is 200.
        schema:
          type: integer
          format: int32
      - name: Offset
        in: query
        description: Optional parameter to offset the items returned. Default is 0.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseGetModelInvestmentStrategiesResponseItemV1'
        '201':
          description: Created
        '400':
          description: Bad Request
        '403':
          description: Not Allowed To Access
        '429':
          description: Too Many Requests
        '404':
          description: Not Found
        '401':
          description: Unauthorized
      security:
      - API Token: []
  /api/v1/Models/{ModelId}/Products:
    get:
      tags:
      - Models
      summary: Get model's products.
      operationId: GetProductsByModelId
      parameters:
      - name: ModelId
        in: path
        description: Model Id
        required: true
        schema:
          type: integer
          description: Model Id
          format: int32
      - name: Fields
        in: query
        description: "Optional parameter to filter the top-level fields that are returned. \nThe list must be in CSV format. Example: field1,field2,field3"
        schema:
          type: string
      - name: Limit
        in: query
        description: Optional parameter to limit the number of items returned. Default is 200.
        schema:
          type: integer
          format: int32
      - name: Offset
        in: query
        description: Optional parameter to offset the items returned. Default is 0.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseGetModelProductsResponseItemV1'
        '201':
          description: Created
        '400':
          description: Bad Request
        '403':
          description: Not Allowed To Access
        '429':
          description: Too Many Requests
        '404':
          description: Not Found
        '401':
          description: Unauthorized
      security:
      - API Token: []
  /api/v1/Models/{ModelId}/VariableRates:
    get:
      tags:
      - Models
      summary: Get model's variable rates.
      operationId: GetVariableRatesByModelId
      parameters:
      - name: ModelId
        in: path
        description: Model Id
        required: true
        schema:
          type: integer
          description: Model Id
          format: int32
      - name: Fields
        in: query
        description: "Optional parameter to filter the top-level fields that are returned. \nThe list must be in CSV format. Example: field1,field2,field3"
        schema:
          type: string
      - name: Limit
        in: query
        description: Optional parameter to limit the number of items returned. Default is 200.
        schema:
          type: integer
          format: int32
      - name: Offset
        in: query
        description: Optional parameter to offset the items returned. Default is 0.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseGetModelVariableRatesResponseItemV1'
        '201':
          description: Created
        '400':
          description: Bad Request
        '403':
          description: Not Allowed To Access
        '429':
          description: Too Many Requests
        '404':
          description: Not Found
        '401':
          description: Unauthorized
      security:
      - API Token: []
  /api/v1/Models/{ModelId}/Copy:
    post:
      tags:
      - Models
      summary: Initiate an asynchronous copy of a model. Returns a token to check copy status.
      description: 'Creates a full copy of the specified model. The copy is performed asynchronously in the background. Use the returned copy token to check the status of the copy operation. Note: Copy tokens are only valid for 24 hours after the copy is initiated. Library models cannot be copied in this version.'
      operationId: CopyModel
      parameters:
      - name: ModelId
        in: path
        description: The ID of the model to copy
        required: true
        schema:
          maximum: 2147483647
          minimum: 1
          type: integer
          description: The ID of the model to copy
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CopyModelRequestV1'
          text/json:
            schema:
              $ref: '#/components/schemas/CopyModelRequestV1'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CopyModelRequestV1'
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CopyModelResponseV1'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '200':
          description: Success
        '201':
          description: Created
        '429':
          description: Too Many Requests
        '401':
          description: Unauthorized
      security:
      - API Token: []
  /api/v1/Models/CopyStatus/{Token}:
    get:
      tags:
      - Models
      summary: Check the status of an asynchronous model copy operation.
      description: 'Returns the current status of a model copy operation initiated via the Copy endpoint. The status can be Running, Completed, or Failed. When completed, the response includes the ID of the newly created model. When failed, the response includes an error message. Note: Copy tokens are only valid for 24 hours.'
      operationId: GetModelCopyStatus
      parameters:
      - name: Token
        in: path
        description: The copy token returned from the Copy endpoint
        required: true
        schema:
          type: string
          description: The copy token returned from the Copy endpoint
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelCopyStatusResponseV1'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '201':
          description: Created
        '400':
          description: Bad Request
        '403':
          description: Not Allowed To Access
        '429':
          description: Too Many Requests
        '401':
          description: Unauthorized
      security:
      - API Token: []
  /api/v1/Models/{ModelId}/Arrays:
    get:
      tags:
      - Models
      summary: Get model's arrays.
      operationId: GetArraysByModelId
      parameters:
      - name: ModelId
        in: path
        description: Model Id
        required: true
        schema:
          type: integer
          description: Model Id
          format: int32
      - name: Fields
        in: query
        description: "Optional parameter to filter the top-level fields that are returned. \nThe list must be in CSV format. Example: field1,field2,field3"
        schema:
          type: string
      - name: Limit
        in: query
        description: Optional parameter to limit the number of items returned. Default is 200.
        schema:
          type: integer
          format: int32
      - name: Offset
        in: query
        description: Optional parameter to offset the items returned. Default is 0.
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponseGetModelArraysResponseItemV1'
        '201':
          description: Created
        '400':
          description: Bad Request
        '403':
          description: Not Allowed To Access
        '429':
          description: Too Many Requests
        '404':
          description: Not Found
        '401':
          description: Unauthorized
      security:
      - API Token: []
components:
  schemas:
    PaginatedResponseGetModelScenarioTablesResponseItemV1:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/GetModelScenarioTablesResponseItemV1'
          description: Items within the page
          nullable: true
        offset:
          type: integer
          description: Offset to retrieve the next page. Null when there are no further records.
          format: int32
          nullable: true
          readOnly: true
      additionalProperties: false
      description: Paginated response that will only return an offset if there are remaining pages
    PaginatedResponseGetModelProjectionTemplatesResponseItemV1:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/GetModelProjectionTemplatesResponseItemV1'
          description: Items within the page
          nullable: true
        offset:
          type: integer
          description: Offset to retrieve the next page. Null when there are no further records.
          format: int32
          nullable: true
          readOnly: true
      additionalProperties: false
      description: Paginated response that will only return an offset if there are remaining pages
    ShortTermInterpolationMethod:
      enum:
      - AnnualEffectiveRate
      - FromZero
      type: string
    PaginatedResponseGetModelVariableRatesResponseItemV1:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/GetModelVariableRatesResponseItemV1'
          description: Items within the page
          nullable: true
        offset:
          type: integer
          description: Offset to retrieve the next page. Null when there are no further records.
          format: int32
          nullable: true
          readOnly: true
      additionalProperties: false
      description: Paginated response that will only return an offset if there are remaining pages
    ProductType:
      enum:
      - Asset
      - Liability
      type: string
    GetModelImprovementScalesResponseItemV1:
      type: object
      properties:
        id:
          type: integer
          description: Improvement Scale ID
          format: int32
        name:
          type: string
          description: Improvement Scale Name
          nullable: true
        description:
          type: string
          description: Improvement Scale Description
          nullable: true
        improvementScaleType:
          $ref: '#/components/schemas/ImprovementScaleType'
        firstCalendarYear:
          type: integer
          description: First Calendar Year
          format: int32
          nullable: true
        ultimateCalendarYear:
          type: integer
          description: Ultimate Calendar Year
          format: int32
          nullable: true
        version:
          type: integer
          description: Version
          format: int32
      additionalProperties: false
    GetModelArraysResponseItemV1:
      type: object
      properties:
        id:
          type: integer
          description: Array ID
          format: int32
        name:
          type: string
          description: Array Name
          nullable: true
        arraySource:
          type: string
          description: Array Source
          nullable: true
      additionalProperties: false
    YieldCurveRateType:
      enum:
      - BondEquivalent
      - AnnualEffective
      - SpotRate
      type: string
    PaginatedResponseGetModelDecrementTablesResponseItemV1:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/GetModelDecrementTablesResponseItemV1'
          description: Items within the page
          nullable: true
        offset:
          type: integer
          description: Offset to retrieve the next page. Null when there are no further records.
          format: int32
          nullable: true
          readOnly: true
      additionalProperties: false
      description: Paginated response that will only return an offset if there are remaining pages
    GetModelProductsResponseItemV1:
      type: object
      properties:
        id:
          type: integer
          description: Product ID
          format: int32
        name:
          type: string
          description: Product Name
          nullable: true
        description:
          type: string
          description: Product Description
          nullable: true
        type:
          $ref: '#/components/schemas/ProductType'
      additionalProperties: false
    PaginatedResponseGetModelArraysResponseItemV1:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/GetModelArraysResponseItemV1'
          description: Items within the page
          nullable: true
        offset:
          type: integer
          description: Offset to retrieve the next page. Null when there are no further records.
          format: int32
          nullable: true
          readOnly: true
      additionalProperties: false
      description: Paginated response that will only return an offset if there are remaining pages
    GetModelScenarioTablesFileReferenceV1:
      type: object
      properties:
        id:
          type: integer
          description: File Reference ID
          format: int32
        version:
          type: integer
          description: File Reference Version
          format: int32
        path:
          type: string
          description: File Reference Path
          nullable: true
        delimiter:
          type: string
          description: Delimiter
          nullable: true
        excelSheetName:
          type: string
          description: Excel Sheet Name
          nullable: true
      additionalProperties: false
    CopyModelResponseV1:
      type: object
      properties:
        copyToken:
          type: string
          description: Token used to check the status of the copy operation
          nullable: true
        statusUrl:
          type: string
          description: URL to poll for copy operation status
          nullable: true
      additionalProperties: false
    ListModelsResponseItemV1:
      type: object
      properties:
        id:
          type: integer
          description: Model ID
          format: int32
        name:
          type: string
          description: Model Name
          nullable: true
        lastModifiedOn:
          type: string
          description: Last Modified Date
          format: date-time
        folderPath:
          type: string
          description: Folder path (if model is in a folder)
          nullable: true
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    GetModelProjectionTemplatesResponseItemV1:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type: string
          nullable: true
      additionalProperties: false
    GetModelVariableRatesResponseItemV1:
      type: object
      properties:
        id:
          type: integer
          description: Variable Rate ID
          format: int32
        name:
          type: string
          description: Variable Rate Name
          nullable: true
        description:
          type: string
          description: Variable Rate Description
          nullable: true
        rateInputType:
          $ref: '#/components/schemas/VariableRateType'
      additionalProperties: false
    CopyModelRequestV1:
      required:
      - folderPath
      - newModelName
      type: object
      properties:
        newModelName:
          maxLength: 128
          minLength: 1
          type: string
          description: The name for the new copied model
        folderPath:
          minLength: 1
          type: string
          description: 'The folder path where the copied model should be placed.

            Use folder names as displayed in the UI (e.g., "/Top Folder/Sub-Folder").

            Use "/" or null for the root folder.'
          example: string
      additionalProperties: false
    PaginatedResponseGetModelInvestmentStrategiesResponseItemV1:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/GetModelInvestmentStrategiesResponseItemV1'
          description: Items within the page
          nullable: true
        offset:
          type: integer
          description: Offset to retrieve the next page. Null when there are no further records.
          format: int32
          nullable: true
          readOnly: true
      additionalProperties: false
      description: Paginated response that will only return an offset if there are remaining pages
    VariableRateType:
      enum:
      - MonthlyReturns
      - AnnualReturns
      - IndexValues
      type: string
    GetModelDataTablesResponseItemV1:
      type: object
      properties:
        id:
          type: integer
          description: Data Table ID
          format: int32
        name:
          type: string
          description: Data Table Name
          nullable: true
        tableStructureId:
          type: integer
          description: Data Table Structure ID
          format: int32
          nullable: true
        tableStructureName:
          type: string
          description: Data Table Structure Name
          nullable: true
        version:
          type: integer
          description: Data Table Version
          format: int32
        isLatestVersion:
          type: boolean
          description: Is Latest Version of Data Table?
      additionalProperties: false
    PaginatedResponseGetModelImprovementScalesResponseItemV1:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/GetModelImprovementScalesResponseItemV1'
          description: Items within the page
          nullable: true
        offset:
          type: integer
          description: Offset to retrieve the next page. Null when there are no further records.
          format: int32
          nullable: true
          readOnly: true
      additionalProperties: false
      description: Paginated response that will only return an offset if there are remaining pages
    ModelTypeFilter:
      enum:
      - Library
      - Workspace
      - Production
      type: string
    ModelCopyStatusV1:
      enum:
      - Running
      - Completed
      - Failed
      type: string
      description: Status of a model copy operation
    PaginatedResponseGetModelTableStructuresResponseItemV1:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/GetModelTableStructuresResponseItemV1'
          description: Items within the page
          nullable: true
        offset:
          type: integer
          description: Offset to retrieve the next page. Null when there are no further records.
          format: int32
          nullable: true
          readOnly: true
      additionalProperties: false
      description: Paginated response that will only return an offset if there are remaining pages
    PaginatedResponseGetModelDataTab

# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/slope-software/refs/heads/main/openapi/slope-software-models-api-openapi.yml