openapi: 3.2.0
info:
title: Canoe API v1 Funds API
version: 1.0.0
description: "Canoe's API provides methods for retrieving extracted data from documents and their metadata as well as data from downloaded PDFs. This documentation includes detailed explanations of API endpoints and examples. You may not have access to all of the listed endpoints depending on the services you've purchased from Canoe as well as your user permissions.\n<p>By using Canoe’s API Documentation, you agree to the most recent version of <a href=\"https://canoeintelligence.com/api-terms-of-use/\" target=\"_blank\"><u>Canoe’s Developer Portal Terms of Use.</u></a></p>\n<p>In addition to the <code class=\"prettyprint\">curl</code>, <code class=\"prettyprint\">javascript</code>, <code class=\"prettyprint\">python</code>, <code class=\"prettyprint\">php</code> and <code class=\"prettyprint\">CSharp</code> examples next to each endpoint, we've also included a <a href=\"https://www.getpostman.com\" target=\"_blank\"><u>Postman</u></a> collection. The collection contains API calls for each available endpoint. Postman is a tool that helps generate and test API calls by providing a clean interface to build and save HTTP requests, and to check and test API responses. </p>\n\n<p>\n Note: Download Postman from their official website. Find out more about how to import Postman collections <a href=\"https://learning.getpostman.com/docs/postman/collections/data_formats/#importing-postman-data\" target=\"_blank\"><u>here</u></a>.\n</p>\n<p>\n Your information security team may require whitelisting Canoe’s IP addresses before you can call the API. Whitelist the IP addresses found in <a href=\"https://client.canoesoftware.com/knowledge-base#/api/canoe-api-overview\" target=\"_blank\"><u>this knowledge base page</u></a> to allow all API addresses of Canoe. <b>(Note: You must be logged into your Canoe account to access the knowledge base page)</b>\n</p>\n<p>\n Your information technology team may require you to open ports to call the API. The API uses port numbers 443 and 9443.\n</p>\n<p>\n Additionally, your information security team may request that Canoe limit the IP address(es) from which you can make API calls as an extra layer of data protection. If so, please reach out to our support team.\n</p>\n\n<br>\n<strong><u>Request:</u></strong>\n\nThe base URL for all Canoe API requests is <code class=\"prettyprint\">https://api.canoesoftware.com</code>\n\nThe API is built on RESTful principles with resource-oriented URL endpoints. HTTP status codes are used to indicate any API errors and all responses are returned in JSON format. All requests must be made over an HTTPS connection to ensure a secure transmission of data. Following a RESTful structure, requests should hit API endpoints using the appropriate HTTP method, which will depend on the desired action:\n\n<table><thead>\n <tr>\n <th>Method</th>\n <th>Description</th>\n </tr>\n </thead><tbody>\n <tr>\n <td>GET</td>\n <td>Use the <strong>GET</strong> method to retrieve information about your users, their organizations, and available associated data. This will always be a read-only request, so queried objects will never be modified by a GET request. When using filter parameters that include special characters, you should always encode those values to fit URI specifications.</td>\n </tr>\n <tr>\n <td>POST</td>\n <td>Use a <strong>POST</strong> method to create a new object, such as a new user or organization. Request parameters should be given in JSON format. The response body will typically return the newly created resource.</td>\n </tr>\n <tr>\n <td>PUT</td>\n <td>Use a <strong>PUT</strong> method to update an object, such as updating user credentials. As with a POST request, parameters should be given in JSON format. If successful, the response body will typically return the modified object.</td>\n </tr>\n <tr>\n <td>DELETE</td>\n <td>Use a <strong>DELETE</strong> method to delete an object, such as deleting one of your funds. Successful DELETE requests will typically return an empty response body.</td>\n </tr>\n </tbody></table>\n\n\n<strong><u>Response:</u></strong>\n\n<p>All non-empty response bodies, including errors, will be formatted as a JSON object. If you are fetching multiple entries, such as <code class=\"prettyprint\">/v1/funds</code> example, the data will be returned as a list. If you are fetching a single entry, such as <code class=\"prettyprint\">GET /v1/funds/1</code>, the data will be returned as a single object.</p>\n<p>Canoe's APIs use standard HTTP status codes to indicate the status of a request.</p>\n<p>Below is a brief overview of the most common status codes:</p>\n<table><thead>\n <tr>\n <th>Code</th>\n <th>Text</th>\n <th>Definition</th>\n </tr>\n </thead><tbody>\n <tr>\n <td>200</td>\n <td>OK</td>\n <td>Success!</td>\n </tr>\n <tr>\n <td>400</td>\n <td>Bad Request</td>\n <td>The request was invalid or cannot be otherwise served. This could be due to an invalid or malformed parameter, etc.</td>\n </tr>\n <tr>\n <td>401</td>\n <td>Unauthorized</td>\n <td>The API authentication credentials or access token are missing or incorrect.</td>\n </tr>\n <tr>\n <td>403</td>\n <td>Forbidden</td>\n <td>The credentials or access token are authenticated, but you do not have access to the requested resource.</td>\n </tr>\n <tr>\n <td>404</td>\n <td>Not Found</td>\n <td>The requested resource is invalid or the resource requested, such as a Fund, does not exist. The 404 status code might indicates that the REST API can't map the client's URI to a resource but may be available in the future.</td>\n </tr>\n <tr>\n <td>405</td>\n <td>Method Not Allowed</td>\n <td>The request tried to use an HTTP method that the resource does not allow. For instance, a read-only resource could support only GET, but not PUT or DELETE or POST.</td>\n </tr>\n <tr>\n <td>500</td>\n <td>Internal Server Error</td>\n <td>There are internal or API-related errors on Canoe's side. Additional requests will not resolve the issue.</td>\n </tr>\n <tr>\n <td>503</td>\n <td>Service Unavailable</td>\n <td>The Canoe servers are up, but overloaded with requests. Try again later.</td>\n </tr>\n </tbody></table>\n"
contact:
name: Canoe Support
url: https://canoeintelligence.com
termsOfService: https://canoeintelligence.com/api-terms-of-use/
servers:
- url: https://api.canoesoftware.com
description: Production API
security:
- bearerAuth: []
tags:
- name: Funds
description: ''
paths:
/v1/funds:
get:
tags:
- Funds
summary: Get Funds
description: "Fetch all funds accessible by the current API user.\n\n<span name=\"doc-alert-info\">\nThis endpoint offers optional pagination. \nPagination supports the return of large results and is highly recommended for all use cases. \nUnpaginated calls will be depreciated in future versions of the Canoe API.\n<br><br>\nWhen using pagination, the response will contain headers defining the <code>total</code> number of results, \nas well as the <code>first</code>, <code>next</code>, <code>prev</code>, and <code>last</code> page responses for your result set. \nTo enable pagination pass a header parameter of X-API-VERSION with a value of 2022-02-24.\n</span>"
operationId: GetFunds
parameters:
- name: page
in: query
description: This is the page number. For example, if you specify "2" you will see all funds on page 2. By default, this is set to 1. <u>This parameter is only valid if the X-API-VERSION header is set to 2022-02-24.</u>
required: false
schema:
type: string
examples:
page 1:
value: '1'
page 5 multiple:
value: '5'
- name: perPage
in: query
description: The number of funds for each page. The maximum number of funds as well as the default is 100. <u>This parameter is only valid if the X-API-VERSION header is set to 2022-02-24.</u>
required: false
schema:
type: string
examples:
3 per page:
value: '3'
50 per page:
value: '50'
- name: name
in: query
description: The name of the fund you wish to retrieve records for. This can either be the formal fund name or any of its associated aliases. To search based on a part of the fund name or alias, just append an "*" character anywhere within the name parameter.
required: false
schema:
type: string
examples:
name:
value: Sample Hedge Fund Detail 1
- name: custom_field
in: query
description: An indexed string of one or more custom field IDs, which relate to fund specific custom fields, and one or more custom field values for each. Specify the custom field ID and then the custom field value(s). When filtering on multiple values, separate them by commas. Filter on additional custom fields by separating with an ampersand. Example:- /v1/funds?custom_field[bfa7ec21-9a73-4640-03b2-0e32aa1ae8a6]=value1,value2&custom_field[867e4563-c2b5-e788-d050-4ce151dec635]=value1
required: false
schema:
type: string
examples:
custom_field:
value: custom_field[bfa7ec21-9a73-4640-03b2-0e32aa1ae8a6]=value1,value2
- name: fund_id
in: query
description: Returns exact fund for a specific id. Multiple IDs are separated by a comma.
required: false
schema:
type: string
examples:
fund_id single:
value: fund_id_1
fund_id multiple:
value: fund_id_1,fund_id_2,fund_id_3
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/GetFunds'
'400':
description: Bad request
'404':
description: Resource Not Found
'422':
description: Unprocessable Entity
x-codeSamples:
- lang: bash
label: Bash
source: "curl -X GET \\\n -G \"https://api.canoesoftware.com/v1/funds?name=Sample Hedge Fund Detail 1\" \\\n -H \"Authorization: Bearer {token}\" \\\n -H \"Accept: application/json\" \\\n -H \"X-Requested-With: XMLHttpRequest\""
- lang: javascript
label: JavaScript
source: "const url = new URL(\n \"https://api.canoesoftware.com/v1/funds\"\n );\n\n let params = {\n \"name\": \"Sample Hedge Fund Detail 1\"\n }\n\n Object.keys(params)\n .forEach(key => url.searchParams.append(key, params[key]))\n\n let headers = {\n \"Authorization\": \"Bearer {token}\",\n \"Accept\": \"application/json\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n \"Content-Type\": \"application/json\",\n };\n\n fetch(url, {\n method: \"GET\",\n headers: headers,\n })\n .then(response => response.json())\n .then(json => console.log(json));"
- lang: php
label: PHP
source: "$client = new \\GuzzleHttp\\Client();\n $response = $client->get(\n 'https://api.canoesoftware.com/v1/funds',\n [\n 'headers' => [\n 'Authorization' => 'Bearer {token}',\n 'Accept' => 'application/json',\n 'X-Requested-With' => 'XMLHttpRequest',\n ],\n 'query' => [\n 'name' => 'Sample Hedge Fund Detail 1'\n ] \n ]\n );\n $body = $response->getBody();\n print_r(json_decode((string) $body));"
- lang: python
label: Python
source: "import requests\n import json\n\n url = 'https://api.canoesoftware.com/v1/funds'\n headers = {\n 'Authorization': 'Bearer {token}',\n 'Accept': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest'\n }\n params = {\n 'name': 'Sample Hedge Fund Detail 1'\n }\n response = requests.request('GET', url, headers=headers, params=params)\n response.json()"
- lang: csharp
label: CSharp
source: "using RestSharp;\n\n var client = new RestClient(\"https://api.canoesoftware.com/\");\n var request = new RestRequest(\"v1/funds\", Method.Get);\n request.AddParameter(\"Authorization\", string.Format(\"Bearer {token}\"), ParameterType.HttpHeader);\n request.AddHeader(\"Accept\", \"application/json\");\n request.AddHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n request.AddQueryParameter(\"name\", \"Sample Hedge Fund Detail 1\");\n var response = client.Execute(request);\n Console.WriteLine(response.Content);"
post:
tags:
- Funds
summary: Create A Single Fund
description: Create a new fund based on the input parameters.
operationId: CreateSingleFund
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
type:
type: string
description: The fund's investment type. It can be drawdown_fund, hedge_fund, direct_investment, real_estate, or special_situation.
example: hedge_fund
status:
type: string
description: Indicates whether or not a fund is active. The status can be active, pending, retired, or transitional.
example: retired
name:
type: string
description: The name of the fund.
example: Sample fund 1
sponsor:
type: string
description: The sponsor of the fund.
example: Sample sponsor 1
start_date:
type: string
description: Fund Inception Date. The date on which the fund began its operations. Its format is yyyy-mm-dd.
example: '2021-01-01T00:00:00.000Z'
aliases:
type: string
description: Aliases of the investment name. These are user-created. If there are multiple aliases, they should be separated by commas.
example: Sample alias 1, Sample alias 2
legal_name:
type: string
description: The legal name of the fund.
example: Sample Fund V
custom_fields:
type: array
description: The array of objects that contain the id of an existing custom field and a new value
example:
- id: 1
value: 1000
currency:
type: string
description: The ISO 4217 currency code representing the base currency of the fund (e.g. USD, EUR, GBP). Lowercase values are accepted and normalized to uppercase. Pass null to clear an existing value.
example: USD
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SingleFund'
'403':
description: Failed to create the fund with a corresponding term.
'422':
description: Failed to create the fund with a corresponding term.
x-codeSamples:
- lang: bash
label: Bash
source: "curl -X POST \\\n \"https://api.canoesoftware.com/v1/funds\" \\\n -H \"Authorization: Bearer {token}\" \\\n -H \"Accept: application/json\" \\\n -H \"X-Requested-With: XMLHttpRequest\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"type\":\"drawdown_fund.\",\"status\":\"active\",\"name\":\"Sample fund 1\",\"sponsor\":\"Sample sponsor 1\",\"start_date\":\"2021-01-01\",\"aliases\":\"Sample alias 1, Sample alias 2\",\"legal_name\":\"Sample Fund V\",\"custom_fields\":[{\"id\":\"1\",\"value\":\"1000\"}]}'"
- lang: javascript
label: JavaScript
source: "const url = new URL(\"\n https://api.canoesoftware.com/v1/funds\"\n );\n\n let headers = {\n \"Authorization\": \"Bearer {token}\",\n \"Accept\": \"application/json\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n \"Content-Type\": \"application/json\",\n };\n\n let body = {\n \"type\": \"drawdown_fund\",\n \"status\": \"active\",\n \"name\": \"Sample fund 1\",\n \"sponsor\": \"Sample sponsor 1\",\n \"start_date\": \"2021-01-01\",\n \"aliases\": \"Sample alias 1, Sample alias 2\",\n \"legal_name\": \"Sample Fund V\",\n \"custom_fields\": [\n {\n \"id\": \"1\",\n \"value\": \"1000\"\n }\n ]\n }\n\n fetch(url, {\n method: \"POST\",\n headers: headers,\n body: body\n })\n .then(response => response.json())\n .then(json => console.log(json));"
- lang: php
label: PHP
source: "$client = new \\GuzzleHttp\\Client();\n $response = $client->get(\n 'https://api.canoesoftware.com/v1/funds',\n [\n 'headers' => [\n 'Authorization' => 'Bearer {token}',\n 'Accept' => 'application/json',\n 'X-Requested-With' => 'XMLHttpRequest',\n 'Content-Type' => 'application/json',\n ],\n 'json' => [\n 'type' => 'drawdown_fund',\n 'status' => 'active',\n 'name' => 'Sample fund 1',\n 'sponsor' => 'Sample sponsor 1',\n 'start_date' => '2021-01-01',\n 'aliases' => 'Sample alias 1, Sample alias 2',\n 'legal_name' => 'Sample Fund V',\n 'custom_fields' => [\n [\n 'id' => '1',\n 'value' => '1000',\n ],\n ],\n ],\n ]\n );\n $body = $response->getBody();\n print_r(json_decode((string) $body));"
- lang: python
label: Python
source: "import requests\n import json\n\n url = 'https://api.canoesoftware.com/v1/funds'\n payload = {\n \"type\": \"drawdown_fund\",\n \"status\": \"active\",\n \"name\": \"Sample fund 1\",\n \"sponsor\": \"Sample sponsor 1\",\n \"start_date\": \"2021-01-01\",\n \"aliases\": \"Sample alias 1, Sample alias 2\",\n \"legal_name\": \"Sample Fund V\",\n \"custom_fields\": [\n {\n \"id\": \"1\",\n \"value\": \"1000\"\n }\n ]\n }\n headers = {\n 'Authorization': 'Bearer {token}',\n 'Accept': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n 'Content-Type': 'application/json'\n }\n response = requests.request('POST', url, headers=headers, json=payload)\n response.json()"
- lang: csharp
label: CSharp
source: "using RestSharp;\n\n var client = new RestClient(\"https://api.canoesoftware.com/\");\n var request = new RestRequest(\"v1/funds\", Method.Post);\n request.AddParameter(\"Authorization\", string.Format(\"Bearer {token}\"), ParameterType.HttpHeader)\n request.AddHeader(\"Accept\", \"application/json\");\n request.AddHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n request.AddHeader(\"Content-Type\", \"application/json\");\n var body = new\n { \n type = \"drawdown_fund\",\n status = \"active\",\n name = \"Sample fund 1\",\n sponsor = \"Sample sponsor 1\"\n start_date = \"2021-01-01\",\n aliases = \"Sample Alias 1, Sample Alias 2\",\n legal_name = \"Sample Fund V,Sample Capital LP\"\n };\n request.AddJsonBody(body);\n request.AddParameter(\"custom_fields\", custom_fields);\n var response = client.Execute(request);\n Console.WriteLine(response.Content);"
delete:
tags:
- Funds
summary: Delete Multiple Funds
description: 'Bulk delete up to 100 funds at once based on fund ids. WARNING: This will delete all funds associated with the ids passed in, as well as their related documents, allocations, and terms.'
operationId: DeleteMultipleFunds
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DeleteFunds'
'400':
description: Cannot delete more than 100 records at one time. Request includes 305 items.
x-codeSamples:
- lang: bash
label: Bash
source: "curl -X DELETE \\\n \"https://api.canoesoftware.com/v1/funds\" \\\n -H \"Authorization: Bearer {token}\" \\\n -H \"Accept: application/json\" \\\n -H \"X-Requested-With: XMLHttpRequest\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"fund_id\":\"id_1,id_2,id_3\",\"status\":\"active,pending\",\"type\":\"drawdown_fund,hedge_fund\"}'"
- lang: javascript
label: JavaScript
source: "const url = new URL(\n \"https://api.canoesoftware.com/v1/funds\"\n );\n\n let headers = {\n \"Authorization\": \"Bearer {token}\",\n \"Accept\": \"application/json\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n \"Content-Type\": \"application/json\",\n };\n\n let body = {\n \"fund_id\": \"id_1,id_2,id_3\"\n }\n\n fetch(url, {\n method: \"DELETE\",\n headers: headers,\n body: body\n })\n .then(response => response.json())\n .then(json => console.log(json));"
- lang: php
label: PHP
source: "$client = new \\GuzzleHttp\\Client();\n $response = $client->delete(\n 'https://api.canoesoftware.com/v1/funds',\n [\n 'headers' => [\n 'Authorization' => 'Bearer {token}',\n 'Accept' => 'application/json',\n 'X-Requested-With' => 'XMLHttpRequest',\n 'Content-Type' => 'application/json',\n ],\n 'json' => [\n 'fund_id' => 'id_1,id_2,id_3'\n ],\n ]\n );\n $body = $response->getBody();\n print_r(json_decode((string) $body));"
- lang: python
label: Python
source: "import requests\n import json\n\n url = 'https://api.canoesoftware.com/v1/funds'\n payload = {\n \"fund_id\": \"id_1,id_2,id_3\"\n }\n headers = {\n 'Authorization': 'Bearer {token}',\n 'Accept': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n 'Content-Type': 'application/json'\n }\n response = requests.request('DELETE', url, headers=headers, json=payload)\n response.json()"
- lang: csharp
label: CSharp
source: "using RestSharp;\n\n var client = new RestClient(\"https://api.canoesoftware.com/\");\n var request = new RestRequest(\"v1/funds\", Method.Delete);\n request.AddParameter(\"Authorization\", string.Format(\"Bearer {token}\"), ParameterType.HttpHeader);\n request.AddHeader(\"Accept\", \"application/json\");\n request.AddHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n request.AddHeader(\"Content-Type\", \"application/json\");\n request.AddParameter(\"fund_id\",\"id_1,id_2,id_3\");\n var response = client.Execute(request);\n Console.WriteLine(response.Content);"
/v1/funds/details:
get:
tags:
- Funds
summary: Get Detailed Fund Data
description: "Fetch detailed fund information including terms, allocations, and related entities. This endpoint provides more comprehensive fund data than the standard /v1/funds endpoint, including allocation data with entity relationships.\n\n<span name=\"doc-alert-info\">\nThis endpoint supports pagination. \nWhen using pagination, the response will contain headers defining the <code>total</code> number of results, \nas well as the <code>first</code>, <code>next</code>, <code>prev</code>, and <code>last</code> page responses for your result set.\n</span>"
operationId: GetFundsDetailedData
parameters:
- name: page
in: query
description: The page number for pagination. By default, this is set to 1.
required: false
schema:
type: integer
examples:
page 1:
value: 1
page 5:
value: 5
- name: perPage
in: query
description: The number of results per page. The maximum number of results as well as the default is 100.
required: false
schema:
type: integer
examples:
25 per page:
value: 25
50 per page:
value: 50
- name: name
in: query
description: Filter by fund name. Supports partial matching with wildcard character (*).
required: false
schema:
type: string
examples:
fund name:
value: Sample Fund
- name: fund_id
in: query
description: Filter by specific fund ID(s). Multiple IDs can be separated by commas.
required: false
schema:
type: string
examples:
single fund:
value: fund_id_1
multiple funds:
value: fund_id_1,fund_id_2
- name: account_id
in: query
description: Filter allocations by account ID(s). Multiple IDs can be separated by commas.
required: false
schema:
type: string
examples:
single account:
value: account_id_1
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FundDetailedData'
'400':
description: Bad request - Invalid parameters
'403':
description: Forbidden - Insufficient permissions
'404':
description: Resource Not Found
x-codeSamples:
- lang: bash
label: Bash
source: "curl -X GET \\\n -G \"https://api.canoesoftware.com/v1/funds/details?page=1&perPage=25\" \\\n -H \"Authorization: Bearer {token}\" \\\n -H \"Accept: application/json\" \\\n -H \"X-Requested-With: XMLHttpRequest\""
- lang: javascript
label: JavaScript
source: "const url = new URL(\n \"https://api.canoesoftware.com/v1/funds/details\"\n );\n\n let params = {\n \"page\": \"1\",\n \"perPage\": \"25\"\n }\n\n Object.keys(params)\n .forEach(key => url.searchParams.append(key, params[key]))\n\n let headers = {\n \"Authorization\": \"Bearer {token}\",\n \"Accept\": \"application/json\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n \"Content-Type\": \"application/json\",\n };\n\n fetch(url, {\n method: \"GET\",\n headers: headers,\n })\n .then(response => response.json())\n .then(json => console.log(json));"
- lang: php
label: PHP
source: "$client = new \\GuzzleHttp\\Client();\n $response = $client->get(\n 'https://api.canoesoftware.com/v1/funds/details',\n [\n 'headers' => [\n 'Authorization' => 'Bearer {token}',\n 'Accept' => 'application/json',\n 'X-Requested-With' => 'XMLHttpRequest',\n ],\n 'query' => [\n 'page' => '1',\n 'perPage' => '25'\n ]\n ]\n );\n $body = $response->getBody();\n print_r(json_decode((string) $body));"
- lang: python
label: Python
source: "import requests\n import json\n\n url = 'https://api.canoesoftware.com/v1/funds/details'\n headers = {\n 'Authorization': 'Bearer {token}',\n 'Accept': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest'\n }\n params = {\n 'page': '1',\n 'perPage': '25'\n }\n response = requests.request('GET', url, headers=headers, params=params)\n response.json()"
- lang: csharp
label: CSharp
source: "using RestSharp;\n\n var client = new RestClient(\"https://api.canoesoftware.com/\");\n var request = new RestRequest(\"v1/funds/details\", Method.Get);\n request.AddParameter(\"Authorization\", string.Format(\"Bearer {token}\"), ParameterType.HttpHeader);\n request.AddHeader(\"Accept\", \"application/json\");\n request.AddHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n request.AddQueryParameter(\"page\", \"1\");\n request.AddQueryParameter(\"perPage\", \"25\");\n var response = client.Execute(request);\n Console.WriteLine(response.Content);"
/v1/funds/{id}:
get:
tags:
- Funds
summary: Get A Single Fund
description: Fetch a specific fund by the fund's ID.
operationId: GetSingleFunds
parameters:
- name: id
in: path
description: The id of the fund.
required: true
schema:
type: string
example: '1'
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SingleFund'
'400':
description: Bad request
'404':
description: Resource Not Found
'422':
description: Unprocessable Entity
x-codeSamples:
- lang: bash
label: Bash
source: "curl -X GET \\\n -G \"https://api.canoesoftware.com/v1/funds/1\" \\\n -H \"Authorization: Bearer {token}\" \\\n -H \"Accept: application/json\" \\\n -H \"X-Requested-With: XMLHttpRequest\""
- lang: javascript
label: JavaScript
source: "const url = new URL(\n \"https://api.canoesoftware.com/v1/funds/1\"\n );\n\n let headers = {\n \"Authorization\": \"Bearer {token}\",\n \"Accept\": \"application/json\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n \"Content-Type\": \"application/json\",\n };\n\n fetch(url, {\n method: \"GET\",\n headers: headers,\n })\n .then(response => response.json())\n .then(json => console.log(json));"
- lang: php
label: PHP
source: "$client = new \\GuzzleHttp\\Client();\n $response = $client->get(\n 'https://api.canoesoftware.com/v1/funds/1',\n [\n 'headers' => [\n 'Authorization' => 'Bearer {token}',\n 'Accept' => 'application/json',\n 'X-Requested-With' => 'XMLHttpRequest',\n ],\n ]\n );\n $body = $response->getBody();\n print_r(json_decode((string) $body));"
- lang: python
label: Python
source: "import requests\n import json\n\n url = 'https://api.canoesoftware.com/v1/funds/1'\n headers = {\n 'Authorization': 'Bearer {token}',\n 'Accept': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest'\n }\n response = requests.request('GET', url, headers=headers)\n response.json()"
- lang: csharp
label: CSharp
source: "using RestSharp;\n\n var client = new RestClient(\"https://api.canoesoftware.c
# --- truncated at 32 KB (85 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canoe-intelligence/refs/heads/main/openapi/canoe-intelligence-funds-api-openapi.yml