blob: 1f4ac66e6d0c1dc799aa5ccea2cdf1c0a5c5cf74 [file] [log] [blame]
syntax = "proto3";
package invoice;
option go_package = "code.hackerspace.pl/hscloud/bgpwtf/invoice/proto";
import "bgpwtf/invoice/proto/invoice.proto";
// Subscription is the subscription to a service for which we want to generate
// monthly (at least for now) invoices.
message Subscription {
// Template is the data that will be used to emit the invoice. It will be
// used verbatim in a CreateInvoice request, apart from the following
// changes:
// - if 'date' is not set, the current date will be substituted instead
// - for every item in the invoice, any %Y and %M value in its title will
// be replaced by the year and month of the billing cycle. The billing
// cycle is defined in relation to the date in the Cycle enum below..
InvoiceData template = 1;
// Cycle defines the billing cycle policy for this subscription.
enum Cycle {
CYCLE_INVALID = 0;
// The subscription is billed for the month that it is invoiced for.
// Eg., if the invoice has a date of April 1st, April 15th or April
// 30th, the %M in title will be replaced with 04.
//
// This is used for subscriptions that are invoiced a month in advance,
// with invoices being sent out in the beginning of the month.
//
// In the future, the meaning of this enum value might change to 'bill
// at beginning of month/cycle', but currently we only bill once per
// month.
CYCLE_CURRENT = 1;
// The subscription is billed for the month from when it was invoiced.
// Eg., if the invoice has a date of April 1st, April 15th or April
// 30th, the %M in the title will be replaced with 03.
// This is used for subscriptions that are invoiced right after a month
// ends.
// In the future, the meaning of this enum value might change to 'bill
// at end of month/cycle', but currently we only bill once per month.
CYCLE_PREV = 2;
}
Cycle cycle = 2;
}
// Configuration is a prototext defining subscriptions. Currently it's read
// from a file by //bgpwtf/invoice/recurrent. In The future this might be
// broken up into a database schema.
message Configuration {
repeated Subscription subscription = 1;
}