Microsoft Dynamics NAV Extension Upload API

Upload and install per-tenant extensions

Documentation

Specifications

Other Resources

OpenAPI Specification

navision-extension-upload-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Business Central Administration Center Accounts Extension Upload API
  description: REST API for programmatic administration of Dynamics 365 Business Central environments. Enables querying and managing production and sandbox environments, setting up administrative notifications, viewing tenant telemetry, managing apps, scheduling updates, and performing environment operations such as copy, rename, restore, and delete.
  version: '2.28'
  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/admin/v2.28
  description: Business Central Administration Center
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:
  parameters:
    ifMatch:
      name: If-Match
      in: header
      required: true
      description: ETag value for optimistic concurrency control
      schema:
        type: string
    company_id:
      name: company_id
      in: path
      required: true
      description: The unique identifier of the company
      schema:
        type: string
        format: uuid
  responses:
    Unauthorized:
      description: Unauthorized - authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
          example: example_value
    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
    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
  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 Admin APIs
        clientCredentials:
          tokenUrl: https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
          scopes:
            https://api.businesscentral.dynamics.com/.default: Access Business Central Admin APIs
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
externalDocs:
  description: Administration Center API Documentation
  url: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/administration-center-api