Microsoft Dynamics NAV Extension Upload API

Upload and install per-tenant extensions

Operations 3

POST /companies({company_id})/extensionUpload Create Extension Upload Record #
PATCH /companies({company_id})/extensionUpload({extensionUpload_id})/extensionContent Upload Extension File #
POST /companies({company_id})/extensionUpload({extensionUpload_id})/Microsoft.NAV.upload Install Uploaded Extension #

Documentation

Specifications

Other Resources

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/navision-extension-upload-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

navision-extension-upload-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Business Central Automation API v2.0 Extension Upload API
  description: API for automating company setup and tenant management in Dynamics 365 Business Central. Supports creating companies, installing and managing extensions, assigning permission sets to users, uploading and applying RapidStart packages, managing user groups and security groups, and activating features programmatically.
  version: '2.0'
  contact:
    name: Microsoft Dynamics Support
    email: bcsupport@microsoft.com
    url: https://dynamics.microsoft.com/support/
  license:
    name: Microsoft APIs Terms of Use
    url: https://learn.microsoft.com/en-us/legal/microsoft-apis/terms-of-use
  termsOfService: https://learn.microsoft.com/en-us/legal/microsoft-apis/terms-of-use
servers:
- url: https://api.businesscentral.dynamics.com/v2.0/{environment}/api/microsoft/automation/v2.0
  description: Business Central Online Automation API
  variables:
    environment:
      default: production
      description: The name of the Business Central environment
- url: https://{server}:{port}/{instance}/api/microsoft/automation/v2.0
  description: Business Central On-Premises Automation API
  variables:
    server:
      default: localhost
      description: The on-premises server hostname
    port:
      default: '7048'
      description: The OData services port
    instance:
      default: BC
      description: The Business Central server instance name
security:
- oauth2: []
- bearerAuth: []
tags:
- name: Extension Upload
  description: Upload and install per-tenant extensions
paths:
  /companies({company_id})/extensionUpload:
    post:
      summary: Create Extension Upload Record
      description: Creates an extension upload record for uploading a per-tenant extension.
      operationId: createExtensionUpload
      tags:
      - Extension Upload
      parameters:
      - $ref: '#/components/parameters/company_id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtensionUploadCreate'
            examples:
              CreateextensionuploadRequestExample:
                summary: Default createExtensionUpload request
                x-microcks-default: true
                value:
                  schedule: Current version
                  schemaSyncMode: Add
      responses:
        '201':
          description: Extension upload record created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExtensionUpload'
              examples:
                Createextensionupload201Example:
                  summary: Default createExtensionUpload 201 response
                  x-microcks-default: true
                  value:
                    systemId: '500123'
                    schedule: Current version
                    schemaSyncMode: Add
                    status: example_value
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /companies({company_id})/extensionUpload({extensionUpload_id})/extensionContent:
    patch:
      summary: Upload Extension File
      description: Uploads the extension file content to the extension upload record.
      operationId: uploadExtensionFile
      tags:
      - Extension Upload
      parameters:
      - $ref: '#/components/parameters/company_id'
      - name: extensionUpload_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        example: '500123'
      - $ref: '#/components/parameters/ifMatch'
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
            examples:
              UploadextensionfileRequestExample:
                summary: Default uploadExtensionFile request
                x-microcks-default: true
                value: example_value
      responses:
        '200':
          description: Extension file uploaded
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /companies({company_id})/extensionUpload({extensionUpload_id})/Microsoft.NAV.upload:
    post:
      summary: Install Uploaded Extension
      description: Triggers the installation of a previously uploaded per-tenant extension.
      operationId: installUploadedExtension
      tags:
      - Extension Upload
      parameters:
      - $ref: '#/components/parameters/company_id'
      - name: extensionUpload_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        example: '500123'
      responses:
        '204':
          description: Extension installation initiated
        '401':
          $ref: '#/components/responses/Unauthorized'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    ExtensionUpload:
      type: object
      properties:
        systemId:
          type: string
          format: uuid
          example: '500123'
        schedule:
          type: string
          description: When to schedule the installation
          enum:
          - Current version
          - Next minor version
          - Next major version
          example: Current version
        schemaSyncMode:
          type: string
          description: Schema synchronization mode
          enum:
          - Add
          - Force Sync
          example: Add
        status:
          type: string
          readOnly: true
          example: example_value
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
          example: example_value
    ExtensionUploadCreate:
      type: object
      required:
      - schedule
      - schemaSyncMode
      properties:
        schedule:
          type: string
          enum:
          - Current version
          - Next minor version
          - Next major version
          example: Current version
        schemaSyncMode:
          type: string
          enum:
          - Add
          - Force Sync
          example: Add
  parameters:
    company_id:
      name: company_id
      in: path
      required: true
      description: The unique identifier of the company
      schema:
        type: string
        format: uuid
    ifMatch:
      name: If-Match
      in: header
      required: true
      description: ETag value for optimistic concurrency control
      schema:
        type: string
  responses:
    Unauthorized:
      description: Unauthorized - authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth 2.0 authentication via Microsoft Entra ID
      flows:
        authorizationCode:
          authorizationUrl: https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize
          tokenUrl: https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
          scopes:
            https://api.businesscentral.dynamics.com/.default: Access Business Central Automation APIs
        clientCredentials:
          tokenUrl: https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
          scopes:
            https://api.businesscentral.dynamics.com/.default: Access Business Central Automation APIs
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
externalDocs:
  description: Automation API Documentation
  url: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/itpro-introduction-to-automation-apis