{ "openapi": "3.0.1", "info": { "title": "NMM Distributor API", "description": "Distributor APIs to register, cancel, suspend NMM Installs and retrieve usage information. Contact nmm.support@getnerdio.com to request APIKey and access to Mothership portal.", "version": "v1" }, "paths": { "/api-v{version}/checkhealth": { "get": { "tags": [ "Health" ], "summary": "Evaluate overall health of API.", "parameters": [ { "name": "version", "in": "path", "description": "API Version", "required": true, "schema": { "type": "string" } }, { "name": "APIKey", "in": "header", "description": "API key for authentication", "required": true } ], "responses": { "200": { "description": "Ok. API call executed successfully." }, "400": { "description": "Bad request. Invalid parameters or invalid parameter." }, "401": { "description": "Unauthorized. APIKey doesnot authorize you to retrieve the information requested." }, "422": { "description": "Unprocessable entity. Azure subscription ID you specified is not valid or may not be a GUID." }, "500": { "description": "Internal server error. The information supplied in the parameters is incorrect." }, "409": { "description": "Conflict. Another distributor has already registered NMM Installs by partner you are trying to register." } } } }, "/api-v{version}/installs": { "get": { "tags": [ "Install" ], "summary": "Retrieve a list of all NMM installs you have registered via API or Mothership.", "parameters": [ { "name": "version", "in": "path", "description": "API Version", "required": true, "schema": { "type": "string" } }, { "name": "APIKey", "in": "header", "description": "API key for authentication", "required": true } ], "responses": { "200": { "description": "Ok. API call executed successfully." }, "400": { "description": "Bad request. Invalid parameters or invalid parameter." }, "401": { "description": "Unauthorized. APIKey doesnot authorize you to retrieve the information requested." }, "422": { "description": "Unprocessable entity. Azure subscription ID you specified is not valid or may not be a GUID." }, "500": { "description": "Internal server error. The information supplied in the parameters is incorrect." }, "409": { "description": "Conflict. Another distributor has already registered NMM Installs by partner you are trying to register." } } } }, "/api-v{version}/register": { "post": { "tags": [ "Install" ], "summary": "Claim a MSP partner's existing and future NMM installs in their Azure Subscription. This API is typically used when partner purchases NMM in your portal.", "parameters": [ { "name": "SubscriptionID", "in": "query", "description": "Azure Subscription ID", "required": true, "schema": { "type": "string" } }, { "name": "SendConfirmationEmail", "in": "query", "description": "Notify partner their NMM install has been assigned to distributor", "schema": { "type": "boolean" } }, { "name": "ConnectAssetId", "in": "query", "description": "Connect Asset ID", "schema": { "type": "string" } }, { "name": "version", "in": "path", "description": "API Version", "required": true, "schema": { "type": "string" } }, { "name": "APIKey", "in": "header", "description": "API key for authentication", "required": true } ], "responses": { "200": { "description": "Ok. API call executed successfully." }, "400": { "description": "Bad request. Invalid parameters or invalid parameter." }, "401": { "description": "Unauthorized. APIKey doesnot authorize you to retrieve the information requested." }, "422": { "description": "Unprocessable entity. Azure subscription ID you specified is not valid or may not be a GUID." }, "500": { "description": "Internal server error. The information supplied in the parameters is incorrect." }, "409": { "description": "Conflict. Another distributor has already registered NMM Installs by partner you are trying to register." } } } }, "/api-v{version}/suspend": { "put": { "tags": [ "Install" ], "summary": "Suspend all installs in an Azure subscription. This API is typically used to temporarily halt usage for non-payment. MSP will not be able to login to suspended NMM installs. End-users will not be affected.", "parameters": [ { "name": "SubscriptionID", "in": "query", "description": "Azure Subscription ID", "required": true, "schema": { "type": "string" } }, { "name": "SendConfirmationEmail", "in": "query", "description": "Notify partner their NMM install has been assigned to distributor", "schema": { "type": "boolean" } }, { "name": "version", "in": "path", "description": "API Version", "required": true, "schema": { "type": "string" } }, { "name": "APIKey", "in": "header", "description": "API key for authentication", "required": true } ], "responses": { "200": { "description": "Ok. API call executed successfully." }, "400": { "description": "Bad request. Invalid parameters or invalid parameter." }, "401": { "description": "Unauthorized. APIKey doesnot authorize you to retrieve the information requested." }, "422": { "description": "Unprocessable entity. Azure subscription ID you specified is not valid or may not be a GUID." }, "500": { "description": "Internal server error. The information supplied in the parameters is incorrect." }, "409": { "description": "Conflict. Another distributor has already registered NMM Installs by partner you are trying to register." } } } }, "/api-v{version}/reactivate": { "put": { "tags": [ "Install" ], "summary": "Unsuspend all installs in an Azure subscription. This API is typically used to remove the temporary halt for non-payment.", "parameters": [ { "name": "SubscriptionID", "in": "query", "description": "Azure Subscription ID", "required": true, "schema": { "type": "string" } }, { "name": "SendConfirmationEmail", "in": "query", "description": "Notify partner their NMM install has been assigned to distributor", "schema": { "type": "boolean" } }, { "name": "version", "in": "path", "description": "API Version", "required": true, "schema": { "type": "string" } }, { "name": "APIKey", "in": "header", "description": "API key for authentication", "required": true } ], "responses": { "200": { "description": "Ok. API call executed successfully." }, "400": { "description": "Bad request. Invalid parameters or invalid parameter." }, "401": { "description": "Unauthorized. APIKey doesnot authorize you to retrieve the information requested." }, "422": { "description": "Unprocessable entity. Azure subscription ID you specified is not valid or may not be a GUID." }, "500": { "description": "Internal server error. The information supplied in the parameters is incorrect." }, "409": { "description": "Conflict. Another distributor has already registered NMM Installs by partner you are trying to register." } } } }, "/api-v{version}/cancel": { "delete": { "tags": [ "Install" ], "summary": "Unregister previously claimed partner NMM installs and suspend those installs. This API is typically used when partner cancels purchase of NMM in your portal.", "parameters": [ { "name": "SubscriptionID", "in": "query", "description": "Azure Subscription ID", "required": true, "schema": { "type": "string" } }, { "name": "SendConfirmationEmail", "in": "query", "description": "Notify partner their NMM install is suspended and no longer registered with distributor.", "schema": { "type": "boolean" } }, { "name": "version", "in": "path", "description": "API Version", "required": true, "schema": { "type": "string" } }, { "name": "APIKey", "in": "header", "description": "API key for authentication", "required": true } ], "responses": { "200": { "description": "Ok. API call executed successfully." }, "400": { "description": "Bad request. Invalid parameters or invalid parameter." }, "401": { "description": "Unauthorized. APIKey doesnot authorize you to retrieve the information requested." }, "422": { "description": "Unprocessable entity. Azure subscription ID you specified is not valid or may not be a GUID." }, "500": { "description": "Internal server error. The information supplied in the parameters is incorrect." }, "409": { "description": "Conflict. Another distributor has already registered NMM Installs by partner you are trying to register." } } } }, "/api-v{version}/invoices": { "get": { "tags": [ "Invoices" ], "summary": "Collect consumption information. This API is typically used for monthly billing.", "parameters": [ { "name": "PeriodStart", "in": "query", "description": "Start Date (first day of month in mm/dd/yyyy format)", "schema": { "type": "string", "format": "date-time" } }, { "name": "PeriodEnd", "in": "query", "description": "End Date (last day of month in mm/dd/yyyy format)", "schema": { "type": "string", "format": "date-time" } }, { "name": "version", "in": "path", "description": "API Version", "required": true, "schema": { "type": "string" } }, { "name": "APIKey", "in": "header", "description": "API key for authentication", "required": true } ], "responses": { "200": { "description": "Ok. API call executed successfully." }, "400": { "description": "Bad request. Invalid parameters or invalid parameter." }, "401": { "description": "Unauthorized. APIKey doesnot authorize you to retrieve the information requested." }, "422": { "description": "Unprocessable entity. Azure subscription ID you specified is not valid or may not be a GUID." }, "500": { "description": "Internal server error. The information supplied in the parameters is incorrect." }, "409": { "description": "Conflict. Another distributor has already registered NMM Installs by partner you are trying to register." } } } }, "/api-v{version}/invoices/grouped": { "get": { "tags": [ "Invoices" ], "summary": "Collect consumption information grouped by partner and account. This API is typically used for monthly billing.", "parameters": [ { "name": "PeriodStart", "in": "query", "description": "Start Date (first day of month in mm/dd/yyyy format)", "schema": { "type": "string", "format": "date-time" } }, { "name": "PeriodEnd", "in": "query", "description": "End Date (last day of month in mm/dd/yyyy format)", "schema": { "type": "string", "format": "date-time" } }, { "name": "version", "in": "path", "description": "API Version", "required": true, "schema": { "type": "string" } }, { "name": "APIKey", "in": "header", "description": "API key for authentication", "required": true } ], "responses": { "200": { "description": "Ok. API call executed successfully." }, "400": { "description": "Bad request. Invalid parameters or invalid parameter." }, "401": { "description": "Unauthorized. APIKey doesnot authorize you to retrieve the information requested." }, "422": { "description": "Unprocessable entity. Azure subscription ID you specified is not valid or may not be a GUID." }, "500": { "description": "Internal server error. The information supplied in the parameters is incorrect." }, "409": { "description": "Conflict. Another distributor has already registered NMM Installs by partner you are trying to register." } } } }, "/api-v{version}/usage": { "get": { "tags": [ "Usage" ], "summary": "Collect usage information. This API is typically used for daily usage information.", "parameters": [ { "name": "PeriodStart", "in": "query", "description": "Start Date (any day of month in mm/dd/yyyy format)", "schema": { "type": "string", "format": "date-time" } }, { "name": "PeriodEnd", "in": "query", "description": "End Date (any day of same month in mm/dd/yyyy format)", "schema": { "type": "string", "format": "date-time" } }, { "name": "version", "in": "path", "description": "API Version", "required": true, "schema": { "type": "string" } }, { "name": "APIKey", "in": "header", "description": "API key for authentication", "required": true } ], "responses": { "200": { "description": "Ok. API call executed successfully." }, "400": { "description": "Bad request. Invalid parameters or invalid parameter." }, "401": { "description": "Unauthorized. APIKey doesnot authorize you to retrieve the information requested." }, "422": { "description": "Unprocessable entity. Azure subscription ID you specified is not valid or may not be a GUID." }, "500": { "description": "Internal server error. The information supplied in the parameters is incorrect." }, "409": { "description": "Conflict. Another distributor has already registered NMM Installs by partner you are trying to register." } } } } }, "components": { } }