Commit c987bc72 authored by Brian Long's avatar Brian Long
Browse files

initial commit

parents
Loading
Loading
Loading
Loading

.gitignore

0 → 100644
+12 −0
Original line number Diff line number Diff line
# Maven
pom.xml.versionsBackup
target

# Eclipse
.project
.classpath
.settings

# Visual Studio Code
.factorypath
+64 −0
Original line number Diff line number Diff line
<project xmlns="http://maven.apache.org/POM/4.0.0"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.inteligr8.buxfer</groupId>
	<artifactId>buxfer-public-rest-api</artifactId>
	<version>1.0-SNAPSHOT</version>
	<name>Buxfer ReST API for Java</name>

	<properties>
		<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
		<maven.compiler.source>8</maven.compiler.source>
		<maven.compiler.target>8</maven.compiler.target>
	</properties>

	<dependencies>
		<dependency>
			<groupId>jakarta.ws.rs</groupId>
			<artifactId>jakarta.ws.rs-api</artifactId>
			<version>2.1.6</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.module</groupId>
			<artifactId>jackson-module-jaxb-annotations</artifactId>
			<version>2.12.2</version>
		</dependency>
	</dependencies>
	
	<build>
		<plugins>
			<plugin>
				<artifactId>maven-javadoc-plugin</artifactId>
				<executions>
					<execution>
						<id>javadoc</id>
						<phase>package</phase>
						<goals><goal>jar</goal></goals>
						<configuration>
							<show>public</show>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
	
	<repositories>
		<repository>
			<id>inteligr8-public</id>
			<url>https://repos.inteligr8.com/nexus/repository/inteligr8-public</url>
		</repository>
	</repositories>
	
	<distributionManagement>
		<repository>
			<id>inteligr8-releases</id>
			<url>https://repos.inteligr8.com/nexus/repository/inteligr8-public</url>
		</repository>
		<snapshotRepository>
			<id>inteligr8-snapshots</id>
			<url>https://repos.inteligr8.com/nexus/repository/inteligr8-snapshots</url>
		</snapshotRepository>
	</distributionManagement>
</project>
+15 −0
Original line number Diff line number Diff line
package com.inteligr8.buxfer;

import com.inteligr8.buxfer.api.CommandApi;

/**
 * This interface consolidates the JAX-RS APIs available in the Buxfer Public
 * ReST API.
 * 
 * @author	 brian@inteligr8.com
 */
public interface BuxferPublicRestApi {
	
	CommandApi getCommandApi();

}
+187 −0
Original line number Diff line number Diff line
package com.inteligr8.buxfer.api;

import java.time.LocalDate;
import java.time.YearMonth;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;

import com.inteligr8.buxfer.model.AccountsResponse;
import com.inteligr8.buxfer.model.BudgetsResponse;
import com.inteligr8.buxfer.model.ContactsResponse;
import com.inteligr8.buxfer.model.GroupsResponse;
import com.inteligr8.buxfer.model.LoansResponse;
import com.inteligr8.buxfer.model.RemindersResponse;
import com.inteligr8.buxfer.model.Response;
import com.inteligr8.buxfer.model.TagsResponse;
import com.inteligr8.buxfer.model.Transaction.Status;
import com.inteligr8.buxfer.model.TransactionsResponse;

@Path("/api")
public interface CommandApi {

    @GET
    @Path("/transactions")
    @Produces({ "application/json" })
    public Response<TransactionsResponse> getTransactions(
    		@QueryParam("startDate") LocalDate startDate,
    		@QueryParam("endDate") LocalDate endDate,
    		@QueryParam("status") Status status,
    		@QueryParam("page") int page);

    @GET
    @Path("/transactions")
    @Produces({ "application/json" })
    public Response<TransactionsResponse> getTransactionsInTag(
    		@QueryParam("tagName") String tagName,
    		@QueryParam("startDate") LocalDate startDate,
    		@QueryParam("endDate") LocalDate endDate,
    		@QueryParam("status") Status status,
    		@QueryParam("page") int page);

    @GET
    @Path("/transactions")
    @Produces({ "application/json" })
    public Response<TransactionsResponse> getTransactionsInAccount(
    		@QueryParam("accountName") String accountName,
    		@QueryParam("startDate") LocalDate startDate,
    		@QueryParam("endDate") LocalDate endDate,
    		@QueryParam("status") Status status,
    		@QueryParam("page") int page);

    @GET
    @Path("/transactions")
    @Produces({ "application/json" })
    public Response<TransactionsResponse> getTransactions(
    		@QueryParam("accountName") String accountName,
    		@QueryParam("tagName") String tagName,
    		@QueryParam("startDate") LocalDate startDate,
    		@QueryParam("endDate") LocalDate endDate,
    		@QueryParam("budgetName") String budgetName,
    		@QueryParam("contactName") String contactName,
    		@QueryParam("groupName") String groupName,
    		@QueryParam("status") Status status,
    		@QueryParam("page") int page);

    @GET
    @Path("/transactions")
    @Produces({ "application/json" })
    public Response<TransactionsResponse> getTransactions(
    		@QueryParam("accountName") String accountName,
    		@QueryParam("tagName") String tagName,
    		@QueryParam("startDate") YearMonth month,
    		@QueryParam("budgetName") String budgetName,
    		@QueryParam("contactName") String contactName,
    		@QueryParam("groupName") String groupName,
    		@QueryParam("status") Status status,
    		@QueryParam("page") int page);

    @GET
    @Path("/transactions")
    @Produces({ "application/json" })
    public Response<TransactionsResponse> getTransactionsByIds(
    		@QueryParam("accountId") String accountId,
    		@QueryParam("tagId") String tagId,
    		@QueryParam("startDate") LocalDate startDate,
    		@QueryParam("endDate") LocalDate endDate,
    		@QueryParam("budgetId") String budgetId,
    		@QueryParam("contactId") String contactId,
    		@QueryParam("groupId") String groupId,
    		@QueryParam("status") Status status,
    		@QueryParam("page") int page);

    @GET
    @Path("/transactions")
    @Produces({ "application/json" })
    public Response<TransactionsResponse> getTransactionsByIds(
    		@QueryParam("accountId") String accountId,
    		@QueryParam("tagId") String tagId,
    		@QueryParam("startDate") YearMonth month,
    		@QueryParam("budgetId") String budgetId,
    		@QueryParam("contactId") String contactId,
    		@QueryParam("groupId") String groupId,
    		@QueryParam("status") Status status,
    		@QueryParam("page") int page);

    @GET
    @Path("/transactions")
    @Produces({ "application/json" })
    public Response<TransactionsResponse> getTransactions(
    		@QueryParam("accountId") String accountId,
    		@QueryParam("accountName") String accountName,
    		@QueryParam("tagId") String tagId,
    		@QueryParam("tagName") String tagName,
    		@QueryParam("startDate") LocalDate startDate,
    		@QueryParam("endDate") LocalDate endDate,
    		@QueryParam("budgetId") String budgetId,
    		@QueryParam("budgetName") String budgetName,
    		@QueryParam("contactId") String contactId,
    		@QueryParam("contactName") String contactName,
    		@QueryParam("groupId") String groupId,
    		@QueryParam("groupName") String groupName,
    		@QueryParam("status") Status status,
    		@QueryParam("page") int page);

    @GET
    @Path("/transactions")
    @Produces({ "application/json" })
    public Response<TransactionsResponse> getTransactions(
    		@QueryParam("accountId") String accountId,
    		@QueryParam("accountName") String accountName,
    		@QueryParam("tagId") String tagId,
    		@QueryParam("tagName") String tagName,
    		@QueryParam("month") YearMonth month,
    		@QueryParam("budgetId") String budgetId,
    		@QueryParam("budgetName") String budgetName,
    		@QueryParam("contactId") String contactId,
    		@QueryParam("contactName") String contactName,
    		@QueryParam("groupId") String groupId,
    		@QueryParam("groupName") String groupName,
    		@QueryParam("status") Status status,
    		@QueryParam("page") int page);

    @GET
    @Path("/transactions")
    @Produces({ "application/json" })
    public String getJson(
    		@QueryParam("accountName") String accountName,
    		@QueryParam("page") int page);

    @GET
    @Path("/accounts")
    @Produces({ "application/json" })
    public Response<AccountsResponse> getAccounts();

    @GET
    @Path("/loans")
    @Produces({ "application/json" })
    public Response<LoansResponse> getLoans();

    @GET
    @Path("/tags")
    @Produces({ "application/json" })
    public Response<TagsResponse> getTags();

    @GET
    @Path("/budgets")
    @Produces({ "application/json" })
    public Response<BudgetsResponse> getBudgets();

    @GET
    @Path("/reminders")
    @Produces({ "application/json" })
    public Response<RemindersResponse> getReminders();

    @GET
    @Path("/groups")
    @Produces({ "application/json" })
    public Response<GroupsResponse> getGroups();

    @GET
    @Path("/contacts")
    @Produces({ "application/json" })
    public Response<ContactsResponse> getContacts();

}
+21 −0
Original line number Diff line number Diff line
package com.inteligr8.buxfer.api;

import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

import com.inteligr8.buxfer.model.Response;
import com.inteligr8.buxfer.model.TokenResponse;

@Path("/api")
public interface SecurityApi {

    @POST
    @Path("/login")
    @Produces({ "application/json" })
    public Response<TokenResponse> login(
    		@FormParam("email") String email,
    		@FormParam("password") String password);

}
Loading