/* * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2024 Jon Evans * Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ syntax = "proto3"; package kiapi.board.commands; import "common/types/base_types.proto"; import "common/types/enums.proto"; import "board/board.proto"; import "board/board_types.proto"; /* * Board stackup and properties */ message GetBoardStackup { kiapi.common.types.DocumentSpecifier board = 1; } message BoardStackupResponse { kiapi.board.BoardStackup stackup = 1; } message UpdateBoardStackup { kiapi.common.types.DocumentSpecifier board = 1; kiapi.board.BoardStackup stackup = 2; } message GetGraphicsDefaults { kiapi.common.types.DocumentSpecifier board = 1; } message GraphicsDefaultsResponse { kiapi.board.GraphicsDefaults defaults = 1; } /* * Net management */ message GetNets { kiapi.common.types.DocumentSpecifier board = 1; // If provided, will only return nets that belong to the given netclass. // If more than one netclass_filter is given, nets belonging to any of the given classes will // be returned. repeated string netclass_filter = 2; } message NetsResponse { repeated kiapi.board.types.Net nets = 1; } // Retrieve all the copper items belonging to a certain net or set of nets // returns kiapi.common.commands.GetItemsResponse message GetItemsByNet { // Specifies which document to query, which fields to return, etc. kiapi.common.types.ItemHeader header = 1; // List of one or more types of items to retreive repeated kiapi.common.types.KiCadObjectType types = 2; // A list of net codes to filter items by repeated kiapi.board.types.NetCode net_codes = 3; } // Retrieve all the copper items belonging to a certain net class or set of net classes // returns kiapi.common.commands.GetItemsResponse message GetItemsByNetClass { // Specifies which document to query, which fields to return, etc. kiapi.common.types.ItemHeader header = 1; // List of one or more types of items to retreive repeated kiapi.common.types.KiCadObjectType types = 2; // A list of net class names to filter items by repeated string net_classes = 3; } /* * Blocking operations */ // Refills some or all zones on the board. // This is a blocking operation; it will return Empty immediately, but KiCad will return // ApiStatusCode.AS_BUSY to all future API requests until the zone fill has completed. message RefillZones { kiapi.common.types.DocumentSpecifier board = 1; // A list of zones to refill. If empty, all zones are refilled. repeated kiapi.common.types.KIID zones = 2; } /* * Utilities */ // returns kiapi.common.commands.BoundingBoxResponse message GetTextExtents { // A temporary text item to calculate the bounding box for kiapi.board.types.Text text = 1; } //// Interactive commands //// // These commands begin an interactive operation in the editor. // They return a response immediately, but the editor will become busy // and will not reply to further API commands until the user has finished // the operation. // These commands will return an error if received in a non-interactive context. // Selects and begins an interactive move of the given item(s). // NOTE: Takes ownership of the active commit, if one exists: // the move tool will push the commit when the user confirms the move, // or roll back the commit if the user cancels the move. Keep this in // mind if using this command in combination with commands that create // or modify items using an explicit commit. message InteractiveMoveItems { kiapi.common.types.DocumentSpecifier board = 1; repeated kiapi.common.types.KIID items = 2; }