Slope Software Projections API

The Projections API from Slope Software — 6 operation(s) for projections.

Operations 8

GET /api/v1/Projections Get a paginated list of projections in the workspace. #
POST /api/v1/Projections Create a projection using an existing projection template. #
GET /api/v1/Projections/{projectionId} Get Projection Details by Id. #
PATCH /api/v1/Projections/{projectionId} Update projection properties. #
POST /api/v1/Projections/{projectionId}/Run Start a projection run. #
POST /api/v1/Projections/Portfolios/{portfolioId}/Products Add a new product to a portfolio on a projection. #
POST /api/v1/Projections/{projectionId}/Copy Copies a projection. #
DELETE /api/v1/Projections/Portfolios/Products/{productId} Remove a product from a projection's portfolio. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/slope-software-projections-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

slope-software-projections-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Slope Arrays Projections API
  version: '1.0'
servers:
- url: https://api.slopesoftware.com
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Projections
paths:
  /api/v1/Projections:
    get:
      tags:
      - Projections
      summary: Get a paginated list of projections in the workspace.
      description: Returns projections accessible to the current user. Workspace API tokens see all projections; Personal API tokens only see projections for models the user has access to.
      operationId: ListProjections
      parameters:
      - 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/PaginatedResponseListProjectionsResponseItemV1'
        '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: []
    post:
      tags:
      - Projections
      summary: Create a projection using an existing projection template.
      operationId: CreateProjectionFromTemplate
      parameters:
      - name: TemplateId
        in: query
        description: Template ID
        schema:
          type: integer
          description: Template ID
          format: int32
      - name: Name
        in: query
        description: Projection Name
        schema:
          type: string
          description: Projection Name
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectionFromTemplateRequestV1'
          text/json:
            schema:
              $ref: '#/components/schemas/CreateProjectionFromTemplateRequestV1'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CreateProjectionFromTemplateRequestV1'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateProjectionFromTemplateResponseV1'
        '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/Projections/{projectionId}:
    get:
      tags:
      - Projections
      summary: Get Projection Details by Id.
      operationId: GetProjectionById
      parameters:
      - name: projectionId
        in: path
        description: Projection ID
        required: true
        schema:
          type: integer
          description: Projection ID
          format: int32
      - name: Fields
        in: query
        description: 'Optional parameter to filter the top-level fields that are returned. The list must be in CSV format.

          Example: field1,field2,field3'
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProjectionResponseV1'
        '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: []
    patch:
      tags:
      - Projections
      summary: Update projection properties.
      description: Validating model point files is limited to 100K rows with 20 columns.<br/><b>For larger model point files set ValidateModelPointFiles to false.</b>
      operationId: UpdateExistingProjection
      parameters:
      - name: projectionId
        in: path
        description: Projection ID
        required: true
        schema:
          type: integer
          description: Projection ID
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProjectionRequestV1'
          text/json:
            schema:
              $ref: '#/components/schemas/UpdateProjectionRequestV1'
          application/*+json:
            schema:
              $ref: '#/components/schemas/UpdateProjectionRequestV1'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProjectionResponseV1'
        '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/Projections/{projectionId}/Run:
    post:
      tags:
      - Projections
      summary: Start a projection run.
      operationId: RunProjectionById
      parameters:
      - name: projectionId
        in: path
        description: Projection ID
        required: true
        schema:
          type: integer
          description: Projection ID
          format: int32
      responses:
        '200':
          description: OK
        '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/Projections/Portfolios/{portfolioId}/Products:
    post:
      tags:
      - Projections
      summary: Add a new product to a portfolio on a projection.
      operationId: AddProductToPortfolio
      parameters:
      - name: portfolioId
        in: path
        description: Portfolio ID on the projection
        required: true
        schema:
          type: integer
          description: Portfolio ID on the projection
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddProductToPortfolioRequestV1'
          text/json:
            schema:
              $ref: '#/components/schemas/AddProductToPortfolioRequestV1'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AddProductToPortfolioRequestV1'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddProductToPortfolioResponseV1'
        '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/Projections/{projectionId}/Copy:
    post:
      tags:
      - Projections
      summary: Copies a projection.
      description: SetTablesToLatestVersion will default to True if omitted.<br/>ProjectionName will default to the copied projection's name if omitted.
      operationId: CopyProjection
      parameters:
      - name: projectionId
        in: path
        description: Projection ID
        required: true
        schema:
          type: integer
          description: Projection ID
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CopyProjectionRequestV1'
          text/json:
            schema:
              $ref: '#/components/schemas/CopyProjectionRequestV1'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CopyProjectionRequestV1'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CopyProjectionResponseV1'
        '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/Projections/Portfolios/Products/{productId}:
    delete:
      tags:
      - Projections
      summary: Remove a product from a projection's portfolio.
      operationId: DeletePortfolioProduct
      parameters:
      - name: productId
        in: path
        description: Product ID
        required: true
        schema:
          type: integer
          description: Product ID
          format: int32
      responses:
        '200':
          description: OK
        '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:
    AddProductFilterRequestV1:
      required:
      - field
      - value
      type: object
      properties:
        field:
          minLength: 1
          type: string
          description: Model Point Field Name
        value:
          minLength: 1
          type: string
          description: Filter Value
      additionalProperties: false
    AddProductModelPointFileRequestV1:
      type: object
      properties:
        fileId:
          type:
          - integer
          - 'null'
          description: File ID
          format: int32
        filePath:
          type:
          - string
          - 'null'
          description: File Path
        fileVersion:
          type:
          - integer
          - 'null'
          description: File Version
          format: int32
        delimiter:
          type:
          - string
          - 'null'
          description: Delimiter (max 2 characters)
        excelSheetName:
          type:
          - string
          - 'null'
          description: Excel Sheet Name
      additionalProperties: false
    GetProjectionModelV1:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type:
          - string
          - 'null'
      additionalProperties: false
    AddProductToPortfolioResponseV1:
      type: object
      properties:
        id:
          type: integer
          format: int32
      additionalProperties: false
    GetProjectionPortfolioProductV1:
      type: object
      properties:
        id:
          type: integer
          format: int32
        productId:
          type:
          - integer
          - 'null'
          format: int32
        name:
          type:
          - string
          - 'null'
        productType:
          $ref: '#/components/schemas/ProductType'
        modelPointFile:
          $ref: '#/components/schemas/FileReferenceDto'
        filters:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/GetProjectionProductModelPointFilterV1'
        productOutputGroupings:
          type:
          - array
          - 'null'
          items:
            type: integer
            format: int32
      additionalProperties: false
    CreateProjectionFromTemplateResponseV1:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type:
          - string
          - 'null'
      additionalProperties: false
    CopyProjectionResponseV1:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type:
          - string
          - 'null'
      additionalProperties: false
    UpdateProjectionPortfolioDto:
      type: object
      properties:
        id:
          type:
          - integer
          - 'null'
          description: Portfolio ID
          format: int32
        name:
          type:
          - string
          - 'null'
          description: Portfolio Name
        products:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/UpdateProjectionProductDto'
          description: Portfolio Products
      additionalProperties: false
    PaginatedResponseListProjectionsResponseItemV1:
      type: object
      properties:
        items:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/ListProjectionsResponseItemV1'
          description: Items within the page
        offset:
          type:
          - integer
          - 'null'
          description: Offset to retrieve the next page. Null when there are no further records.
          format: int32
          readOnly: true
      additionalProperties: false
      description: Paginated response that will only return an offset if there are remaining pages
    GetProjectionDataTableV1:
      type: object
      properties:
        tableStructureId:
          type:
          - integer
          - 'null'
          format: int32
        tableStructureName:
          type:
          - string
          - 'null'
        dataTableId:
          type:
          - integer
          - 'null'
          format: int32
        dataTableName:
          type:
          - string
          - 'null'
        dataTableVersionNumber:
          type:
          - integer
          - 'null'
          format: int32
        isRequired:
          type: boolean
      additionalProperties: false
    UpdateProjectionProductDto:
      type: object
      properties:
        id:
          type:
          - integer
          - 'null'
          description: Product ID
          format: int32
        name:
          type:
          - string
          - 'null'
          description: Product Name
        modelPointFile:
          $ref: '#/components/schemas/FileReferenceDto'
        modelPointFilters:
          type:
          - object
          - 'null'
          additionalProperties:
            type:
            - string
            - 'null'
          description: Model Point Filters
      additionalProperties: false
    CreateProjectionFromTemplateRequestV1:
      type: object
      properties:
        templateId:
          type:
          - integer
          - 'null'
          description: Template ID
          format: int32
        name:
          type:
          - string
          - 'null'
          description: Projection Name
      additionalProperties: {}
    FileReferenceDto:
      type: object
      properties:
        fileId:
          type:
          - integer
          - 'null'
          format: int32
        filePath:
          type:
          - string
          - 'null'
        fileVersion:
          type:
          - integer
          - 'null'
          format: int32
        delimiter:
          type:
          - string
          - 'null'
        excelSheetName:
          type:
          - string
          - 'null'
      additionalProperties: false
    GetProjectionResponseV1:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type:
          - string
          - 'null'
        status:
          $ref: '#/components/schemas/ProjectionRunStatus'
        isRunning:
          type: boolean
        startDate:
          type: string
          format: date-time
        periodInMonths:
          type: integer
          format: int32
        runStartDateUtc:
          type:
          - string
          - 'null'
          format: date-time
        runCompletedDateUtc:
          type:
          - string
          - 'null'
          format: date-time
        outputAllResults:
          type: boolean
        disableModelPointOutput:
          type: boolean
        forceStaticProcessing:
          type: boolean
        isLocked:
          type: boolean
        numberOfCores:
          type: integer
          format: int32
        scenarioTableId:
          type:
          - integer
          - 'null'
          format: int32
        model:
          $ref: '#/components/schemas/GetProjectionModelV1'
        portfolios:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/GetProjectionPortfolioV1'
        virtualFolders:
          type:
          - array
          - 'null'
          items:
            type: string
        tags:
          type:
          - array
          - 'null'
          items:
            type: string
        dataTables:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/GetProjectionDataTableV1'
      additionalProperties: false
    GetProjectionProductModelPointFilterV1:
      type: object
      properties:
        field:
          type:
          - string
          - 'null'
        value:
          type:
          - string
          - 'null'
      additionalProperties: false
    UpdateProjectionDataTableDto:
      type: object
      properties:
        tableStructureId:
          type:
          - integer
          - 'null'
          description: Table Structure ID
          format: int32
        tableStructureName:
          type:
          - string
          - 'null'
          description: Table Structure Name
        dataTableId:
          type:
          - integer
          - 'null'
          description: Data Table ID
          format: int32
        dataTableName:
          type:
          - string
          - 'null'
          description: Data Table Name
        dataTableVersion:
          type:
          - integer
          - 'null'
          description: Data Table Version
          format: int32
      additionalProperties: false
    ProductType:
      enum:
      - Asset
      - Liability
      type: string
    GetProjectionPortfolioV1:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type:
          - string
          - 'null'
        products:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/GetProjectionPortfolioProductV1'
      additionalProperties: false
    AddProductToPortfolioRequestV1:
      required:
      - name
      - productId
      type: object
      properties:
        productId:
          type: integer
          description: Product ID from the model
          format: int32
        name:
          maxLength: 128
          minLength: 0
          type: string
          description: Product Name
        modelPointFile:
          $ref: '#/components/schemas/AddProductModelPointFileRequestV1'
        filters:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/AddProductFilterRequestV1'
          description: Model Point Filters
        productOutputGroupings:
          type:
          - array
          - 'null'
          items:
            type: integer
            format: int32
          description: Product Output Grouping IDs
      additionalProperties: {}
    CopyProjectionRequestV1:
      type: object
      properties:
        projectionName:
          type:
          - string
          - 'null'
        setTablesToLatestVersion:
          type: boolean
      additionalProperties: {}
    ProjectionRunStatus:
      enum:
      - NotStarted
      - Running
      - Completed
      - Failed
      - Queued
      - Cancelled
      - CompletedWithErrors
      - ErrorLimitReached
      - WaitingForInserts
      - Queuing
      - Deleting
      - Preparing
      - FailedToStart
      - Validating
      - ValidationFailed
      - CompletedWithWarnings
      type: string
    ListProjectionsResponseItemV1:
      type: object
      properties:
        id:
          type: integer
          format: int32
        name:
          type:
          - string
          - 'null'
        status:
          $ref: '#/components/schemas/ProjectionRunStatus'
        startDate:
          type: string
          format: date-time
        isRunning:
          type: boolean
        isLocked:
          type: boolean
        virtualFolders:
          type:
          - array
          - 'null'
          items:
            type: string
        tags:
          type:
          - array
          - 'null'
          items:
            type: string
        runStartDateUtc:
          type:
          - string
          - 'null'
          format: date-time
        runCompletedDateUtc:
          type:
          - string
          - 'null'
          format: date-time
        modelId:
          type: integer
          format: int32
      additionalProperties: false
    UpdateProjectionRequestV1:
      type: object
      properties:
        name:
          type:
          - string
          - 'null'
          description: Projection Name - Can be updated for projections in any status
        scenarioTableId:
          type:
          - integer
          - 'null'
          description: Scenario Table ID
          format: int32
        scenarioSubset:
          type:
          - string
          - 'null'
          description: Scenario Subset
        startDate:
          type:
          - string
          - 'null'
          description: Start Date
          format: date-time
        periodInMonths:
          type:
          - integer
          - 'null'
          description: Period in Months
          format: int32
        outputAllResults:
          type:
          - boolean
          - 'null'
          description: Output All Results
        disableModelPointOutput:
          type:
          - boolean
          - 'null'
          description: Disable Model Point Output
        forceStaticProcessing:
          type:
          - boolean
          - 'null'
          description: Force Static Processing
        numberOfCores:
          type:
          - integer
          - 'null'
          description: Number of Cores
          format: int32
        validateModelPointFiles:
          type:
          - boolean
          - 'null'
          description: Validate Model Point Files
        dataTables:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/UpdateProjectionDataTableDto'
          description: Projection Data Tables
        portfolios:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/UpdateProjectionPortfolioDto'
          description: Projection Portfolios
        virtualFolders:
          type:
          - array
          - 'null'
          items:
            type: string
          description: Virtual Folders - Array of folder paths. Projections can exist in multiple folders. If empty array is passed, all folders are cleared. If not passed, folders are not updated. Can be updated for projections in any status.
        tags:
          type:
          - array
          - 'null'
          items:
            type: string
          description: Tags - Array of tag names. If empty array is passed, all tags are cleared. If not passed, tags are not updated. Can be updated for projections in any status.
        isLocked:
          type:
          - boolean
          - 'null'
          description: Lock or unlock a projection. Locking requires LockProjections permission or a workspace token. Unlocking requires UnlockProjections permission or a workspace token. Only projections in a completed/failed status can be locked.
      additionalProperties: false
  securitySchemes:
    API_Token:
      type: http
      description: The API token received from the Authorize endpoint goes here.
      scheme: Bearer
      bearerFormat: JWT