{
  "service": "northflank",
  "displayName": "Northflank",
  "categories": [
    "Developer Tools"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Token",
      "placeholder": "NORTHFLANK_API_TOKEN",
      "description": "Northflank API token sent as a Bearer token. Create one from https://app.northflank.com/s/account/api/tokens."
    }
  ],
  "homepageUrl": "https://northflank.com",
  "actions": [
    {
      "id": "northflank.get_project",
      "service": "northflank",
      "name": "get_project",
      "description": "Retrieve details for a Northflank project.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "ID of the project."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId"
        ],
        "description": "Input parameters for retrieving a Northflank project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "project": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "Identifier for the project."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Project name."
              },
              "description": {
                "type": "string",
                "description": "Short project description."
              },
              "deployment": {
                "type": "object",
                "properties": {
                  "region": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Region where the project's resources are deployed."
                  }
                },
                "additionalProperties": true,
                "description": "Project deployment information returned by Northflank."
              },
              "createdAt": {
                "type": "string",
                "description": "Timestamp when the project was created.",
                "format": "date-time"
              },
              "services": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Identifier for the service."
                    },
                    "appId": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Full identifier used for service deployment."
                    },
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Service name."
                    },
                    "description": {
                      "type": "string",
                      "description": "Short service description."
                    },
                    "serviceType": {
                      "type": "string",
                      "enum": [
                        "combined",
                        "build",
                        "deployment"
                      ],
                      "description": "Type of service."
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "id",
                    "appId",
                    "name",
                    "serviceType"
                  ],
                  "description": "Northflank service summary embedded in a project detail response."
                },
                "description": "Services belonging to the project."
              },
              "jobs": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Northflank job summary."
                },
                "description": "Jobs belonging to the project."
              },
              "addons": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Northflank addon summary."
                },
                "description": "Addons belonging to the project."
              },
              "customRegistry": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Custom registry information returned by Northflank."
              },
              "cluster": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Cluster information returned by Northflank."
              }
            },
            "additionalProperties": true,
            "required": [
              "id",
              "name",
              "createdAt"
            ],
            "description": "Northflank project details."
          }
        },
        "additionalProperties": false,
        "required": [
          "project"
        ],
        "description": "Northflank project detail response."
      }
    },
    {
      "id": "northflank.get_service",
      "service": "northflank",
      "name": "get_service",
      "description": "Retrieve details for a Northflank service.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "ID of the project."
          },
          "serviceId": {
            "type": "string",
            "minLength": 1,
            "description": "ID of the service."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId",
          "serviceId"
        ],
        "description": "Input parameters for retrieving a Northflank service."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "service": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "Identifier for the service."
              },
              "appId": {
                "type": "string",
                "minLength": 1,
                "description": "Full identifier used for service deployment."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Service name."
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "description": "Identifier for the project that owns the service."
              },
              "serviceType": {
                "type": "string",
                "enum": [
                  "combined",
                  "build",
                  "deployment"
                ],
                "description": "Type of service."
              },
              "createdAt": {
                "type": "string",
                "description": "Timestamp when the service was created.",
                "format": "date-time"
              },
              "description": {
                "type": "string",
                "description": "Short service description."
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Service tag."
                },
                "description": "Tags attached to the service."
              },
              "disabledCI": {
                "type": "boolean",
                "description": "Whether Continuous Integration is disabled."
              },
              "disabledCD": {
                "type": "boolean",
                "description": "Whether Continuous Deployment is disabled."
              },
              "servicePaused": {
                "type": "boolean",
                "description": "Whether the service is paused."
              },
              "buildSource": {
                "type": "string",
                "minLength": 1,
                "description": "Build source for the service."
              },
              "status": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "minLength": 1,
                        "description": "Current build status."
                      },
                      "lastTransitionTime": {
                        "type": "string",
                        "description": "Timestamp when the build reached this status.",
                        "format": "date-time"
                      }
                    },
                    "additionalProperties": true,
                    "description": "Build status information returned by Northflank."
                  },
                  "deployment": {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "minLength": 1,
                        "description": "Current deployment status."
                      },
                      "reason": {
                        "type": "string",
                        "minLength": 1,
                        "description": "Reason the current deployment was started."
                      },
                      "lastTransitionTime": {
                        "type": "string",
                        "description": "Timestamp when the deployment reached this status.",
                        "format": "date-time"
                      }
                    },
                    "additionalProperties": true,
                    "description": "Deployment status information returned by Northflank."
                  }
                },
                "additionalProperties": true,
                "description": "Current service status returned by Northflank."
              },
              "billing": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Billing configuration returned by Northflank."
              },
              "deployment": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Deployment configuration returned by Northflank."
              },
              "ports": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Northflank port."
                },
                "description": "Service ports returned by Northflank."
              },
              "buildConfiguration": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Build configuration returned by Northflank."
              },
              "buildEngineConfiguration": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Build engine configuration returned by Northflank."
              },
              "autoscaling": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Autoscaling configuration returned by Northflank."
              },
              "loadBalancing": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Load balancing configuration returned by Northflank."
              },
              "cluster": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Cluster information returned by Northflank."
              }
            },
            "additionalProperties": true,
            "required": [
              "id",
              "appId",
              "name",
              "projectId",
              "serviceType",
              "createdAt",
              "disabledCI",
              "disabledCD"
            ],
            "description": "Northflank service details."
          }
        },
        "additionalProperties": false,
        "required": [
          "service"
        ],
        "description": "Northflank service detail response."
      }
    },
    {
      "id": "northflank.list_projects",
      "service": "northflank",
      "name": "list_projects",
      "description": "List Northflank projects available to the authenticated token.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of results to display per request. Maximum of 100."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The page number to access."
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "description": "The cursor returned from the previous page of results."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Northflank projects."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Identifier for the project."
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Project name."
                },
                "description": {
                  "type": "string",
                  "description": "Short project description."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "name"
              ],
              "description": "Northflank project summary."
            },
            "description": "Projects returned by Northflank."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "hasNextPage": {
                "type": "boolean",
                "description": "Whether another page of results is available."
              },
              "cursor": {
                "type": "string",
                "minLength": 1,
                "description": "Cursor to use for the next page of results."
              },
              "count": {
                "type": "number",
                "description": "Number of results returned by this request."
              }
            },
            "additionalProperties": false,
            "required": [
              "hasNextPage",
              "count"
            ],
            "description": "Pagination metadata returned by Northflank."
          }
        },
        "additionalProperties": false,
        "required": [
          "projects",
          "pagination"
        ],
        "description": "Northflank projects list response."
      }
    },
    {
      "id": "northflank.list_services",
      "service": "northflank",
      "name": "list_services",
      "description": "List Northflank services in a project.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "ID of the project."
          },
          "per_page": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The number of results to display per request. Maximum of 100."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The page number to access."
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "description": "The cursor returned from the previous page of results."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId"
        ],
        "description": "Input parameters for listing Northflank services in a project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "services": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Identifier for the service."
                },
                "appId": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Full identifier used for service deployment."
                },
                "projectId": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Identifier for the project that owns the service."
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Service name."
                },
                "description": {
                  "type": "string",
                  "description": "Short service description."
                },
                "serviceType": {
                  "type": "string",
                  "enum": [
                    "combined",
                    "build",
                    "deployment"
                  ],
                  "description": "Type of service."
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Service tag."
                  },
                  "description": "Tags attached to the service."
                },
                "disabledCI": {
                  "type": "boolean",
                  "description": "Whether Continuous Integration is disabled."
                },
                "disabledCD": {
                  "type": "boolean",
                  "description": "Whether Continuous Deployment is disabled."
                },
                "status": {
                  "type": "object",
                  "properties": {
                    "build": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "minLength": 1,
                          "description": "Current build status."
                        },
                        "lastTransitionTime": {
                          "type": "string",
                          "description": "Timestamp when the build reached this status.",
                          "format": "date-time"
                        }
                      },
                      "additionalProperties": true,
                      "description": "Build status information returned by Northflank."
                    },
                    "deployment": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "minLength": 1,
                          "description": "Current deployment status."
                        },
                        "reason": {
                          "type": "string",
                          "minLength": 1,
                          "description": "Reason the current deployment was started."
                        },
                        "lastTransitionTime": {
                          "type": "string",
                          "description": "Timestamp when the deployment reached this status.",
                          "format": "date-time"
                        }
                      },
                      "additionalProperties": true,
                      "description": "Deployment status information returned by Northflank."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Current service status returned by Northflank."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "appId",
                "projectId",
                "name",
                "serviceType",
                "disabledCI",
                "disabledCD"
              ],
              "description": "Northflank service summary."
            },
            "description": "Services returned by Northflank."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "hasNextPage": {
                "type": "boolean",
                "description": "Whether another page of results is available."
              },
              "cursor": {
                "type": "string",
                "minLength": 1,
                "description": "Cursor to use for the next page of results."
              },
              "count": {
                "type": "number",
                "description": "Number of results returned by this request."
              }
            },
            "additionalProperties": false,
            "required": [
              "hasNextPage",
              "count"
            ],
            "description": "Pagination metadata returned by Northflank."
          }
        },
        "additionalProperties": false,
        "required": [
          "services",
          "pagination"
        ],
        "description": "Northflank services list response."
      }
    }
  ]
}
