Nasuni Auth API

The Auth API from Nasuni — 5 operation(s) for auth.

Operations 6

POST /auth/login/ Login
POST /auth/logout/ Logout
POST /auth/token Authenticate #
DELETE /auth/token Revoke Access Token #
POST /auth/token/refresh Refresh Access Token #
POST /auth/mcp Issue MCP-scoped tokens #

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/nasuni-auth-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 email required.

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

OpenAPI Specification

nasuni-auth-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Nasuni Auth API
  version: '1.0'
  description: 'Operations tagged Auth across 4 of this provider''s published API definitions: nasuni-nmc-v1-0-openapi.yml, nasuni-nmc-v1-1-openapi.yml, nasuni-nmc-v1-2-openapi.yml, nasuni-portal-v0-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://hostname/api/v1
- url: https://hostname/api/v1.1
- url: https://hostname/api/v1.2
- url: https://am1.portal.api.nasuni.com
  description: Base URL for accounts assigned the US region.
- url: https://eu1.portal.api.nasuni.com
  description: Base URL for accounts assigned the EU region.
- url: https://ap1.portal.api.nasuni.com
  description: Base URL for accounts assigned the Asia-Pacific region.
tags:
- name: Auth
paths:
  /auth/login/:
    post:
      tags:
      - Auth
      summary: Login
      description: Authenticate a user's credentials to get an access token.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                password:
                  type: string
        required: false
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthToken'
        '400':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '401':
          description: Authentication failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Permission Denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Request throttled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security: []
      x-codegen-request-body-name: body
    servers:
    - url: https://hostname/api/v1
  /auth/logout/:
    post:
      tags:
      - Auth
      summary: Logout
      description: De-authenticate user access token.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  logged_out:
                    type: boolean
                    description: If true, the user access token was successfully de-authenticated.
        '401':
          description: Authentication failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Request throttled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - AuthToken: []
    servers:
    - url: https://hostname/api/v1
  /auth/token:
    post:
      tags:
      - Auth
      summary: Authenticate
      description: 'Authenticate using one of the following methods:

        - **Service Keys (headers)**: Provide both `x-service-key` and `x-service-secret` headers

        - **User Keys (header)**: Provide `x-user-key` header

        - **OAuth2 Client Credentials (form body)**: POST `application/x-www-form-urlencoded` with `grant_type=client_credentials`, `client_id=<service_key>`, `client_secret=<service_secret>` (RFC 6749 §4.4). Compatible with standard OAuth2 client libraries such as Grafana Infinity, Datadog, Splunk, and ServiceNow.


        Returns access and refresh tokens for subsequent API calls.'
      operationId: authorize_auth_token_post
      responses:
        '200':
          description: Authentication successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokensDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_3'
        '401':
          description: Not authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_3'
        '408':
          description: Request timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_3'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_3'
      security:
      - ServiceKeyHeader: []
        ServiceSecretHeader: []
      - UserKeyHeader: []
      - OAuth2ClientCredentials: []
      requestBody:
        required: false
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - grant_type
              - client_id
              - client_secret
              properties:
                grant_type:
                  type: string
                  enum:
                  - client_credentials
                  description: Must be `client_credentials`.
                client_id:
                  type: string
                  description: Portal service key (equivalent to the `x-service-key` header).
                client_secret:
                  type: string
                  format: uuid
                  description: Portal service secret (equivalent to the `x-service-secret` header).
    delete:
      tags:
      - Auth
      summary: Revoke Access Token
      description: 'Revoke the current access token and its entire token family.


        This invalidates the current access token and all associated refresh tokens,

        requiring the user to re-authenticate. Use this for logout functionality.


        Requires: Valid access token in Authorization header (Bearer <token>)'
      operationId: revoke_auth_token_delete
      responses:
        '200':
          description: Operation completed successfully
          content:
            application/json:
              schema: {}
        '401':
          description: Not authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_3'
      security:
      - HTTPBearer: []
    servers:
    - url: https://am1.portal.api.nasuni.com
      description: Base URL for accounts assigned the US region.
    - url: https://eu1.portal.api.nasuni.com
      description: Base URL for accounts assigned the EU region.
    - url: https://ap1.portal.api.nasuni.com
      description: Base URL for accounts assigned the Asia-Pacific region.
  /auth/token/refresh:
    post:
      tags:
      - Auth
      summary: Refresh Access Token
      description: "Refresh an expired access token using a valid refresh token.\n\nWhen your access token expires, use this endpoint to obtain a new access token\nand refresh token pair without re-authenticating.\n\nArgs:\n    body: Request containing the refresh token\n\nReturns:\n    TokensDto: New access token and refresh token pair"
      operationId: refresh_auth_token_refresh_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TokenRequestDto'
        required: true
      responses:
        '200':
          description: Token refreshed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokensDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_3'
        '401':
          description: Not authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_3'
        '408':
          description: Request timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_3'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_3'
      security:
      - HTTPBearer: []
    servers:
    - url: https://am1.portal.api.nasuni.com
      description: Base URL for accounts assigned the US region.
    - url: https://eu1.portal.api.nasuni.com
      description: Base URL for accounts assigned the EU region.
    - url: https://ap1.portal.api.nasuni.com
      description: Base URL for accounts assigned the Asia-Pacific region.
  /auth/mcp:
    post:
      tags:
      - Auth
      summary: Issue MCP-scoped tokens
      description: 'Mint MCP-scoped tokens and log activity.


        Authorization-Mcp header must contain the user''s Portal access token (the

        cookie value forwarded by the webbff). WebBFF completes the MCP callback

        server-side so WebAPI does not depend on the MCP stack URL.'
      operationId: mcp_authorize_auth_mcp_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/McpAuthorizeRequest'
        required: true
      responses:
        '200':
          description: MCP-scoped tokens issued successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokensDto'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_3'
        '401':
          description: Not authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_3'
        '408':
          description: Request timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_3'
        '422':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_3'
      security:
      - APIKeyHeader: []
    servers:
    - url: https://am1.portal.api.nasuni.com
      description: Base URL for accounts assigned the US region.
    - url: https://eu1.portal.api.nasuni.com
      description: Base URL for accounts assigned the EU region.
    - url: https://ap1.portal.api.nasuni.com
      description: Base URL for accounts assigned the Asia-Pacific region.
components:
  schemas:
    ValidationError:
      type: object
      properties:
        code:
          type: string
        description:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/FieldError'
    Error:
      type: object
      properties:
        code:
          type: string
          description: 'Specifies the type of error reported. Possible values:


            * "error" - General error

            * "validation_error" - Validation error

            * "not_found_error" - Resource not found

            * "auth_error" - Authentication error

            * "perm_error" - Permission error

            * "sync_error" - Error occurred syncing settings with a Filer.

            * "throttled_error" - The request was throttled; too many sent within a duration.

            '
          enum:
          - error
          - validation_error
          - not_found_error
          - auth_error
          - perm_error
          - sync_error
          - throttled_error
        description:
          type: string
          description: Description of the error reported.
    FieldError:
      type: object
      properties:
        field:
          type: string
          description: The field to which the validation error applies, or "__all__" if it is a non-field error.
        errors:
          type: array
          items:
            type: string
    AuthToken:
      type: object
      properties:
        token:
          type: string
        expires:
          type: string
    ErrorResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/Error_2'
    Error_2:
      type: object
      properties:
        code:
          type: string
          description: 'Specifies the type of error reported. Possible values:


            * "error" - General error

            * "validation_error" - Validation error

            * "not_found_error" - Resource not found

            * "auth_error" - Authentication error

            * "perm_error" - Permission error

            * "sync_error" - Error occurred syncing settings with a Filer.

            * "unmanaged_error" - Resource is not managed.

            * "conflict_error" - Conflict error

            * "unsupported_error" - Current filer version does not support this type of request.

            * "throttled_error" - The request was throttled; too many sent within a duration.

            '
          readOnly: true
          enum:
          - error
          - validation_error
          - not_found_error
          - auth_error
          - perm_error
          - sync_error
          - unmanaged_error
          - conflict_error
          - unsupported_error
          - throttled_error
        description:
          type: string
          description: Description of the error reported.
          readOnly: true
    ErrorResponse_2:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/Error_3'
    Error_3:
      type: object
      properties:
        code:
          type: string
          description: 'Specifies the type of error reported. Possible values:


            * "error" - General error

            * "validation_error" - Validation error

            * "not_found_error" - Resource not found

            * "auth_error" - Authentication error

            * "perm_error" - Permission error

            * "sync_error" - Error occurred syncing settings with a Filer.

            * "unmanaged_error" - Resource is not managed.

            * "conflict_error" - Conflict error

            * "unsupported_error" - Current filer version does not support this type of request.

            * "throttled_error" - The request was throttled; too many sent within a duration.

            '
          readOnly: true
          enum:
          - error
          - validation_error
          - not_found_error
          - auth_error
          - perm_error
          - sync_error
          - unmanaged_error
          - conflict_error
          - unsupported_error
          - throttled_error
        description:
          type: string
          description: Description of the error reported.
          readOnly: true
    ValidationErrorResponse:
      properties:
        message:
          type: string
          title: Message
        detail:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Detail
          example:
          - ctx:
              error: 'invalid length: expected length 32 for simple format, found 3'
            input: '123'
            loc:
            - path
            - id
            msg: 'Input should be a valid UUID, invalid length: expected length 32 for simple format, found 3'
            type: uuid_parsing
      type: object
      required:
      - message
      - detail
      title: ValidationErrorResponse
    TokensDto:
      properties:
        access_token:
          type: string
          title: Access Token
        refresh_token:
          type: string
          title: Refresh Token
        token_type:
          type: string
          title: Token Type
          default: bearer
        expires_in:
          anyOf:
          - type: integer
          - type: 'null'
          title: Expires In
      type: object
      required:
      - access_token
      - refresh_token
      title: TokensDto
    TokenRequestDto:
      properties:
        token:
          type: string
          title: Token
      type: object
      required:
      - token
      title: TokenRequestDto
    ErrorResponse_3:
      properties:
        message:
          type: string
          title: Message
        detail:
          anyOf:
          - {}
          - type: 'null'
          title: Detail
      type: object
      required:
      - message
      - detail
      title: ErrorResponse
    McpAuthorizeRequest:
      properties:
        request_id:
          type: string
          title: Request Id
      type: object
      required:
      - request_id
      title: McpAuthorizeRequest
  securitySchemes:
    AuthToken:
      type: apiKey
      description: 'This header is required to make authenticated requests. The value format is:


        Token [your_auth_token]

        '
      name: Authorization
      in: header
    ServiceKeyHeader:
      type: apiKey
      in: header
      name: x-service-key
      description: Service key for programmatic API access. Must be used together with x-service-secret.
    ServiceSecretHeader:
      type: apiKey
      in: header
      name: x-service-secret
      description: Service secret for programmatic API access. Must be used together with x-service-key.
    UserKeyHeader:
      type: apiKey
      in: header
      name: x-user-key
      description: User key for user-specific API access.
    HTTPBearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Bearer token obtained from /auth/token endpoint.
    OAuth2ClientCredentials:
      type: oauth2
      description: Standard OAuth2 Client Credentials flow (RFC 6749 §4.4). Send `client_id` (service key) and `client_secret` (service secret) as form-encoded body parameters to the token endpoint.
      flows:
        clientCredentials:
          tokenUrl: /auth/token
          scopes: {}
x-refined-from:
- nasuni-nmc-v1-0-openapi.yml
- nasuni-nmc-v1-1-openapi.yml
- nasuni-nmc-v1-2-openapi.yml
- nasuni-portal-v0-openapi.yml