Canoe Intelligence User API

The User API from Canoe Intelligence — 4 operation(s) for user.

Operations 10

GET Get Your API User Information #
GET Get Users Within Your Organization #
POST Create A User Within Your Organization #
PUT Update A User Within Your Organization #
GET Get User Access Levels #
GET /v1/user Get Your API User Information #
POST /v1/user Create User #
GET /v1/users Get Users Within Your Organization #
PUT /v1/users/{id} Update User #
GET /v1/users/roles Get User Roles #

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/canoe-intelligence-user-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

canoe-intelligence-user-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Canoe Intelligence User API
  version: '1.0'
  description: 'Operations tagged User across 3 of this provider''s published API definitions: canoe-intelligence-api-docs-v1-original.yaml, canoe-intelligence-api-openapi-original.json, canoe-intelligence-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.canoesoftware.com
  description: Production API
tags:
- name: User
  description: ''
paths:
  Get Your API User Information:
    get:
      tags:
      - User
      summary: null
      description: '/v1/user


        Fetch information about your Canoe API user.

        '
      operationId: User
      requestBody:
        content:
          application/json:
            schema:
              type: string
            examples:
              bash:
                description: "-\n      curl -X GET \\\n          -G \"https://api.canoesoftware.com/v1/user\" \\\n          -H \"Authorization: Bearer {token}\" \\\n          -H \"Accept: application/json\" \\\n          -H \"X-Requested-With: XMLHttpRequest\"\n"
                summary: Bash
              Javascript:
                description: "-\n      const url = new URL(\n          \"https://api.canoesoftware.com/v1/user\"\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));\n"
                summary: JavaScript
              PHP:
                description: "-\n      $client = new \\GuzzleHttp\\Client();\n      $response = $client->get(\n          'https://api.canoesoftware.com/v1/user',\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));\n"
                summary: PHP
              Python:
                description: "-\n      import requests\n      import json\n\n      url = 'https://api.canoesoftware.com/v1/user'\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()\n"
                summary: Python
              CSharp:
                description: "-\n      using RestSharp;\n\n      var client = new RestClient(\"https://api.canoesoftware.com/\");\n      var request = new RestRequest(\"v1/user\", 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      var response = client.Execute(request);\n      Console.WriteLine(response.Content);\n"
                summary: CSharp
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
  Get Users Within Your Organization:
    get:
      tags:
      - User
      summary: null
      description: "/v1/users\n\nFetch information about users within your Canoe organization.\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 2024-12-12.\n</span>\n"
      operationId: findByTags
      parameters:
      - name: page
        in: query
        description: This page number. For example, if you specify "2" you will see all users 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 2024-12-12.</u> Example:- 1
        required: false
        schema:
          type: integer
        examples:
          page 1:
            value: 1
          page 5:
            value: 5
      - name: limit
        in: query
        description: The number of documents for each page. The maximum number of users limit is 100. <u>This parameter is only valid if the X-API-VERSION header is set to 2024-12-12.</u> Example:- 50
        required: false
        schema:
          type: integer
        examples:
          limit:
            value: 50
      - name: user_id
        in: query
        description: 'The IDs of the users in Canoe. Example: user_1,user_2'
        required: false
        schema:
          type: string
        examples:
          user 1:
            value: user_1
          user 2:
            value: user_2
      - name: email
        in: query
        description: 'The emails of the users in Canoe. Example: user_1@example.com,user_2@example.com'
        required: false
        schema:
          type: string
        examples:
          user 1 email address:
            value: user_1@example.com
          user 2 email address:
            value: user_2@example.com
      - name: role_id
        in: query
        description: 'The IDs of the roles in Canoe. Example: role_1,role_2'
        required: false
        schema:
          type: string
        examples:
          role 1:
            value: role_1
      - name: status
        in: query
        description: 'The status of the users in Canoe. Example: active,inactive'
        required: false
        schema:
          type: string
        examples:
          active:
            value: active
          inactive:
            value: inactive
      - name: role_organization_id
        in: query
        description: 'The IDs of the organizations in Canoe. Example: account_1,account_2'
        required: false
        schema:
          type: string
        examples:
          account 1:
            value: account_1
          account 2:
            value: account_2
      requestBody:
        content:
          application/json:
            schema:
              type: string
            examples:
              bash:
                description: "-\n      curl -X GET \\\n          -G \"https://api.canoesoftware.com/v1/users?user_id=user_1%2Cuser_2&email=user_1%40example.com%2Cuser_2%40example.com\" \\\n          -H \"Authorization: Bearer {token}\" \\\n          -H \"Accept: application/json\" \\\n          -H \"X-Requested-With: XMLHttpRequest\"\n"
                summary: Bash
              javascript:
                description: "-\n      const url = new URL(\n          \"https://api.canoesoftware.com/v1/user\"\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));\n"
                summary: JavaScript
              PHP:
                description: "-\n      $client = new \\GuzzleHttp\\Client();\n      $response = $client->get(\n          'https://api.canoesoftware.com/v1/user',\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));\n"
                summary: PHP
              Python:
                description: "-\n      import requests\n      import json\n\n      url = 'https://api.canoesoftware.com/v1/user'\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()\n"
                summary: Python
              CSharp:
                description: "-\n      using RestSharp;\n\n      var client = new RestClient(\"https://api.canoesoftware.com/\");\n      var request = new RestRequest(\"v1/user\", 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      var response = client.Execute(request);\n      Console.WriteLine(response.Content);\n"
                summary: CSharp
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Users'
  Create A User Within Your Organization:
    post:
      tags:
      - User
      summary: null
      description: '/v1/user

        Create a user within your Canoe organization.

        '
      operationId: CreateASingleUser
      parameters:
      - name: first_name
        in: body
        description: The first name of the user
        required: true
        schema:
          type: string
          example: New
      - name: last_name
        in: body
        description: The last name of the user
        required: true
        schema:
          type: string
          example: User
      - name: status
        in: body
        description: Indicates whether the user is active or inactive. The status can be active or inactive. If not provided, the default is active.
        required: false
        schema:
          type: string
          example:
            status: active
      - name: email
        in: body
        description: The email address related to the user. This must have the correct email format.
        required: true
        schema:
          type: string
          example:
            email: user_1@example.com
      - name: access_level
        in: body
        description: The roles and organizations that a user is given permission to.
        required: true
        schema:
          type: array
          example:
            access_level:
            - role_id: role_id_1
              role_organization_ids:
              - org_id_1
              - org_id_2
      requestBody:
        content:
          application/json:
            schema:
              type: string
            examples:
              bash:
                description: "-\n      curl -X POST \\\n          -G \"https://api.canoesoftware.com/v1/user\" \\\n          -H \"Authorization: Bearer {token}\" \\\n          -H \"Accept: application/json\" \\\n          -H \"X-Requested-With: XMLHttpRequest\" \\\n          -H \"Content-Type: application/json\" \\\n          -d '{\"status\":\"active\",\"first_name\":\"New\",\"last_name\":\"User\",\"email\":\"user_1@example.com\",\"access_level\":[{\"role_id\":\"role_id_1\",\"role_organization_ids\":[\"account_org_1\", \"account_org_2\"]}]}'\n"
                summary: Bash
              javascript:
                description: "-\n      const url = new URL(\n          \"https://api.canoesoftware.com/v1/user\"\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          \"status\": \"active\",\n          \"first_name\": \"New\",\n          \"last_name\": \"User\",\n          \"email\": \"user_1@example.com\",\n          \"access_level\": [{\n              \"role_id\": \"role_id_1\",\n              \"role_organization_ids\": [\"account_org_1\",\"account_org_2\"]\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));\n"
                summary: JavaScript
              PHP:
                description: "-\n      $client = new \\GuzzleHttp\\Client();\n      $response = $client->post(\n          'https://api.canoesoftware.com/v1/user',\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                  'status' => 'active',\n                  'first_name': 'New',\n                  'last_name': 'User',\n                  'email' => 'user_1@example.com',\n                  'access_level' => [{\n                      'role_id': 'role_id_1',\n                      'role_organization_ids': ['account_org_1','account_org_2']\n                  }]\n              ],\n          ]\n      );\n      $body = $response->getBody();\n      print_r(json_decode((string) $body));\n"
                summary: PHP
              Python:
                description: "-\n      import requests\n      import json\n      url = 'https://api.canoesoftware.com/v1/user'\n      payload = {\n          \"status\": \"active\",\n          \"first_name\": \"New\",\n          \"last_name\": \"User\",\n          \"email\": \"user_1@example.com\",\n          \"access_level\": [{\n              \"role_id\": \"role_id_1\",\n              \"role_organization_ids\": [\"account_org_1\",\"account_org_2\"]\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()\n"
                summary: Python
              CSharp:
                description: "-\n      using RestSharp;\n      var client = new RestClient(\"https://api.canoesoftware.com/\");\n      var request = new RestRequest(\"v1/user\", 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          status = \"active\",\n          first_name = \"New\",\n          last_name = \"User\",\n          email = \"user_1@example.com\",\n          tags = new { role_organization_ids = new [] { \"account_org_1\", \"account_org_2\" }, role_id = \"role_id_1\" }\n      };\n      request.AddJsonBody(body);\n      var response = client.Execute(request);\n      Console.WriteLine(response.Content);\n"
                summary: CSharp
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserWithId'
  Update A User Within Your Organization:
    put:
      tags:
      - User
      summary: null
      description: '/v1/users/{id}

        Update a user within your Canoe organization.

        '
      operationId: UpdateASingleUser
      parameters:
      - name: id
        in: path
        description: The id of the user you want to edit. This id is available by using the "Get Users within Your Organization" endpoint.
        required: true
        schema:
          type: string
          example: 1
      - name: status
        in: body
        description: Indicates whether the user is active or inactive. The status can be active or inactive. If not provided, the default is active.
        required: false
        schema:
          type: string
          example:
            status: active
      - name: email
        in: body
        description: The email address related to the user. This must have the correct email format.
        required: false
        schema:
          type: string
          example:
            email: user_1@example.com
      - name: access_level
        in: body
        description: The roles and organizations that a user is given permission to.
        required: false
        schema:
          type: array
          example:
            access_level:
            - role_id: role_id_1
              role_organization_ids:
              - org_id_1
              - org_id_2
      requestBody:
        content:
          application/json:
            schema:
              type: string
            examples:
              bash:
                description: "-\n      curl -X PUT \\\n          -G \"https://api.canoesoftware.com/v1/users/user_1\" \\\n          -H \"Authorization: Bearer {token}\" \\\n          -H \"Accept: application/json\" \\\n          -H \"X-Requested-With: XMLHttpRequest\" \\\n          -H \"Content-Type: application/json\" \\\n          -d '{\"status\":\"active\",\"email\":\"user_1@example.com\",\"access_level\":[{\"role_id\":\"role_id_1\",\"role_organization_ids\":[\"account_org_1\", \"account_org_2\"]}]}'\n"
                summary: Bash
              javascript:
                description: "-\n      const url = new URL(\n          \"https://api.canoesoftware.com/v1/user/user_1\"\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          \"status\": \"active\",\n          \"email\": \"user_1@example.com\",\n          \"access_level\": [{\n              \"role_id\": \"role_id_1\",\n              \"role_organization_ids\": [\"account_org_1\",\"account_org_2\"]\n          }]\n      }\n      fetch(url, {\n          method: \"PUT\",\n          headers: headers,\n          body: body\n      })\n          .then(response => response.json())\n          .then(json => console.log(json));\n"
                summary: JavaScript
              PHP:
                description: "-\n      $client = new \\GuzzleHttp\\Client();\n      $response = $client->put(\n          'https://api.canoesoftware.com/v1/user/user_1',\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                  'status' => 'active',\n                  'email' => 'user_1@example.com',\n                  'access_level' => [{\n                      'role_id': 'role_id_1',\n                      'role_organization_ids': ['account_org_1','account_org_2']\n                  }]\n              ],\n          ]\n      );\n      $body = $response->getBody();\n      print_r(json_decode((string) $body));\n"
                summary: PHP
              Python:
                description: "-\n      import requests\n      import json\n      url = 'https://api.canoesoftware.com/v1/user/user_1'\n      payload = {\n          \"status\": \"active\",\n          \"email\": \"user_1@example.com\",\n          \"access_level\": [{\n              \"role_id\": \"role_id_1\",\n              \"role_organization_ids\": [\"account_org_1\",\"account_org_2\"]\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('PUT', url, headers=headers, json=payload)\n      response.json()\n"
                summary: Python
              CSharp:
                description: "-\n      using RestSharp;\n      var client = new RestClient(\"https://api.canoesoftware.com/\");\n      var request = new RestRequest(\"v1/user/user_1\", Method.Put);\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          status = \"active\",\n          email = \"user_1@example.com\",\n          tags = new { role_organization_ids = new [] { \"account_org_1\", \"account_org_2\" }, role_id = \"role_id_1\" }\n      };\n      request.AddJsonBody(body);\n      var response = client.Execute(request);\n      Console.WriteLine(response.Content);\n"
                summary: CSharp
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Users'
  Get User Access Levels:
    get:
      tags:
      - User
      summary: null
      description: '/v1/users/roles


        Fetch information about access roles within your Canoe organization.

        '
      operationId: findByRole
      parameters: null
      requestBody:
        content:
          application/json:
            schema:
              type: string
            examples:
              bash:
                description: "-\n      curl -X GET \\\n          -G \"https://api.canoesoftware.com/v1/users/roles\" \\\n          -H \"Authorization: Bearer {token}\" \\\n          -H \"Accept: application/json\" \\\n          -H \"X-Requested-With: XMLHttpRequest\"\n"
                summary: Bash
              javascript:
                description: "-\n      const url = new URL(\n          \"https://api.canoesoftware.com/v1/users/roles\"\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));\n"
                summary: JavaScript
              PHP:
                description: "-\n      $client = new \\GuzzleHttp\\Client();\n      $response = $client->get(\n          'https://api.canoesoftware.com/v1/users/roles',\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));\n"
                summary: PHP
              Python:
                description: "-\n      import requests\n      import json\n\n      url = 'https://api.canoesoftware.com/v1/users/roles'\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()\n"
                summary: Python
              CSharp:
                description: "-\n      using RestSharp;\n\n      var client = new RestClient(\"https://api.canoesoftware.com/\");\n      var request = new RestRequest(\"v1/users/roles\", 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      var response = client.Execute(request);\n      Console.WriteLine(response.Content);\n"
                summary: CSharp
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Roles'
  /v1/user:
    get:
      tags:
      - User
      summary: Get Your API User Information
      description: Fetch information about your Canoe API user.
      operationId: User
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User_2'
      x-codeSamples:
      - lang: bash
        label: Bash
        source: "curl -X GET \\\n          -G \"https://api.canoesoftware.com/v1/user\" \\\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/user\"\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/user',\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/user'\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.com/\");\n      var request = new RestRequest(\"v1/user\", 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      var response = client.Execute(request);\n      Console.WriteLine(response.Content);"
      security:
      - bearerAuth: []
    post:
      tags:
      - User
      summary: Create User
      description: Create a new user within your organization. Requires tenant admin or super admin permissions. The newly created user will receive a password reset email to set up their account.
      operationId: createUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: User email address (must be unique)
                  example: john.doe@example.com
                first_name:
                  type: string
                  description: User first name (maximum 255 characters)
                  example: John
                last_name:
                  type: string
                  description: User last name (maximum 255 characters)
                  example: Doe
                title:
                  type: string
                  description: User title (optional, maximum 255 characters)
                  example: Senior Analyst
                status:
                  type: string
                  description: User status (optional, defaults to 'active')
                  enum:
                  - active
                  - inactive
                  example: active
                access_level:
                  type: array
                  description: Array of access levels defining user permissions
                  items:
                    type: object
                    properties:
                      role_id:
                        type: string
                        description: Role ID to assign
                      role_organization_ids:
                        type: array
                        description: Array of organization IDs this role applies to
                        items:
                          type: string
                    required:
                    - role_id
                    - role_organization_ids
                  example:
                  - role_id: role_123
                    role_organization_ids:
                    - org_456
                    - org_789
              required:
              - email
              - first_name
              - last_name
              - access_level
      responses:
        '201':
          description: Success - User created. A password reset email has been sent to the user.
          content:
            application/json:
              schema:
                type: object
                properties:
                  user_id:
                    type: string
                    description: The unique identifier for the newly created user
                  email:
                    type: string
                    description: User email address
                  first_name:
                    type: string
                    description: User first name
                  last_name:
                    type: string
                    description: User last name
                  status:
                    type: string
                    description: User status
              example:
                user_id: user_987654
                email: john.doe@example.com
                first_name: John
                last_name: Doe
                status: active
        '400':
          description: Bad Request - Invalid input or email already exists
        '403':
          description: Forbidden - Insufficient permissions. Requires tenant admin or super admin role.
      x-codeSamples:
      - lang: bash
        label: Bash
        source: "curl -X POST \\\n          \"https://api.canoesoftware.com/v1/user\" \\\n          -H \"Authorization: Bearer {token}\" \\\n          -H \"Accept: application/json\" \\\n          -H \"X-Requested-With: XMLHttpRequest\" \\\n          -H \"Content-Type: application/json\" \\\n          -d '{\"email\":\"john.doe@example.com\",\"first_name\":\"John\",\"last_name\":\"Doe\",\"title\":\"Senior Analyst\",\"status\":\"active\",\"access_level\":[{\"role_id\":\"role_123\",\"role_organization_ids\":[\"org_456\",\"org_789\"]}]}'"
      - lang: javascript
        label: JavaScript
        source: "const url = new URL(\n          \"https://api.canoesoftware.com/v1/user\"\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          \"email\": \"john.doe@example.com\",\n          \"first_name\": \"John\",\n          \"last_name\": \"Doe\",\n          \"title\": \"Senior Analyst\",\n          \"status\": \"active\",\n          \"access_level\": [\n              {\n                  \"role_id\": \"role_123\",\n                  \"role_organization_ids\": [\"org_456\", \"org_789\"]\n              }\n          ]\n      };\n\n      fetch(url, {\n          method: \"POST\",\n          headers: headers,\n          body: JSON.stringify(body)\n      })\n      .then(response => response.json())\n      .then(json => co

# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canoe-intelligence/refs/heads/main/openapi/canoe-intelligence-user-api-openapi.yml