mirror of
https://gerrit.hackerspace.pl/hscloud
synced 2024-10-18 12:17:46 +00:00
50 lines
2.2 KiB
Protocol Buffer
50 lines
2.2 KiB
Protocol Buffer
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;
|
|
}
|