> For the complete documentation index, see [llms.txt](https://shimado.gitbook.io/grant+/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shimado.gitbook.io/grant+/development/api.md).

# API

An API is available to you if you want to issue grants using a third-party plugin. But anyway you need to have Grant plugin on your server.

You need to install the jar into the project: either via local maven; by installing the jar directly into the plugin or by maven dependency:

```xml
<repositories>
   <repository>
      <id>jitpack.io</id>
      <url>https://jitpack.io</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.github.Shimado</groupId>
      <artifactId>GrantAPI</artifactId>
      <version>v1.0.2</version>
   </dependency>
</dependencies>
```

Version you can find here: <https://github.com/Shimado/GrantAPI/tags>

Add plugin name to the plugin.yml to **depend** or **softdepend**:

```yaml
softdepend: [ Grant ]
```

Now in the plugin itself you need to get the API:

```java
if(Bukkit.getPluginManager().getPlugin("Grant") != null){
    RegisteredServiceProvider<GrantAPI> rsp = Bukkit.getServicesManager().getRegistration(GrantAPI.class);
    if (rsp != null) {
        GrantAPI grantAPI = rsp.getProvider();
    }
}
```

Below is a list of all possible commands:

```java
    /**
     * Gives items to the player, taking into account cooldown and history.
     * @param playerWhoGaveUUID - The player initiating the command.
     * @param playerToGiveUUIDs - UUID of the players who will be given the grant. If there are more than 1 players, it will be considered a mass issue.
     * @param grandInstanceID - ID of the grant. Needs to check if already has cooldown with this name. Can be any value.
     * @param itemsDrop - List of items that will be given to the player.
     * @param itemsDropAsStringList - List of items in text format. As you specify them, so they will be indicated in the GUI.
     * @param grantGroup - Cooldown data set. Specifies the cooldown, how long it can be used, etc.
     * @param servers - IP of servers where it will be issued. If the list is empty, then only on this one.
     * **/

    boolean giveGrantItem(UUID playerWhoGaveUUID, List<UUID> playerToGiveUUIDs, String grandInstanceID, List<ItemStack> itemsDrop, List<String> itemsDropAsStringList, GrantGroup grantGroup, List<String> servers);


    /**
     * Dispatch commands to the player, taking into account cooldown and history.
     * @param playerWhoGaveUUID - The player initiating the command.
     * @param playerToGiveUUIDs - UUID of the players who will be given the grant. If there are more than 1 players, it will be considered a mass issue.
     * @param grandInstanceID - ID of the grant. Needs to check if already has cooldown with this name. Can be any value.
     * @param commands - List of commands that will be given to the player. In raw format. Example: eco give %player% 100
     * @param commandsToCancel - List of commands that will be given to the player. In raw format. Example: eco take %player% 100. Needed to cancel the command. Can be an empty list []
     * @param grantGroup - Cooldown data set. Specifies the cooldown, how long it can be used, etc.
     * @param servers - IP of servers where it will be issued. If the list is empty, then only on this one.
     * **/

    boolean giveGrantCommand(UUID playerWhoGaveUUID, List<UUID> playerToGiveUUIDs, String grandInstanceID, List<String> commands, List<String> commandsToCancel, GrantGroup grantGroup, List<String> servers);


    /**
     * Give group to the player, taking into account cooldown and history.
     * @param playerWhoGaveUUID - The player initiating the command.
     * @param playerToGiveUUIDs - UUID of the players who will be given the grant. If there are more than 1 players, it will be considered a mass issue.
     * @param grandInstanceID - ID of the grant. Needs to check if already has cooldown with this name. Can be any value.
     * @param group - The group that will be given to the player.
     * @param commands - List of commands that will be given to the player. In raw format. Example: lp user %player% parent addtemp 3d
     * @param commandsToCancel - List of commands that will be given to the player. In raw format. Example: eco take %player% 100. Needed to cancel the command. Can be an empty list []
     * @param isHasTimer - If command has deactivation timer.
     * @param isHasDataBase - If the plugin command has a database connection. Specify true to avoid double deletion.
     * @param grantGroup - Cooldown data set. Specifies the cooldown, how long it can be used, etc.
     * @param duration - For how many seconds the group will be given. -1 for infinity.
     * @param servers - IP of servers where it will be issued. If the list is empty, then only on this one.
     * **/

    boolean giveGrantPrivilege(UUID playerWhoGaveUUID, List<UUID> playerToGiveUUIDs, String grandInstanceID, String group, List<String> commands, List<String> commandsToCancel, boolean isHasTimer, boolean isHasDataBase, GrantGroup grantGroup, int duration, List<String> servers);


    /**
     * Revokes an active group that was granted by this plugin.
     * @param playerWhoGaveUUID - The player initiating the command.
     * @param historyUUID - UUID of the history.
     * **/

    boolean cancelGrantPrivilege(UUID playerWhoGaveUUID, UUID historyUUID);


    /**
     * Give the player a primary group that will be returned to him if all existing privileges are cancelled.
     * @param playerUUID - UUID of the player you want to check.
     * **/

    String getPrimaryGroup(UUID playerUUID);


    /**
     * Returns the player's group when it was obtained by this plugin.
     * @param playerUUID - UUID of the player you want to check.
     * **/

    String getTemporaryGroup(UUID playerUUID);


    /**
     * Returns the player's current group according primary and temporary groups.
     * @param playerUUID - UUID of the player you want to check.
     * **/

    String getCurrentGroup(UUID playerUUID);
    
    
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://shimado.gitbook.io/grant+/development/api.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
