Introduction
Welcome to the ProAbono API Backoffice documentation.
API Backoffice is designed to help power users and third party integrators to deal with data export and advanced automation capabilities. Every single functionnality of the ProAbono backoffice can be recoded and rebranded with this API.
ProAbono is organized around a RESTful Architecture and an API-First design.
Note that this API is designed to be used from a server to a server, and NOT from a client to server in javascript. This is very important for security purpose.
Compatibility : upward compatibility on this API is not guaranteed unless written agreement limited to the required resources.
Core concepts
Getting Started
Getting started with the ProAbono API is easy:
- Sign up.
- Get your API Keys and Endpoints from "My Profile" / Integration.
- Try it out! Create your first customer with POSTMAN (a REST API Client)
Your First Requests
POST https://via.proabono.com/Distribution/Customers
Content-Type: application/json
Accept: application/json
Accept-Encoding: gzip, deflate, compress
{
"IdBusiness": 2,
"ReferenceSegment": "myservice-eur",
"ReferrenceCustomer": "123456",
"Email": "john@doe.com",
"Name": "Mr Doe"
}
...
GET https://via.proabono.com/Distribution/Customers/42
The API works with JSON.
To ensure maximal compatibility, use the Content-Type and Accept headers in all requests :
Content-Type: application/json
Accept: application/json
All requests must be made over HTTPS.
Authentication
All API requests must be made over HTTPS.
Each request requires authentication.
Notice : The requests must be server to server. Do not joke with security.
API ENDPOINT
API Backoffice : https://via.proabono.com
API KEYS
Get your API Keys (Agent key
and API key
) from "My Profile" / Integration.
BASIC AUTHENTICATION
Authentication to the API occurs via HTTP Basic Auth.
- Username :
Agent key
- Password :
API key
To authenticate your request, you have to add a valid Authorization header.
3 STEPS TO BUILD THE AUTHORIZATION HEADER
POST https://via.proabono.com/Distribution/Customers
Content-Type: application/json
Accept: application/json
Accept-Encoding: gzip, deflate, compress
Authorization: Basic YzdmYTU3YjgtNDg2MS00ODU3LTlhMzgtMDYxMGRkNGZmZTE2OmY2Nzk3YWYxLTc5MWItNDBiMS04YmRhLWM0MTlmZTYxNjM2NQ==
{
"IdBusiness": 2,
"ReferenceSegment": "myservice-eur",
"ReferrenceCustomer": "123456",
"Email": "john@doe.com",
"Name": "Mr Doe"
}
Concatenate agent_key and api_key separated with ':' -> agent_key:api_key
c7fa57b8-4861-4857:f6797af1-791b-40b1
Base-64 encode the string
YzdmYTU3YjgtNDg2MS00ODU3OmY2Nzk3YWYxLTc5MWItNDBiMQ==
Use the encoded string in the header of your request
Authorization: Basic YzdmYTU3YjgtNDg2MS00ODU3OmY2Nzk3YWYxLTc5MWItNDBiMQ==
Sign up in order to get your Agent Key
and API Key
.
Start with POSTMAN a REST API Client
Your first steps with the API using POSTMAN:
POSTMAN and ProAbono API (English) or
POSTMAN and ProAbono API (French)
We have created a collection to help you get started playing with the API.
A collection is a set of predefined requests.
Once installed, you can see everything you need to test, play with the ProAbono API and start your integration.
Note: POSTMAN allows you to generate the code to use the ProAbono API in the language of your choice.
See more at Generate_code_snippets
Convention
HTTP Response Codes
ProAbono uses conventional HTTP response codes to indicate success or failure of an API request.
In general,
- codes in the 2xx range indicate success,
- codes in the 4xx range indicate an error that resulted from the provided information (e.g. a required parameter was missing, etc.),
- and codes in the 5xx range indicate an error with ProAbono's servers.
The table below describes the response codes that will be issued and gives potential reasons as to why they may have been sent back.
Successful Response Codes | |
---|---|
200 OK: | Successful request |
201 Created: | Successfully created the resource. |
204 No Content: | Successfully processed the request, but no content was sent back |
Unsuccessful Response Codes | |
---|---|
400 Bad Request: | Invalid or missing request parameters Inspect the request parameters and ensure that all required parameters are supplied. Check the response body : ProAbono may supply a hint on how to fix the problem. |
401 Unauthorized: | Invalid or no credentials passed in the request Inspect the authorisation header and ensure that a valid authentication has been provided. |
403 Forbidden: | The operation cannot be processed. The response contains a JSON error object with more information |
404 Not Found: | The requested Resource was not found Check your URL syntax or parameters. |
405 Method not allowed: | The requested resource does not support the supplied HTTP method Check the API documentation, you are doing something unhealthy. |
406 Not Acceptable: | Provided Content-Type or Accept header is not supported. You should probably use application/json. |
422 Unprocessable Entity: | Request syntax is correct, but its content is not. The response body will contains a list of errors that will tell you exactly where the problems are. See Errors section. |
500 Internal Server Error: | An internal error occurred when processing the request. Attempt the request again and if the HTTP 500 error re-occurs contact support@proabono.com |
501 Method Not Implemented: | The requested resource is not implemented yet. Found any ? You probably are a very advanced user. Contact tech support to know more about the release date. |
Errors
Example of an error
{
"Target": "AmountRecurrence",
"Code": "Error.Property.ConvertValue.Exception",
"Message": "Exception while converting given value for the property",
"Exception": "Input string was not in a correct format"
}
If your request results in a 4xx or 5xx HTTP code, the response body does contain an error.
Property | Description | Always returned? |
---|---|---|
Target | The related property | No |
Code | The error code | Yes |
Message | A message localized in your language | Yes |
Exception | More about the error | No |
Example of a list of errors
[
{
"Target": "AmountRecurrence",
"Code": "Error.Property.ValueRequired",
"Message": "A value is required for the property"
},
{
"Target": "Ammount",
"Code": "Error.Property.UnexpectedProperty",
"Message": "Unexpected property"
}
]
List of Errors
Errors list is just a JSON array of errors.
Pagination
Pagination used for list of resources
{
"Page": 2,
"SizePage": 3,
"Count": 3,
"TotalItems": 40,
"DateGenerated": "2023-12-11T12:45:05.1234714Z",
"Items": [
{
"item":"1"
},
{
"item":"2"
},
{
"item":"3"
}
],
"Links": [
{
"rel": "prev",
"href": "/Subscriptions?page=1&SizePage=3"
},
{
"rel": "next",
"href": "/Subscriptions?page=3&SizePage=3"
}
]
}
Requests that contain multiple items will be paginated by default.
Page
: Page number your are on.SizePage
: Maximum number of items per pageCount
: Number of items on the current pageTotalItems
: Number of items in this collectionLinks
: Most resources will provide these links at the end of the response object in alink
array that supplies links withrel=next
andrel=prev
attributes.
Pagination used for list of events
{
"Page": 2,
"SizePage": 3,
"Count": 3,
"HasMore": true,
"DateGenerated": "2023-12-11T12:45:05.1234714Z",
"Items": [
{
"item":"1"
},
{
"item":"2"
},
{
"item":"3"
}
],
"Links": [
{
"rel": "next",
"href": "/Notification/CustomerEvents?page=3&SizePage=3"
}
]
}
Page
: Page number your are on.SizePage
: Maximum number of items per pageCount
: Number of items on the current pageHasMore
: True means there is more object to retrieveLinks
: Array that supply a link withrel=next
attribute.
Filters
GET https://api-2.proabono.com/Subscriptions?ReferenceSegment=Sandbox-eur&Page=3&SizePage=20
Every objects collection has multiple available filters that can be passed in the URL.
Available filters are detailled for each object collection below.
Objects
Example Request - Retrieve a Customer
GET https://via.proabono.com/Distribution/Customers/152867
Example Response
{
"Id": 152867,
"DateUpdate": "2023-04-22T17:54:03.92Z",
"IdUserUpdate": 11,
"IdSegment": 3,
"IdUserCreation": 11,
"DateCreation": "2023-04-22T17:54:03.92Z",
"StateLife": "Ok",
"IdBusiness": 2,
"ReferenceCustomer": "ab83c0de-cc96-4cd5-996b-d6dac962901d",
"Name": "John Doe",
"Email": "john@doe.com",
"Language": "fr",
"Links": [
{
"rel": "self",
"href": "/Distribution/Customers/152868"
},
{
"rel": "related-address-billing",
"href": "/Distribution/Customers/152867/AddressBilling"
},
{
"rel": "related-address-shipping",
"href": "/Distribution/Customers/152867/AddressShipping"
}
]
}
ProAbono adds attributes to its objects. Here is the list of its attributes :
Parameter | Mandatory ? | Description | Type |
---|---|---|---|
DateCreation | Yes | Creation Date of the Object on ProAbono | Datetime |
IdUserCreation | Yes | Id of user who created the Object | Integer |
DateUpdate | Yes | Date of last update of the Object | Datetime |
IdUserUpdate | Yes | Id of user who updated the Object recently | Integer |
IdBusiness | No | Id of Business in which the Object has been created | Integer |
IdSegment | No | Id of Segment in which the Object has been created | Integer |
Performance tips
SizePage
Example Request
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness=2&SizePage=3
Example Response
{
"Page": 1,
"SizePage": 3,
"Count": 3,
"TotalItems": 53,
"DateGenerated": "2023-04-27T13:54:26.72Z",
"Items": [
{
"Id": 90285,
"Status": "Active",
"IdCustomer": 80269,
"TitleLocalized": "Premium Offer",
...
"Links": [
{
"rel": "self",
"href": "/Sub/Subscriptions/90285"
}
]
},
...
],
"Links": [
{
"rel": "next",
"href": "/Sub/Subscriptions/?IdBusiness=2&SizePage=3&page=2"
}
]
}
Tip: ?sizePage=100
If you need to fetch a lot of data, the default pagination size (10 items) is not the most efficient.
The maximum page size is 1000 and if you will greatly reduce the duration of your exports by reducing the number of requests.
Links
Example Request
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness=2&SizePage=3&Links=false
Example Response
{
"Page": 1,
"SizePage": 3,
"Count": 3,
"TotalItems": 25,
"DateGenerated": "2023-04-27T13:54:26.72Z",
"Items": [
{
"Id": 90285,
"Status": "Active",
"IdCustomer": 80269,
"TitleLocalized": "Premium Offer",
...
},
...
],
"Links": [
{
"rel": "next",
"href": "/Sub/Subscriptions/?IdBusiness=2&SizePage=3&page=2"
}
]
}
Tip: ?links=false
By default, API Backoffice generates HATEOAS links for resources:
- a single ref=self in list requests
- many links when requesting a single resource
Those links, expecially when requesting a single resource, can add a little cost to the call (generation, data size, parsing). Explicitely asking to not generate the links reduces the request duration.
Count
Example Request
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness=2&SizePage=3&Count=false
Example Response
{
"Page": 1,
"SizePage": 3,
"Count": 3,
"DateGenerated": "2023-04-27T13:54:26.72Z",
"Items": [
{
"Id": 90285,
"Status": "Active",
"IdCustomer": 80269,
"TitleLocalized": "Premium Offer",
...
"Links": [
{
"rel": "self",
"href": "/Sub/Subscriptions/90285"
}
]
},
...
],
"Links": [
{
"rel": "next",
"href": "/Sub/Subscriptions/?IdBusiness=2&SizePage=3&page=2"
}
]
}
Tip: ?count=false
Requesting a collection of resources in the API Backoffice takes the form /{area}/{resources}. (ex: /Distribution/Customers )
See the general response at paginated list.
The TotalItems property indicates the total number of items matching the query (with the provided filters).
Retrieving that value adds between 33% and 200% to the request duration, depending on the data table size and the complexity of the filters. Bypassing that count when it’s not necessary is a great performance improvement.
To deal with pagination without the TotalItems property, just check if Count == SizePage. If that’s the case, there is a high chance you have an follow-up page.
Get Many
Example Request
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness=2&id=90285&id=91456&id=65487
Example Response
{
"Page": 1,
"SizePage": 3,
"Count": 3,
"TotalItems": 3,
"DateGenerated": "2023-04-27T13:54:26.72Z",
"Items": [
{
"Id": 90285,
"Status": "Active",
"IdCustomer": 80269,
"TitleLocalized": "Premium Offer",
...
},
{
"Id": 91456,
"Status": "Active",
"IdCustomer": 78654,
"TitleLocalized": "Premium Offer",
...
},
{
"Id": 65487,
"Status": "Active",
"IdCustomer": 34512,
"TitleLocalized": "Premium Offer",
...
}
]
}
Tip: ?id=4567id=4568&id=4569
GET /{area}/{resource}/{id} returns a single resource
But if you want multiple resources and you know the ids, then you can do:
GET /{area}/{resource}?id={id_1}&id={id_2}&…
If will return an array of resources and it will be much faster that fetching each resource individually.
Recently modified
Example Request
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness=2&sizepage=3&DateUpdateMin=2023-01-01T00:00:00.00Z
Example Response
{
"Page": 1,
"SizePage": 3,
"Count": 3,
"TotalItems": 53,
"DateGenerated": "2023-04-27T13:54:26.72Z",
"Items": [
{
"Id": 90285,
"DateUpdate": "2023-04-09T00:40:00.00Z",
"DateCreation": "2023-01-09T10:58:00.00Z",
"Status": "Active",
"IdCustomer": 80269,
"TitleLocalized": "Premium Offer",
...
},
{
"Id": 91456,
"DateUpdate": "2023-04-09T00:42:00.00Z",
"DateCreation": "2023-01-09T10:59:00.00Z",
"Status": "Active",
"IdCustomer": 78654,
"TitleLocalized": "Premium Offer",
...
},
{
"Id": 65487,
"DateUpdate": "2023-04-09T00:52:00.00Z",
"DateCreation": "2023-01-09T11:12:00.00Z",
"Status": "Active",
"IdCustomer": 34512,
"TitleLocalized": "Premium Offer",
...
}
],
"Links": [
{
"rel": "next",
"href": "/Sub/Subscriptions/?IdBusiness=2&SizePage=3&DateUpdateMin=2023-01-01T00:00:00.00Z&page=2"
}
]
}
Tip: ?DateUpdateMin={date}
Each resource in ProAbono has a DateUpdate property, which is the last modified date.
If you do a synchronization of some resources in your own information system, you don’t need to fetch all the data to detect what changed. Just use the DateUpdateMin filter to get only the resources that changed after the given date.
Data Formats
Dates
Example Response
{
"DateStart": "2023-08-09T12:38:55.00Z"
}
Dates are in universal time : UTC.
They are sent and received in ISO 8601 format : YYYY-MM-DDTHH:MM:SSZ
Time Unit
Unit | Description |
---|---|
Day | |
Week | |
Month | |
Year |
Languages
ProAbono supports all languages.
Proabono supports language codes in ISO 639-1 format.
However you are responsible for the translation.
Common language codes are :
Code | Language |
---|---|
de | German |
en | English |
es | Spanish |
fr | French |
nl | Dutch |
pt | Portuguese |
it | Italian |
Countries
Proabono supports country codes in ISO_3166-1 alpha2 format.
Common Country Codes are :
Code | Country |
---|---|
AU | Australia |
BR | Brazil |
CA | Canada |
DE | Germany |
ES | Spain |
FR | France |
GB | United Kingdom of Great Britain |
IT | Italy |
NL | Netherlands |
US | United States of America |
Region/Province/State
Proabono supports Region/Province/State codes in ISO_3166-2 format
Common Region/Province/State Codes are :
Country Code | Region/Province/State code list Url | Country |
---|---|---|
AU | ISO_3166-2:AU | Australia |
BR | ISO_3166-2:BR | Brazil |
CA | ISO_3166-2:CA | Canada |
DE | ISO_3166-2:DE | Germany |
ES | ISO_3166-2:ES | Spain |
FR | ISO_3166-2:FR | France |
GB | ISO_3166-2:GB | United Kingdom of Great Britain |
IT | ISO_3166-2:IT | Italy |
NL | ISO_3166-2:NL | Netherlands |
US | ISO_3166-2:US | United States of America |
Status Customer
Status is a functional state of a Customer which can be seen as a simplified or external state.
This state is the one you will most likely care about. It indicates the state of the customer from an external point of view and is most likely the information an external software will require.
Status | Description |
---|---|
Enabled | The customer can subscribe, access its customer portal, update its subscription, download its invoices, update its payment info … |
Suspended | The customer has been suspended. Its customer portal and hosted pages cannot be accessed anymore. Its invoices cannot be opened (but can be exported) |
Read more about Status and StateCustomer in our product documentation.
State Customer
StateCustomer is a technical state of a Customer which reflects the functional state and adds information about the customer lifecycle.
This state is useful only if you want more accurate information about a customer. It allows you to see where the customer is in its state machine.
StateCustomer | Description |
---|---|
Enabled | The customer can subscribe, access its customer portal, update its subscription, download its invoices, update its payment info … |
Suspended | The customer has been suspended. Its customer portal and hosted pages cannot be accessed anymore. Its invoices cannot be opened (but can be exported) |
Read more about Status and StateCustomer in our product documentation.
Status Subscription
Status is a functional state of a Subscription which can be seen as a simplified or external state.
This state is the one you will most likely care about. It indicates the state of the subscription from an external point of view and is most likely the information an external software will require.
Status | Description |
---|---|
Draft | The subscription is not started yet. |
Active | The subscription is currently active, meaning the customer can access the service. |
Suspended | The subscription is suspended. |
Ended | The subscription is not active anymore. |
Deleted | The subscription is being deleted. |
Read more about Status and StateSubscription in our product documentation.
State Subscription
StateSubscription is a technical state of a Subscription which reflects the functional state and adds information about the subscription lifecycle.
This state is useful only if you want to dig deep into how ProAbono works. It indicates where the Subscription is in its state machine, and what are the possible actions and automated outcomes.
If you want to expose your subscriptions state or use those into an external software, use the functional state instead.
StateSubscription | Description |
---|---|
DraftCustomer | Draft create by a customer that did not complete the subscription process |
DraftAgent | Draft create by a agent. |
DraftDelayedStart | Subscription with a scheduled start date. |
DraftDelayedUpgrade | Subscription replacing an active subscription on its next term. |
ActiveRunning | Subscription running |
ActiveDelayedUpgrade | Subscription replaced by a new one on its next term. |
ActiveDelayedTermination | Subscription terminating on its next term. |
ActiveDelayedSuspension | Subscription suspended on its next term. |
SuspendedAgent | Suspended by an agent. |
SuspendedNoPaymentInfo | Suspended automatically because payment information are missing. |
SuspendedPaymentDue | Suspended automatically because to many unpaid invoices. |
EndedComplete | Time-limited subscription ended. |
EndedUpgrade | Subscription terminated after a plan change. |
EndedTerminated | Subscription has been terminated. |
Deleted | Deleted |
Read more about Status and StateSubscription in our product documentation.
Type Feature
Type Feature | Description |
---|---|
OnOff | For features like Module, Content Access, ... |
Limitation | Type for Feature which must be counted BUT its quantity will NOT be reset at each subscription renewal. |
Consumption | Type for Feature which must be counted AND its quantity will be reset at each subscription renewal. |
Properties Feature
Property | Description |
---|---|
UpdatableBeforeSubscription | Authorize the Customer to modify the quantity of the Feature before subscription. |
UpdatableAfterSubscription | Authorize the Customer to modify the quantity of the Feature after subscription. |
FreeInTrial | During the Trial Period, any update of the feature are free. Extra charges will start only after the trial period. |
UpdateAtFullPrice | When increasing the quantity, the extra fee is computed for the full period. When decreasing the quantity, the fees already added for the period are not credited. When this property is not set, the extra fees are prorated. (read this article before enabling) |
Type Payment
Type Payment | Description |
---|---|
Free | Subscription is free, no payment ever requested |
ExternalCheck | Payment with check |
ExternalCash | Payment with cash |
ExternalBank | Payment by wire transfer |
ExternalOther | Other payment type |
Batch | Payment via XML files submitted to the bank |
Card | Payment with payment card, automated renewal |
DirectDebit | Payment with bank account info, automated renewal |
Type Credit
Type Credit | Description |
---|---|
Refund | - |
Chargeback | - |
State Life
State Life | Description |
---|---|
Ok | - |
ToModerate | - |
DisabledUser | - |
DisabledSystem | - |
DisabledModeration | - |
Deleted | - |
Status Invoice
Status is a functional state of a Invoice which is mainly the accounting state.
Those are the states that you will need when pushing data into an accounting solution or make an export for your finance team.
Status | Description |
---|---|
Draft | Only case where the invoice is not issued (no number) |
Due | The invoice has not been paid yet. |
Paid | The invoice has been paid. |
Problem | The invoice has an issue. Either it’s not paid, or the funds have been charged back. |
Void | The invoice has been issued by mistake and has been cancelled. |
Uncollectible | The invoice was due but the payment cannot be collected or has been charged back and will not be paid. |
Read more about Status and StateInvoice in our product documentation.
State Invoice
StateInvoice is a technical state of Invoice a which reflects the functional state and adds information about the invoice lifecycle.
Those states are used internally by ProAbono and are used to determine where is the invoice in the automation process, what are the possible actions and outcome. You most likely won’t need to dig into those.
StateInvoice | Description |
---|---|
Draft | Basic draft |
DraftCharging | Invoice is currently being charged and will be issued if the charge succeeds |
DueAuto | Invoice is due and automatically processed |
DueOffline | Invoice is due and an offline payment by the customer is expected |
DueToProcess | Invoice is due and will be processed later (ex: Batch) |
DuePending | Invoice is due and the payment is pending |
Paid | Invoice is paid |
PaidRefunded | Invoice is paid but has been refunded |
ProblemAuto | Invoice encountered an issue with an automated payment |
ProblemOverdue | Invoice is overdue |
ProblemDisputed | Invoice payment has been disputed |
Void | Invoice has been cancelled before any payment attempt |
Uncollectible | Invoice payment cannot be collected |
Read more about Status and StateInvoice in our product documentation.
Status Payment
Status is a functional state of a Payment.
Status | Description |
---|---|
Draft | This state is not used for now, it’s added for future evolutions. |
Pending | The payment is pending. Generally used by direct debit. |
Completed | The payment is complete, the funds are either on your payment provider account or directly on your bank account. |
Cancelled | The payment has been cancelled |
Failed | The payment attempt ended with a failure |
Reversed | This is a reversal of a previous payment, because of a refund or a chargeback |
Read more about Status and StatePayment in our product documentation.
State Payment
StatePayment is a technical state of a Payment.
StatePayment | Description |
---|---|
Draft | This state is not used for now, it’s added for future evolutions |
Pending | The payment is in progress and will change status once the process has been completed. |
Completed | The payment is completed |
CompletedRefunded | The payment is completed but has been a refunded. There is another related ‘Reversal’ payment. |
CompletedChargedback | The payment is completed but has been a charged back. There is another related ‘Reversal’ payment. |
CancelledAgent | The payment has been cancelled by a someone from your organization |
Failed | The payment attempt ended with a failure |
ReversedRefund | The funds have been reversed due to a refund by someone from your organization |
ReversedChargeback | The funds have been reversed due to a chargeback by the customer or the customer’s bank |
Read more about Status and StatePayment in our product documentation.
Type GatewayPermission
Type GatewayPermission | Description |
---|---|
CardDummy | A fake card gateway (For tests only) |
CardPaybox | The gateway is Paybox (or compatible) |
CardStripe | The gateway is Stripe (or compatible) |
DirectDebitDummySepa | A fake directdebit gateway (For tests only) |
DirectDebitGoCardless | The gateway is GoCardless (or compatible) |
Type Trigger
Type Trigger | Description |
---|---|
CustomerAdded | Customer - added |
CustomerBillingAddressUpdated | Customer - contact info updated |
CustomerShippingAddressUpdated | Customer - shipping address updated |
CustomerSettingsPaymentUpdated | Customer - payment settings updated |
CustomerPaymentMethodUpdated | Customer - payment method updated |
CustomerDateNextBillingUpdated | Customer - next billing date updated |
CustomerIsGreyListed | Customer - added to grey list |
CustomerBillingSucceeded | Customer - billing succeeded |
CustomerBillingFailed | Customer - billing failed |
CustomerChargingSucceeded | Customer - charging succeeded |
CustomerChargingPending | Customer - charging pending |
CustomerChargingFailed | Customer - charging failed |
CustomerChargingAutoFailedNoPermission | Customer - auto-charging failed: no valid gateway permission |
CustomerChargingAutoFailedNoRetry | Customer - an auto-charging failed and cannot be retried |
CustomerSuspended | Customer - suspended |
CustomerEnabled | Customer - enabled |
CustomerDeleted | Customer - deleted |
SubscriptionStarted | Subscription - started |
SubscriptionRenewed | Subscription - renewed |
SubscriptionRestarted | Subscription - restarted |
SubscriptionSuspendedCustomer | Subscription - suspended by the customer |
SubscriptionSuspendedAgent | Subscription - suspended by an agent |
SubscriptionSuspendedPaymentInfoMissing | Subscription - interrupted (no payment info) |
SubscriptionSuspendedPaymentDue | Subscription - interrupted (payment due) |
SubscriptionTerminatedAtRenewal | Subscription - terminated at end of the billing period |
SubscriptionTerminated | Subscription - terminated |
SubscriptionHistory | Subscription - over |
SubscriptionDeleted | Subscription - deleted |
SubscriptionUpdated | Subscription - updated |
SubscriptionFeaturesUpdated | Subscription - features updated |
SubscriptionTerminatedForUpgrade | Subscription - terminated for upgrade |
SubscriptionUpgraded | Subscription - upgraded |
SubscriptionDateTermUpdated | Subscription - renewal date updated |
SubscriptionDelayedStartCancelled | Subscription - delayed start cancelled |
InvoiceDebitIssuedPaymentAuto | Invoice - issued, charging programmed |
InvoiceDebitIssuedPaymentOffline | Invoice - payment due |
InvoiceDebitPaid | Invoice - paid |
InvoiceDebitRefunded | Invoice - refunded |
InvoiceDebitCancelled | Invoice - cancelled |
InvoiceDebitPaymentAutoFailed | Invoice - payment auto failed |
InvoiceDebitPaymentAutoRequestedAuth | Invoice - auto payment rejected: payment authentication requested |
InvoiceDebitOverdue | Invoice - overdue |
InvoiceDebitDisputed | Invoice - disputed |
InvoiceCreditIssued | Credit note - issued |
InvoiceCreditPaid | Credit note - paid |
InvoiceCreditCancelled | Credit note - cancelled |
InvoiceCreditPaymentFailed | InvoiceCreditPaymentFailed |
InvoiceCreditOverdue | Credit note - overdue |
GatewayPermissionSoonExpired | Payment permission - Expires soon |
GatewayPermissionExpired | Payment permission - Expires |
GatewayPermissionInsufficientFunds | Payment permission - insufficient funds |
GatewayPermissionPaymentIssues | Payment information - payment issues |
GatewayPermissionDefective | Payment permission - Defective |
GatewayPermissionUnlocked | Payment information - Re-enabling |
Type Move
Type Move | Description |
---|---|
AutoBillingReport | Balance from the previous billing period. Used when a billing operation ends with a positive balance. This amount is reported on the next invoice |
AutoBillingNoRepayment | Amount carried over to the next billing period. Used when a billing operation has a positive balance. The amount is stacked in the customer moves to balance the account |
AutoRefundPartial | Partial refund of a paid invoice |
AutoSubscriptionRecurrence | Flat fee of a subscription |
AutoSubscriptionRecurrenceProrata | Prorated flat fee of a subscription flat fee. Used when upgrading |
AutoSubscriptionUpfront | Upfront fee of a subscription |
AutoSubscriptionTrial | Trial fee of a subscription, because trying doesn't always means for free |
AutoSubscriptionTrialProrata | Prorated trial fee of a subscription. Used when upgrading in a paying trial |
AutoSubscriptionTermination | Termination fee of a subscription |
AutoFeatureNotProratable | Computed feature fee when subscribing or renewing a subscription. Never refunded in case of an upgrade |
AutoFeatureProratable | Computed feature fee when subscribing or renewing a subscription. Partially refunded in case of an upgrade if the period is not over |
AutoFeatureProrata | Prorated adjustment on a feature. Used when the quantity changes on a proratable feature |
State Discount
State Discount | Description |
---|---|
Draft | Discounts in draft are not usable |
Enabled | Discounts enabled can be applied to offers and subscriptions |
Type Off
Only use with Discounts.
Type Off | Description |
---|---|
Flat | The discount is a fixed, flat amount |
PerTenThousand | The discount is a percentage |
Type TargetFee
Only use with Discounts.
Type TargetFee | Description |
---|---|
UpfrontFee | Discount will only be applied the upfront/setup fee of subscriptions |
FlatFee | Discount will only be applied the flat fee of subscriptions |
FeatureFee | Discount will only be applied the fee of one specific feature of subscriptions |
AllRecurring | FlatFee + FeatureFee |
All | UpfrontFee + FlatFee + FeatureFee |
Address Resource
Example
{
"Company": "John Doe LLC",
"FirstName": "John",
"LastName": "Doe",
"AddressLine1": "123 avenue des Champs Elysées",
"AddressLine2": "1st Floor",
"ZipCode": "75008",
"City": "Paris",
"Country": "FR",
"Region": "FR-75",
"Phone": "+33102030405",
"TaxInformation":"FR1234567890"
}
Property | Description | Type |
---|---|---|
Id | Id of the Address Object | Integer |
Company | Name of the Company | String |
FirstName | - | String |
LastName | - | String |
AddressLine1 | Line 1 of the Address | String |
AddressLine2 | Line 2 of the Address | String |
ZipCode | ZipCode of the Address | String |
City | Name of the City | String |
Country | Code of Country of the Address | CountryCode |
Region | Region stands for Subdivision, Department, Region, Province, State of the Country | RegionCode |
TaxInformation | Tax Information (VAT id, Num TVA Intra, GST...) | String |
Phone | Phone Number | String |
Metadata
Example Request "Create a Customer"
POST https://via.proabono.com/Distribution/Customers
{
"ReferenceCustomer": "123456",
"Name": "John Doe",
"Email": "john@doe.com",
"Language": "en",
"ReferenceOffer": "premium-pro-plus",
"Metadata":
{
"Gender":"Male",
"Incomes": 150000,
"Kids": 3
}
}
A set of key/value pairs that you can add to an object (Customer, Subscription, ...).
It can be useful for storing additional information about the object in a structured format.
You can unset individual keys if you POST an empty value for that key.
You can clear all keys if you POST an empty value for metadata.
- At most 5 key/value pairs per object.
- Key length of a value is 50 characters.
- Max length of a value is 450 characters.
Customer Billing
Property | Description | Type |
---|---|---|
Id | Id of the CustomerBilling Object | Integer |
IsCustomerBillable | True if the customer is billable | Boolean |
IsPaymentCappingReached | True if the customer has too many unpaid invoices | Boolean |
IsPermissionInExpiration | True if the permission is expired or if it will expired before the next billing | Boolean |
IsGreyListed | True if the customer is in the greylist | Boolean |
StateCustomer | Technical State of the Customer | StateCustomer |
TypePayment | Payment method | TypePayment |
CountUnpaidInvoice | Number of due or disputed invoices | Integer |
AmountUnpaidInvoice | Total amount of due or disputed invoices | Integer |
DaysUnpaidInvoice | Number of days since the oldest due or disputed invoice | Integer |
IsAutoBilling | True if the next billing date is automatically scheduled every month | Boolean |
DurationBilling | Billing period duration (1 by default). Segment-wide settings. | Integer |
UnitBilling | Billing period unit (month by default). Segment-wide settings. | TimeUnit |
CanRenewIfNoPaymentInfo | True if the customer's subscription is renewed even if the customer has no payment method. Segment-wide settings. | Boolean |
API Backoffice - Customers
Customers refer to your users in your Site/Service/Application.
Each customer shares a reference called ReferenceCustomer
in order to be easily found in your database and ProAbono.
A customer can subscribe to offers.
Each subscription is a copy of the offer subscribed at the exact moment of the subscription.
(See below Offers and Subscriptions)
Customer Resource
Property | Description | Type |
---|---|---|
Id | Id of the Customer Object | Integer |
ReferenceCustomer | Shared Key of the Customer between ProAbono and your application | String |
Name | Display Name of the Customer | String |
Email of the Customer | String | |
StateCustomer | Technical State of the Customer | StateCustomer |
Status | Functional State of the Customer | Status |
Language | Language of your customer | String Language |
Links | Useful links concerning the Customer | See below. |
Collection of links
Rel | Description |
---|---|
related-settings-payment | All about the Payment Settings of the Customer. See CustomerPaymentSettings. |
related-address-billing | Billing Address of the Customer. See Address. |
related-address-shipping | Shipping Address of the Customer. See Address. |
collection-subscription | All Subscriptions of the Customer. See Subscriptions. |
collection-invoicedebit | All Invoices of the Customer. See Invoices. |
collection-invoicecredit | All Credit Notes of the Customer. See Invoices. |
collection-balance | Balance of the Customer (if IsNotBilled is true, only what is NOT billed yet can be seen). See CustomerBalance. |
hosted-collection-offers | Unique encrypted link to the page which contains all visible offers available for the concerned Customer. |
hosted-collection-subscription | Unique encrypted link to the page which contains all subscriptions of the concerned Customer. |
hosted-register | Unique encrypted link for the concerned Customer to directly type/update his/her payment information. |
Create a Customer
Definition
POST https://via.proabono.com/Distribution/Customers
Example Request
POST https://via.proabono.com/Distribution/Customers
{
"IdBusiness": 2,
"ReferenceCustomer": "ab83c0de-cc96-4cd5-996b-d6dac962901d",
"Name": "John Doe",
"Email": "john@doe.com",
"Language": "en",
"Metadata":
{
"Gender":"Male",
"Incomes": 150000,
"Kids": 3
}
}
Example Response
{
"Id": 64854,
"DateUpdate": "2023-04-22T17:54:03.92Z",
"IdUserUpdate": 69719,
"IdSegment": 3,
"IdUserCreation": 69719,
"DateCreation": "2023-04-22T17:54:03.92Z",
"StateCustomer": "Enabled",
"Status": "Enabled",
"IdBusiness": 2,
"ReferenceCustomer": "ab83c0de-cc96-4cd5-996b-d6dac962901d",
"Name": "John Doe",
"Email": "john@doe.com",
"Language": "en",
"Metadata":
{
"Gender":"Male",
"Incomes": 150000,
"Kids": 3
},
"Links": [
{
"rel": "self",
"href": "/Distribution/Customers/152868"
},
{
"rel": "related-address-billing",
"href": "/Distribution/Customers/152867/AddressBilling"
},
{
"rel": "related-address-shipping",
"href": "/Distribution/Customers/152867/AddressShipping"
},
{
"rel": "related-address-billing",
"href": "/Distribution/Customers/64854/AddressBilling"
},
{
"rel": "related-address-shipping",
"href": "/Distribution/Customers/64854/AddressShipping"
},
{
"rel": "collection-subscription",
"href": "/Sub/Subscriptions?IdCustomerOrBuyer=64854"
},
{
"rel": "collection-invoicedebit",
"href": "/Finance/InvoiceDebits?idCustomer=64854"
},
{
"rel": "collection-invoicecredit",
"href": "/Finance/InvoiceCredits?idCustomer=64854"
},
{
"rel": "collection-balance",
"href": "/Finance/CustomerMoves?idCustomer=64854&IsNotBilled=true"
},
{
"rel": "hosted-collection-offers",
"href": "https://sandbox-eur.proabono.com/pricing/{Unique-Encrypted-Url-1}"
},
{
"rel": "hosted-register",
"href": "https://sandbox-eur.proabono.com/register/{Unique-Encrypted-Url-2}"
},
{
"rel": "hosted-collection-subscription",
"href": "https://sandbox-eur.proabono.com/subscriptions/{Unique-Encrypted-Url-3}"
}
]
}
Create/Declare a customer in ProAbono.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
ReferenceSegment | (Yes, only if you need/have more than 1 segment) | Reference of the segment in which the customer will be created. | String |
Yes | Email of your customer | Integer | |
Name | No | Display Name of your customer | String |
ReferenceCustomer | No | Reference of your customer shared with your application and ProAbono. (Use your own id/reference user) |
String |
Language | No | Language of your customer (By Default, ProAbono will use the language of the segment.) | String Language |
ReferenceAffiliation | No | Reference of the affiliate who brought the customer | String |
Metadata | No | A set of key/value pairs that you can add to a customer. Useful for storing additional information about the customer in a structured format. | Metadata |
Returns
- HTTP 201 in case of a success. Reponse body contains the created resource.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Retrieve a Customer
Definition
GET https://via.proabono.com/Distribution/Customers/{Id}
Example Request
GET https://via.proabono.com/Distribution/Customers/152867
Example Response
{
"Id": 64854,
"DateUpdate": "2023-08-19T09:09:33.93Z",
"IdUserUpdate": 128,
"IdSegment": 3,
"IdUserCreation": 128,
"DateCreation": "2023-08-19T09:09:33.93Z",
"StateCustomer": "Enabled",
"Status": "Enabled",
"IdBusiness": 2,
"ReferenceCustomer": "c2f548b5-91bd-4394-83b0-d76c42620774",
"Name": "John Doe",
"Email": "john@doe.com",
"Language": "en",
"Links": [
{
"rel": "related-settings-payment",
"href": "/Distribution/Customers/64854/SettingsPayment"
},
{
"rel": "related-address-billing",
"href": "/Distribution/Customers/64854/AddressBilling"
},
{
"rel": "related-address-shipping",
"href": "/Distribution/Customers/64854/AddressShipping"
},
{
"rel": "collection-subscription",
"href": "/Sub/Subscriptions?IdCustomerOrBuyer=64854"
},
{
"rel": "collection-invoicedebit",
"href": "/Finance/InvoiceDebits?idCustomer=64854"
},
{
"rel": "collection-invoicecredit",
"href": "/Finance/InvoiceCredits?idCustomer=64854"
},
{
"rel": "collection-balance",
"href": "/Finance/CustomerMoves?idCustomer=64854&IsNotBilled=true"
},
{
"rel": "hosted-collection-offers",
"href": "https://sandbox-eur.proabono.com/pricing/{Unique-Encrypted-Url-1}"
},
{
"rel": "hosted-register",
"href": "https://sandbox-eur.proabono.com/register/{Unique-Encrypted-Url-2}"
},
{
"rel": "hosted-collection-subscription",
"href": "https://sandbox-eur.proabono.com/subscriptions/{Unique-Encrypted-Url-3}"
}
]
}
Retrieve a Customer by id
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the Customer to be retrieved. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Update a Customer
Definition
PATCH https://via.proabono.com/Distribution/Customers/
Example Request
PATCH https://via.proabono.com/Distribution/Customers/
{
"Id": 152867,
"IdBusiness": 2,
"ReferenceCustomer": "ab83c0de-cc96-4cd5-996b-d6dac962901d",
"Name": "John Doe Senior",
"Email": "john-sr@doe.com",
"Language": "fr"
}
Update your Customer's email, name, language and its Reference
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | Id of the Customer | Integer |
IdBusiness | Yes | Id of your Business | Integer |
Yes | Email of your customer | Integer | |
Name | Yes | Display Name of your customer | String |
ReferenceCustomer | Yes | Reference of your customer shared with your application and ProAbono | String |
Language | Yes | Language of your customer | String Language |
Returns
- HTTP 200 in case of a success.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Delete a Customer
Definition
DELETE https://via.proabono.com/Distribution/Customers/{Id}
Example Request
DELETE https://via.proabono.com/Distribution/Customers/123456
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the customer to be deleted. | Integer |
Returns
- HTTP 200 in case of a success.
- In any other cases, response body contains a single error describing the problem.
Retrieve Customer Payment Settings
Definition
GET https://via.proabono.com/Distribution/Customers/{Id}/SettingsPayment
Example Request
GET https://via.proabono.com/Distribution/Customers/152867/SettingsPayment
Example Response
{
"Id": 152867,
"DateUpdate": "2023-09-13T21:31:17.42Z",
"IdUserUpdate": 1260,
"IdCustomer": 152867,
"DateNextBilling": "2023-04-16T17:04:14.26Z",
"TypePayment": "Card",
"IdGatewayPermission": 135,
"Links": [
{
"rel": "related-customer",
"href": "/Distribution/Customers/152867"
},
{
"rel": "related-gatewaypermission",
"href": "/Gateway/GatewayPermissions/135"
}
]
}
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the customer. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Update Customer Payment Settings
Definition
PATCH https://via.proabono.com/Distribution/Customers/{Id}/SettingsPayment
Example Request
PATCH https://via.proabono.com/Distribution/Customers/152867/SettingsPayment
{
"IdBusiness": 2,
"DateNextBilling": "2023-04-16T17:04:14.26Z",
"TypePayment": "Card",
"IdGatewayPermission": 135
}
Update the Date of the Next Billing of the Customer, the GatewayPermission of the Customer (Footprint of a bankcard, mandate...).
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | Id of the Customer | Integer |
IdBusiness | Yes | Id of your Business | Integer |
DateNextBilling | Yes | Date of the Next Billing of the Customer | Datetime |
TypePayment | Yes | Type of payment | TypePayment |
IdGatewayPermission | Yes | Id of the GatewayPermission | Integer |
Returns
- HTTP 200 in case of a success.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Retrieve Customer Billing Address
Definition
GET https://via.proabono.com/Distribution/Customers/{Id}/AddressBilling
Example Request
GET https://via.proabono.com/Distribution/Customers/123456/AddressBilling
Example Response
{
"Id": 123456,
"DateUpdate": "2023-04-24T14:25:14.62Z",
"IdUserUpdate": 69719,
"IdCustomer": 123456,
"Company": "Sandbox SAS",
"FirstName": "John",
"LastName": "Doe",
"AddressLine1": "100 avenue des Champs Elysees",
"AddressLine2": "1st Floor",
"ZipCode": "75008",
"City": "Paris",
"Country": "FR",
"Region": "FR-75",
"TaxInformation": "FR 1234567890",
"Phone" : "+33 1 234 456 789",
"Links": [
{
"rel": "related-customer",
"href": "/Distribution/Customers/123456"
}
]
}
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the customer. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Update Customer Billing Address
Definition
PATCH https://via.proabono.com/Distribution/Customers/{Id}/AddressBilling
Example Request
PATCH https://via.proabono.com/Distribution/Customers/123456/AddressBilling
{
"IdBusiness": 2,
"Company": "Sandbox SAS",
"FirstName": "John",
"LastName": "Doe",
"AddressLine1": "100 avenue des Champs Elysees",
"AddressLine2": "1st Floor",
"ZipCode": "75008",
"City": "Paris",
"Country": "FR",
"Region": "FR-75",
"TaxInformation": "FR1234567890",
"Phone" : "+33 1 234 456 789"
}
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the customer. | Integer |
IdBusiness | Yes | Id of your Business | Integer |
Returns
- HTTP 200 in case of a success.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Retrieve Customer Shipping Address
Definition
GET https://via.proabono.com/Distribution/Customers/{Id}/AddressShipping
Example Request
GET https://via.proabono.com/Distribution/Customers/123456/AddressShipping
Example Response
{
"Id": 123456,
"DateUpdate": "2023-04-24T14:25:14.62Z",
"IdUserUpdate": 69719,
"IdCustomer": 123456,
"Company": "Sandbox SAS",
"FirstName": "John",
"LastName": "Doe",
"AddressLine1": "100 avenue des Champs Elysees",
"AddressLine2": "1st Floor",
"ZipCode": "75008",
"City": "Paris",
"Country": "FR",
"Region": "FR-75",
"TaxInformation": "FR 1234567890",
"Phone" : "+33 1 234 456 789",
"Links": [
{
"rel": "related-customer",
"href": "/Distribution/Customers/123456"
}
]
}
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the customer. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Update Customer Shipping Address
Definition
PATCH https://via.proabono.com/Distribution/Customers/{Id}/AddressShipping
Example Request
PATCH https://via.proabono.com/Distribution/Customers/123456/AddressShipping
{
"IdBusiness": 2,
"Company": "Sandbox SAS",
"FirstName": "John",
"LastName": "Doe",
"AddressLine1": "100 avenue des Champs Elysees",
"AddressLine2": "1st Floor",
"ZipCode": "75008",
"City": "Paris",
"Country": "FR",
"Region": "FR-75",
"TaxInformation": "FR 1234567890",
"Phone" : "+33 1 234 456 789"
}
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the customer. | Integer |
IdBusiness | Yes | Id of your Business | Integer |
Returns
- HTTP 200 in case of a success.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
List Customers
Definition
GET https://via.proabono.com/Distribution/Customers/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Distribution/Customers/?IdBusiness=2
Example Response
{
"Page": 1,
"SizePage": 25,
"Count": 3,
"TotalItems": 3,
"DateGenerated": "2023-04-24T09:34:18.46Z",
"Items": [
{
"Id": 205708,
"DateUpdate": "2023-04-16T16:04:14.26Z",
"IdUserUpdate": 69719,
"IdSegment": 44,
"IdUserCreation": 69719,
"DateCreation": "2023-04-16T16:04:14.26Z",
"StateCustomer": "Enabled",
"Status": "Enabled",
"IdBusiness": 2,
"ReferenceCustomer": "d0845e9e-1e3b-4b4a-a832-d624bbbce1e2",
"Name": "Mickael Douglas",
"Email": "mickael@douglas.com",
"Language": "en",
"Links": [
{
"rel": "self",
"href": "/Distribution/Customers/205708"
},
{
"rel": "related-address-billing",
"href": "/Distribution/Customers/205708/AddressBilling"
},
{
"rel": "related-address-shipping",
"href": "/Distribution/Customers/205708/AddressShipping"
}
]
},
{
"Id": 205707,
"DateUpdate": "2023-04-16T16:04:14.29Z",
"IdUserUpdate": 69719,
"IdSegment": 44,
"IdUserCreation": 69719,
"DateCreation": "2023-04-16T16:04:14.29Z",
"StateCustomer": "Enabled",
"Status": "Enabled",
"IdBusiness": 2,
"ReferenceCustomer": "8082ab5b-345d-44a1-b0a4-ce0683a7eca3",
"Name": "Mickael Jackson",
"Email": "mickael.jackson@heaven.com",
"Language": "en",
"Links": [
{
"rel": "self",
"href": "/Distribution/Customers/205707"
},
{
"rel": "related-address-billing",
"href": "/Distribution/Customers/205707/AddressBilling"
},
{
"rel": "related-address-shipping",
"href": "/Distribution/Customers/205707/AddressShipping"
}
]
},
{
"Id": 205704,
"DateUpdate": "2023-04-16T11:26:28.61Z",
"IdUserUpdate": 69719,
"IdSegment": 44,
"IdUserCreation": 69719,
"DateCreation": "2023-04-16T11:26:28.61Z",
"StateCustomer": "Enabled",
"Status": "Enabled",
"IdBusiness": 2,
"ReferenceCustomer": "ceb139b8-9fbb-4739-b498-593767f0ef5f",
"Name": "Diana Ross",
"Email": "diana@ross.com",
"Language": "en",
"Links": [
{
"rel": "self",
"href": "/Distribution/Customers/205704"
},
{
"rel": "related-address-billing",
"href": "/Distribution/Customers/205704/AddressBilling"
},
{
"rel": "related-address-shipping",
"href": "/Distribution/Customers/205704/AddressShipping"
}
]
}
]
}
Get the collection of Customers (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | List all Customers related to the same Business | Integer |
IdSegment | No | List all Customers related to the same Segment | Integer |
DateCreationMin | No | List all Customers created after the date | Datetime |
DateCreationMax | No | List all Customers created before the date | Datetime |
DateUpdateMin | No | List all Customers update after the date | Datetime |
DateUpdateMax | No | List all Customers updated before the date | Datetime |
ReferenceCustomer | No | List of 1 Customer if the reference is related to a known Customer | String |
No | List all Customers related to the same Email Address | String | |
Name | No | List all Customers related to the same Name or a portion of the Name | String |
Language | No | List all Customers declared with a specific language | Language |
StatusCustomer | No | List all Customers with a specific Status | Status |
ReferenceAffiliation | No | List all Customers with the same reference of the affiliate who brought the customer | String |
IsBillable | No | If True, List all Customers with valid payment info | Boolean |
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Distribution/Customers/?IdBusiness=2&StateLife=Ok&Language=EN&DateCreationMin=2023-07-27T13:54:00
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
API Backoffice - Offers
Offer describes what AND how you want to sell.
Offer Resource
Property | Description | Type |
---|---|---|
Id | Id of the Offer Object | Integer |
Name | Name of the Offer | String |
ReferenceOffer | Shared Key of the Offer between ProAbono and your application (Often used for accounting purposes) | String |
IsVisible | Visibility of the offer in the hosted pages | Boolean |
Order | Define the position of the Offer among all Offers when displayed in the hosted Offer Pages | Integer |
AmountUpFront | Amount of the Upfront fee, Setup fee or Initial fee of your offer in cents | Integer |
AmountTrial | Amount of the Trial period in cents | Integer |
DurationTrial | Number of Trial Time Unit | Integer |
UnitTrial | Time Unit of Trial | TimeUnit |
AmountRecurrence | Amount of each recurrence in cents | Integer |
DurationRecurrence | Number of Recurrence Time Unit | Integer |
UnitRecurrence | Time Unit of Recurrence | TimeUnit |
CountRecurrences | Number of Recurrences | Integer |
CountMinRecurrences | Minimum recurrences the customer will be committed to pay | Integer |
AmountTermination | Amount of the Termination Fee in cents | Integer |
StateLife | State of the Offer | StateLifeCycle |
Links | Useful links concerning the Offer | See below. |
Note : Amounts are set without currency because currency is set at the Segment Level.
Collection of links
Rel | Description |
---|---|
collection-offerfeature | Collection of OfferFeatures related to the Subscription. See OfferFeature. |
collection-subscription | Collection of Subscriptions related to the Offer. See Subscription. |
related-simulation | See Compute an Offer Pricing. |
hosted-subscribe | Link to the page where the Customer should be redirect to subscribe. |
Create an Offer
Definition
POST https://via.proabono.com/Sub/Offers
Example Request
POST https://via.proabono.com/Sub/Offers
{
"IdBusiness": 2,
"ReferenceSegment": "sandbox-eur",
"Name": "Premium",
"DurationTrial":30,
"UnitTrial":"Day",
"AmountRecurrence": 99,
"DurationRecurrence": 1,
"UnitRecurrence": "Month"
}
Example Response
{
"Id": 2831,
"IdSegment": 44,
"DateUpdate": "2023-04-27T13:18:22.29Z",
"IdUserUpdate": 69719,
"DateCreation": "2023-04-27T13:18:22.29Z",
"IdUserCreation": 69719,
"StateLife": "Ok",
"ReferenceOffer": "665ab615-f323-4edf-a047-990b8f7873ae",
"Name": "Premium",
"Order": 1,
"IsVisible": true,
"DurationTrial": 30,
"UnitTrial": "Day",
"AmountRecurrence": 99,
"DurationRecurrence": 1,
"UnitRecurrence": "Month",
"Features": [],
"Links": [
{
"rel": "self",
"href": "/Sub/Offers/2831"
},
{
"rel": "collection-offerfeature",
"href": "/Sub/OfferFeatures?idOffer=2831"
},
{
"rel": "collection-subscription",
"href": "/Sub/Subscriptions?idOffer=2831"
},
{
"rel": "related-simulation",
"href": "/Sub/Offers/2831/Simulation"
},
{
"rel": "hosted-subscribe",
"href": "https://sandbox-eur.proabono.com/subscribe?refo=665ab615-f323-4edf-a047-990b8f7873ae"
}
]
}
Create/Declare an offer in ProAbono.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
ReferenceSegment | (Yes, only if you need/have more than 1 segment) | Reference of the segment in which the offer will be created. | String |
Name | No | Name of the Offer | String |
ReferenceOffer | No | Shared Key of the Offer between ProAbono and your application (Often used for accounting purposes) | String |
IsVisible | No | Visibility of the offer in the hosted pages | Boolean |
Order | No | Define the position of the Offer among all Offers when displayed in the hosted Offer Pages. By Default, it sets at the last position. | Integer |
AmountUpFront | No | Amount of the Upfront fee, Setup fee or Initial fee of your offer in cents | Integer |
AmountTrial | No | Amount of the Trial period in cents | Integer |
DurationTrial | No | Number of Trial Time Unit | Integer |
UnitTrial | No | Time Unit of Trial | TimeUnit |
AmountRecurrence | Yes | Amount of each recurrence in cents | Integer |
DurationRecurrence | Yes | Number of Recurrence Time Unit | Integer |
UnitRecurrence | Yes | Time Unit of Recurrence | TimeUnit |
CountRecurrences | No | Number of Recurrences | Integer |
CountMinRecurrences | No | Minimum recurrences the customer will be committed to pay | Integer |
AmountTermination | No | Amount of the Termination Fee in cents | Integer |
Returns
- HTTP 201 in case of a success. Reponse body contains the created resource.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Retrieve an Offer
Definition
GET https://via.proabono.com/Sub/Offers/{Id}
Example Request
GET https://via.proabono.com/Sub/Offers/152867
Example Response
{
"Id": 2831,
"IdSegment": 44,
"DateUpdate": "2023-04-27T13:18:22.29Z",
"IdUserUpdate": 69719,
"DateCreation": "2023-04-27T13:18:22.29Z",
"IdUserCreation": 69719,
"StateLife": "Ok",
"ReferenceOffer": "665ab615-f323-4edf-a047-990b8f7873ae",
"Name": "Premium",
"Order": 1,
"IsVisible": true,
"DurationTrial": 30,
"UnitTrial": "Day",
"AmountRecurrence": 99,
"DurationRecurrence": 1,
"UnitRecurrence": "Month",
"Links": [
{
"rel": "self",
"href": "/Sub/Offers/2831"
},
{
"rel": "collection-offerfeature",
"href": "/Sub/OfferFeatures?idOffer=2831"
},
{
"rel": "collection-subscription",
"href": "/Sub/Subscriptions?idOffer=2831"
},
{
"rel": "related-simulation",
"href": "/Sub/Offers/2831/Simulation"
},
{
"rel": "hosted-subscribe",
"href": "https://sandbox-eur.proabono.com/subscribe?refo=665ab615-f323-4edf-a047-990b8f7873ae"
}
]
}
Retrieve an Offer by id
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the offer to be retrieved. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Update an Offer
Definition
PATCH https://via.proabono.com/Sub/Offers/{Id}
Example Request
PATCH https://via.proabono.com/Sub/Offers/2831
{
"IdBusiness": 2,
"Name": "Premium Pro",
"ReferenceOffer": "premium-pro",
"Order": 1,
"StateLife": "Ok",
"DurationTrial": 3,
"UnitTrial": "Month",
"AmountRecurrence": 199,
"DurationRecurrence": 1,
"UnitRecurrence": "Month"
}
Update your Offer as you want
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | Id of the Offer | Integer |
IdBusiness | Yes | Id of your Business | Integer |
Name | Yes | Name of the Offer | String |
ReferenceOffer | Yes | Shared Key of the Offer between ProAbono and your application (Often used for accounting purposes) | String |
IsVisible | Yes | Visibility of the offer in the hosted pages | Boolean |
Order | Yes | Define the position of the Offer among all Offers when displayed in the hosted Offer Pages | Integer |
StateLife | Yes | State of the Offer | StateLifeCycle |
AmountUpFront | No | Amount of the Upfront fee, Setup fee or Initial fee of your offer in cents | Integer |
AmountTrial | No | Amount of the Trial period in cents | Integer |
DurationTrial | No | Number of Trial Time Unit | Integer |
UnitTrial | No | Time Unit of Trial | TimeUnit |
AmountRecurrence | Yes | Amount of each recurrence in cents | Integer |
DurationRecurrence | Yes | Number of Recurrence Time Unit | Integer |
UnitRecurrence | Yes | Time Unit of Recurrence | TimeUnit |
CountRecurrences | No | Number of Recurrences | Integer |
CountMinRecurrences | No | Minimum recurrences the customer will be committed to pay | Integer |
AmountTermination | No | Amount of the Termination Fee in cents | Integer |
Returns
- HTTP 200 in case of a success.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Compute an Offer Pricing
Definition
GET https://via.proabono.com/Sub/Offers/{IdOffer}/Simulation?IdCustomer={Id}
Example Request
GET https://via.proabono.com/Sub/Offers/152867/Simulation?IdCustomer=123456
Example Response 1 - Offer with free trial
{
"DateGeneration": "2023-09-11T09:32:04.66Z",
"AmountSubtotal": 0,
"AmountTotalDue": 0,
"Details": [
{
"TypeMove": "SubscriptionInitialFee",
"Label": "Trial amount",
"AmountSubtotal": 0,
"AmountTotalDue": 0
}
],
"NextTerm": {
"AmountSubtotal": 9900,
"AmountTotalDue": 11632,
"Details": [
{
"TypeMove": "SubscriptionRecurringAmount",
"Label": "Subscription amount",
"AmountSubtotal": 9900,
"AmountTotalDue": 11632,
"Tax1": {
"IdTaxProfile": 252,
"Label": "Tax1",
"Rate": 1000,
"Amount": 990,
"Type": "Standard"
},
"Tax2": {
"IdTaxProfile": 253,
"Label": "Tax2",
"Rate": 750,
"Amount": 742,
"Type": "Standard"
}
}
]
}
}
Example Response 2 - Offer with paying features
{
"DateGeneration": "2023-09-11T14:00:35.52Z",
"AmountSubtotal": 17200,
"AmountTotalDue": 20209,
"Details": [
{
"TypeMove": "SubscriptionInitialFee",
"Label": "Up-front amount",
"AmountSubtotal": 4900,
"AmountTotalDue": 5757,
"Tax1": {
"IdTaxProfile": 252,
"Label": "Tax1",
"Rate": 1000,
"Amount": 490,
"Type": "Standard"
},
"Tax2": {
"IdTaxProfile": 253,
"Label": "Tax2",
"Rate": 750,
"Amount": 367,
"Type": "Standard"
}
},
{
"TypeMove": "SubscriptionRecurringAmount",
"Label": "Subscription amount",
"AmountSubtotal": 9900,
"AmountTotalDue": 11632,
"Tax1": {
"IdTaxProfile": 252,
"Label": "Tax1",
"Rate": 1000,
"Amount": 990,
"Type": "Standard"
},
"Tax2": {
"IdTaxProfile": 253,
"Label": "Tax2",
"Rate": 750,
"Amount": 742,
"Type": "Standard"
}
},
{
"IdFeature": 239,
"TypeMove": "SubscriptionFeatures",
"Label": "Module A",
"AmountSubtotal": 1000,
"AmountTotalDue": 1175,
"Tax1": {
"IdTaxProfile": 252,
"Label": "Tax1",
"Rate": 1000,
"Amount": 100,
"Type": "Standard"
},
"Tax2": {
"IdTaxProfile": 253,
"Label": "Tax2",
"Rate": 750,
"Amount": 75,
"Type": "Standard"
}
},
{
"IdFeature": 238,
"TypeMove": "SubscriptionFeatures",
"Label": "Users",
"AmountSubtotal": 1400,
"AmountTotalDue": 1645,
"QuantityReal": 3,
"QuantityBilled": 3,
"Tax1": {
"IdTaxProfile": 252,
"Label": "Tax1",
"Rate": 1000,
"Amount": 140,
"Type": "Standard"
},
"Tax2": {
"IdTaxProfile": 253,
"Label": "Tax2",
"Rate": 750,
"Amount": 105,
"Type": "Standard"
}
}
]
}
Compute a pricing estimation based on an Offer and a Customer. ProAbono also applies Taxes if necessary.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdOffer | Yes | The identifier of the Offer to evaluated. | Integer |
Id | Yes | The identifier of the Customer for whom the Offer is evaluated. | Integer |
Example 1 - Offer with free trial
Example 2 - Offer with paying features
Returns
- HTTP 200 in case of a success. Reponse body contains the answer.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Structure of the Global Answer of the Computation
Parameter | Required? | Description | Type |
---|---|---|---|
DateGeneration | Yes | Date of the Computation | Datetime |
AmountSubtotal | Yes | Total Amount in cents without Taxes for the first Term | Integer |
AmountTotalDue | Yes | Total Amount in cents with Taxes for the first Term | Integer |
Details | Yes | Collection of Details of the Offer for the first Term | EvaluatedOfferDetails - See below |
NextTerm | No | Evaluation of the next Term | See below |
Structure of NextTerm
Parameter | Required? | Description | Type |
---|---|---|---|
AmountSubtotal | Yes | Total Amount in cents without Taxes for Next Term | Integer |
AmountTotalDue | Yes | Total Amount in cents with Taxes for the Next Term | Integer |
Details | Yes | Collection of Details of the Offer for the Next Term | EvaluatedOfferDetails - See below |
Structure of a EvaluatedOfferDetails
Parameter | Required? | Description | Type |
---|---|---|---|
IdFeature | Yes if the OfferDetail is related to a Feature | Id of the Feature linked to the OfferDetail. | Integer |
TypeMove | Yes | Type of CustomerMove | TypeMove |
Label | Yes | Label of the Detail of the Offer | String |
AmountSubtotal | Yes | Amount in cents without Taxes | Integer |
AmountTotalDue | Yes | Amount in cents with Taxes | Integer |
QuantityReal | Yes if the OfferDetail is related to a Feature with type Limitation or Consumption |
Quantity of the Feature available for the Customer | Integer |
QuantityBilled | Yes if the OfferDetail is related to a Feature with type Limitation or Consumption |
Quantity of the Feature billed to the Customer | Integer |
Tax1 | No | Details of Tax1 applied for the concerned Customer | EvaluatedOfferDetailsTax - See below |
Tax2 | No | Details of Tax2 applied for the concerned Customer | EvaluatedOfferDetailsTax - See below |
Structure of a EvaluatedOfferDetailsTax
Parameter | Required? | Description | Type |
---|---|---|---|
IdTaxProfile | Yes | Id of the Tax Profile | Integer |
Label | Yes | Label of the Tax | String |
Rate | Yes | Rate of the Tax applied in ‱. Ex 15,6% -> 1560. | Integer |
Amount | Yes | Tax Amount in cents calculated base on the rate of Tax | Integer |
Type | Yes | Type of Tax | TypeTax |
Delete an Offer
Definition
DELETE https://via.proabono.com/Sub/Offers/{Id}
Example Request
DELETE https://via.proabono.com/Sub/Offers/2831
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the offer to be deleted. | Integer |
Returns
- HTTP 200 in case of a success.
- In any other cases, response body contains a single error describing the problem.
List Offers
Definition
GET https://via.proabono.com/Sub/Offers/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/Offers/?IdBusiness=2&SizePage=3
Example Response
{
"Page": 1,
"SizePage": 3,
"Count": 3,
"TotalItems": 15,
"DateGenerated": "2023-04-27T13:54:26.72Z",
"Items": [
{
"Id": 2836,
"IdSegment": 44,
"DateUpdate": "2023-04-27T13:54:01.27Z",
"IdUserUpdate": 69719,
"DateCreation": "2023-04-27T13:54:01.27Z",
"IdUserCreation": 69719,
"StateLife": "Ok",
"ReferenceOffer": "premium",
"Name": "Premium",
"Order": 2,
"IsVisible": true,
"AmountUpFront": 1990,
"AmountRecurrence": 890,
"DurationRecurrence": 3,
"UnitRecurrence": "Month",
"Links": [
{
"rel": "self",
"href": "/Sub/Offers/2836"
}
]
},
{
"Id": 2835,
"IdSegment": 44,
"DateUpdate": "2023-04-27T13:53:06.17Z",
"IdUserUpdate": 69719,
"DateCreation": "2023-04-27T13:53:06.17Z",
"IdUserCreation": 69719,
"StateLife": "Ok",
"ReferenceOffer": "premium-pro",
"Name": "Premium Pro",
"Order": 3,
"IsVisible": true,
"AmountUpFront": 990,
"AmountRecurrence": 199,
"DurationRecurrence": 1,
"UnitRecurrence": "Month",
"Links": [
{
"rel": "self",
"href": "/Sub/Offers/2835"
}
]
},
{
"Id": 2834,
"IdSegment": 44,
"DateUpdate": "2023-04-27T13:51:58.67Z",
"IdUserUpdate": 69719,
"DateCreation": "2023-04-27T13:51:58.67Z",
"IdUserCreation": 69719,
"StateLife": "Ok",
"ReferenceOffer": "starter",
"Name": "Starter",
"Order": 1,
"IsVisible": true,
"DurationTrial": 10,
"UnitTrial": "Day",
"AmountRecurrence": 49,
"DurationRecurrence": 1,
"UnitRecurrence": "Month",
"Links": [
{
"rel": "self",
"href": "/Sub/Offers/2834"
}
]
}
],
"Links": [
{
"rel": "next",
"href": "/Sub/Offers/?SizePage=3&page=2"
}
]
}
Get the collection of Offers (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | List all Offers related to the same Business | Integer |
IdSegment | No | List all Offers related to the same Segment | Integer |
DateCreationMin | No | List all Offers created after the date | Datetime |
DateCreationMax | No | List all Offers created before the date | Datetime |
DateUpdateMin | No | List all Offers update after the date | Datetime |
DateUpdateMax | No | List all Offers updated before the date | Datetime |
ReferenceOffer | No | List of 1 Offer if the reference is related to a known Offer | String |
IsVisible | No | List all Offers with a specific IsVisible | Boolean |
Name | No | List all Offers related to the same Name or a portion of the Name | String |
StateLife | List all Offers with a specific StateLife | StateLifeCycle |
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Sub/Offers/?IdBusiness=2&StateLife=Ok&IsVisible=true&DateUpdateMin=2023-04-27T13:54:00
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
Add a Feature to an Offer
Definition
POST https://via.proabono.com/Sub/OfferFeatures
Example Request
POST https://via.proabono.com/Sub/OfferFeatures
{
"IdBusiness": 2,
"IdOffer": 2958,
"IdFeature": 1031
}
Example Response
{
"Id": 3550,
"IdSegment": 44,
"DateUpdate": "2023-05-13T23:52:33.20Z",
"IdUserUpdate": 69719,
"IdOffer": 2958,
"IdFeature": 1031,
"Links": [
{
"rel": "self",
"href": "/Sub/OfferFeatures/3550"
},
{
"rel": "related-offer",
"href": "/Sub/Offers/2958"
}
]
}
Declare/Group/Link a feature to an offer in ProAbono.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdOffer | Yes | Id of the Offer | Integer |
IdFeature | Yes | Id of the Feature | Integer |
QuantityIncluded | Quantity of the Feature | Integer |
API Backoffice - Features
Features stand for Features of your Offers and Site/Service/Application.
Feature Resource
Property | Description | Type |
---|---|---|
Id | Id of the Feature Object | Integer |
ReferenceFeature | Shared Key of the Feature between ProAbono and your application | String |
Name | Name of the Feature | String |
TypeFeature | Type of the Feature (OnOff, Limitation, Consumption) | TypeFeature |
IsVisible | Visibility of the Feature in offers and hosted pages | Boolean |
Order | Define the position of the Feature among all Features when displayed in offers and hosted pages | Integer |
StateLife | State of the Feature | StateLifeCycle |
Links | Useful links concerning the Feature | - |
Create a Feature
Definition
POST https://via.proabono.com/Organization/Features
Example Request
POST https://via.proabono.com/Organization/Features
{
"IdBusiness": 2,
"ReferenceFeature": "users",
"Name": "Active Users",
"TypeFeature": "Limitation",
"IsVisible": true,
"Order": 5
}
Example Response
{
"Id": 152867,
"DateUpdate": "2023-04-22T18:56:03.92Z",
"IdUserUpdate": 69719,
"IdUserCreation": 69719,
"DateCreation": "2023-04-22T18:56:03.92Z",
"StateLife": "Ok",
"IdBusiness": 2,
"ReferenceFeature": "users",
"Name": "Active Users",
"Order": 5,
"IsVisible": true,
"TypeFeature": "Limitation",
"Links": [
{
"rel": "self",
"href": "/Organization/Features/152868"
}
]
}
Create/Declare a feature in ProAbono.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
Name | Yes | Name of the Feature | String |
ReferenceFeature | No | Reference of the Feature shared with your application and ProAbono. | String |
TypeFeature | Yes | Type of the Feature (OnOff, Limitation, Consumption) | TypeFeature |
Order | No | Define the position of the Feature among all Features when displayed in offers and hosted pages. By Default, it sets at the last position. | Integer |
IsVisible | No | Visibility of the Feature in offers and hosted pages. By Default, it sets to true. | Boolean |
Returns
- HTTP 201 in case of a success. Reponse body contains the created resource.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Retrieve a Feature
Definition
GET https://via.proabono.com/Organization/Features/{Id}
Example Request
GET https://via.proabono.com/Organization/Features/152867
Example Response
{
"Id": 152867,
"DateUpdate": "2023-04-22T17:54:03.92Z",
"IdUserUpdate": 69719,
"IdUserCreation": 69719,
"DateCreation": "2023-04-22T17:54:03.92Z",
"StateLife": "Ok",
"IdBusiness": 2,
"ReferenceFeature": "users",
"Name": "Active Users",
"Order": 5,
"IsVisible": true,
"TypeFeature": "Limitation",
"Links": [
{
"rel": "self",
"href": "/Organization/Features/152867"
}
]
}
Get a Feature by id
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the feature to be retrieved. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Update a Feature
Definition
PATCH https://via.proabono.com/Organization/Features/{Id}
Example Request
PATCH https://via.proabono.com/Organization/Features/152867
{
"IdBusiness": 2,
"ReferenceFeature": "authorized-users",
"Name": "Authorized Users",
"IsVisible": true,
"Order": 2,
"TypeFeature": "Limitation",
"StateLife": "Ok"
}
Update your Feature's name, visibility , order, life state and its Reference.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | Id of the Feature | Integer |
IdBusiness | Yes | Id of your Business | Integer |
Name | Yes | Name of the Feature | String |
ReferenceFeature | No | Reference of the Feature shared with your application and ProAbono. | String |
TypeFeature | Yes | Type of the Feature (OnOff, Limitation, Consumption) | TypeFeature |
Order | Yes | Define the position of the Feature among all Features when displayed in offers and hosted pages. | Integer |
IsVisible | Yes | Visibility of the Feature in offers and hosted pages. | Boolean |
StateLife | Yes | State of the Feature | StateLifeCycle |
Returns
- HTTP 200 in case of a success.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Delete a Feature
Definition
DELETE https://via.proabono.com/Organization/Features/{Id}
Example Request
DELETE https://via.proabono.com/Organization/Features/152867
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the feature to be deleted. | Integer |
Returns
- HTTP 200 in case of a success.
- In any other cases, response body contains a single error describing the problem.
List Features
Definition
GET https://via.proabono.com/Organization/Features/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Organization/Features/?IdBusiness=2
Example Response
{
"Page": 1,
"SizePage": 25,
"Count": 3,
"TotalItems": 3,
"DateGenerated": "2023-04-24T09:34:18.46Z",
"Items": [
{
"Id": 205708,
"DateUpdate": "2023-04-16T16:04:14.26Z",
"IdUserUpdate": 69719,
"IdUserCreation": 69719,
"DateCreation": "2023-04-16T16:04:14.26Z",
"StateLife": "Ok",
"IdBusiness": 2,
"ReferenceFeature": "authorized-users"
"Name": "Authorized Users",
"Order": 2,
"IsVisible": true,
"TypeFeature": "Limitation",
"Links": [
{
"rel": "self",
"href": "/Organization/Features/205708"
}
]
},
{
"Id": 205707,
"DateUpdate": "2023-04-16T16:04:14.29Z",
"IdUserUpdate": 69719,
"IdUserCreation": 69719,
"DateCreation": "2023-04-16T16:04:14.29Z",
"StateLife": "Ok",
"IdBusiness": 2,
"ReferenceFeature": "8082ab5b-345d-44a1-b0a4-ce0683a7eca3",
"Name": "Export Statistics",
"Order": 1,
"IsVisible": false,
"TypeFeature": "OnOff",
"Links": [
{
"rel": "self",
"href": "/Organization/Features/205707"
}
]
},
{
"Id": 205704,
"DateUpdate": "2023-04-16T11:26:28.61Z",
"IdUserUpdate": 69719,
"IdUserCreation": 69719,
"DateCreation": "2023-04-16T11:26:28.61Z",
"StateLife": "Ok",
"IdBusiness": 2,
"ReferenceFeature": "ceb139b8-9fbb-4739-b498-593767f0ef5f",
"Name": "Notifications",
"Order": 3,
"IsVisible": true,
"TypeFeature": "Consumption",
"Links": [
{
"rel": "self",
"href": "/Organization/Features/205704"
}
]
}
]
}
Get the collection of Features (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | List all Features related to the same Business | Integer |
IdSegment | No | List all Features related to the same Segment | Integer |
DateCreationMin | No | List all Features created after the date | Datetime |
DateCreationMax | No | List all Features created before the date | Datetime |
DateUpdateMin | No | List all Features update after the date | Datetime |
DateUpdateMax | No | List all Features updated before the date | Datetime |
ReferenceFeature | No | List of 1 Feature if the reference is related to a known Feature | String |
IsVisible | No | List all Features with a specific IsVisible | Boolean |
Name | No | List all Features related to the same Name or a portion of the Name | String |
StateLife | No | List all Features with a specific StateLife | StateLifeCycle |
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Organization/Features/?IdBusiness=2&StateLife=Ok&IsVisible=false&DateCreationMin=2023-04-27T13:54:00
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
API Backoffice - PricingTables
PricingTables stand for Pricing Tables, Grid Offers of your Site/Service/Application.
PricingTable Resource
Property | Description | Type |
---|---|---|
Id | Id of the PricingTable Object | Integer |
ReferencePricingTable | Shared Key of the PricingTable between ProAbono and your application | String |
Name | Name of the PricingTable | String |
Order | Define the position of the PricingTable among all PricingTables when displayed in the hosted pages | Integer |
IsVisible | Visibility of the PricingTable in hosted pages | Boolean |
IsDefault | Indicate if the PricingTable is displayed by default in hosted pages | Boolean |
Links | Useful links concerning the PricingTable | - |
Collection of links
Rel | Description |
---|---|
collection-pricingtable-offer | Collection of PricingTableOffers related to the PricingTable. See PricingTable Offers. |
collection-offer | Collection of Offers related to the PricingTable. (Only visible if there is any SubscriptionPeriods.) See Offers. |
hosted-subscribe | Direct link to display the PricingTable with its offers |
Create a PricingTable
Definition
POST https://via.proabono.com/Sub/PricingTables
Example Request
POST https://via.proabono.com/Sub/PricingTables
{
"IdBusiness": 2,
"ReferenceSegment": "sandbox-eur",
"ReferencePricingTable": "yearly",
"Name": "Yearly Offers",
"IsVisible": true,
"Order": 2
}
Example Response
{
"Id": 740,
"DateUpdate": "2023-05-05T09:26:54.10Z",
"IdUserUpdate": 42,
"IdSegment": 3,
"DateCreation": "2023-05-05T09:26:54.10Z",
"IdUserCreation": 42,
"ReferencePricingTable": "yearly",
"Name": "Yearly Offers",
"Order": 2,
"IsVisible": true,
"IsDefault": false,
"Links": [
{
"rel": "self",
"href": "/Sub/PricingTables/740"
},
{
"rel": "collection-pricingtable-offer",
"href": "/Sub/PricingTableOffers?idPricingTable=740"
},
{
"rel": "collection-offer",
"href": "/Sub/Offers?idPricingTable=740"
},
{
"rel": "hosted-subscribe",
"href": "https://sandbox-eur.proabono.com/pricing?refpt=yearly"
}
]
}
Create/Declare a PricingTable in ProAbono.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
ReferenceSegment | Yes | Reference of the segment where the table will be created | String |
Name | No | Name of the PricingTable | String |
ReferencePricingTable | No | Reference of the PricingTable shared with your application and ProAbono. | String |
Order | No | Define the position of the PricingTable among all PricingTables when displayed in hosted pages. By Default, it sets at the last position. | Integer |
IsVisible | No | Visibility of the PricingTable in offers and hosted pages. By Default, it sets to false. | Boolean |
Returns
- HTTP 201 in case of a success. Reponse body contains the created resource.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Retrieve a PricingTable
Definition
GET https://via.proabono.com/Sub/PricingTables/{Id}
Example Request
GET https://via.proabono.com/Sub/PricingTables/740
Example Response
{
"Id": 740,
"DateUpdate": "2023-05-05T09:26:54.10Z",
"IdUserUpdate": 42,
"IdSegment": 3,
"DateCreation": "2023-05-05T09:26:54.10Z",
"IdUserCreation": 42,
"ReferencePricingTable": "yearly",
"Name": "Yearly Offers",
"Order": 2,
"IsVisible": true,
"IsDefault": false,
"Links": [
{
"rel": "self",
"href": "/Sub/PricingTables/740"
},
{
"rel": "collection-pricingtable-offer",
"href": "/Sub/PricingTableOffers?idPricingTable=740"
},
{
"rel": "collection-offer",
"href": "/Sub/Offers?idPricingTable=740"
},
{
"rel": "hosted-subscribe",
"href": "https://sandbox-eur.proabono.com/pricing?refpt=yearly"
}
]
}
Get a PricingTable by id
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the PricingTable to be retrieved. | Integer |
IdBusiness | Yes | Id of your Business | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Update a PricingTable
Definition
PATCH https://via.proabono.com/Sub/PricingTables/{Id}
Example Request
PATCH https://via.proabono.com/Sub/PricingTables/740
{
"IdBusiness": 2,
"ReferencePricingTable": "yearly-special",
"Name": "Special Yearly Offers",
"IsVisible": true,
"Order": 3
}
Update your PricingTable's name, visibility , order and its Reference.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the PricingTable to be retrieved. | Integer |
IdBusiness | Yes | Id of your Business | Integer |
Name | No | Name of the PricingTable | String |
ReferencePricingTable | No | Reference of the PricingTable shared with your application and ProAbono. | String |
Order | No | Define the position of the PricingTable among all PricingTables when displayed in hosted pages. By Default, it sets at the last position. | Integer |
IsVisible | No | Visibility of the PricingTable in offers and hosted pages. By Default, it sets to false. | Boolean |
Returns
- HTTP 200 in case of a success.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Delete a PricingTable
Definition
DELETE https://via.proabono.com/Sub/PricingTables/{Id}
Example Request
DELETE https://via.proabono.com/Sub/PricingTables/740
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the PricingTable to be deleted. | Integer |
IdBusiness | Yes | Id of your Business | Integer |
Returns
- HTTP 200 in case of a success.
- In any other cases, response body contains a single error describing the problem.
List PricingTables
Definition
GET https://via.proabono.com/Sub/PricingTables/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/PricingTables/?IdBusiness=2
Example Response
{
"Page": 1,
"SizePage": 10,
"Count": 3,
"TotalItems": 3,
"DateGenerated": "2023-05-05T09:36:59.43Z",
"Items": [
{
"Id": 740,
"DateUpdate": "2023-05-05T09:26:54.10Z",
"IdUserUpdate": 52,
"IdSegment": 3,
"DateCreation": "2023-05-05T09:26:54.10Z",
"IdUserCreation": 52,
"ReferencePricingTable": "yearly",
"Name": "Yearly Offers",
"Order": 2,
"IsVisible": true,
"IsDefault": false,
"Links": [
{
"rel": "self",
"href": "/Sub/PricingTables/740"
}
]
},
{
"Id": 427,
"DateUpdate": "2023-09-23T12:30:24.21Z",
"IdUserUpdate": 11,
"IdSegment": 3,
"DateCreation": "2023-09-23T12:28:59.30Z",
"IdUserCreation": 11,
"ReferencePricingTable": "special-table",
"Name": "Special Offers",
"Order": 2,
"IsVisible": false,
"IsDefault": false,
"Links": [
{
"rel": "self",
"href": "/Sub/PricingTables/427"
}
]
},
{
"Id": 2,
"DateUpdate": "2023-09-20T09:03:16.88Z",
"IdUserUpdate": 1,
"IdSegment": 3,
"DateCreation": "2023-09-20T09:03:16.88Z",
"IdUserCreation": 1,
"ReferencePricingTable": "default",
"Name": "Monthly Offers",
"Order": 1,
"IsVisible": true,
"IsDefault": true,
"Links": [
{
"rel": "self",
"href": "/Sub/PricingTables/2"
}
]
}
]
}
Get the collection of PricingTables (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdSegment | No | List all PricingTables related to the same Segment | Integer |
DateCreationMin | No | List all PricingTables created after the date | Datetime |
DateCreationMax | No | List all PricingTables created before the date | Datetime |
DateUpdateMin | No | List all PricingTables update after the date | Datetime |
DateUpdateMax | No | List all PricingTables updated before the date | Datetime |
ReferencePricingTable | No | List of 1 PricingTable if the reference is related to a known PricingTable | String |
IsVisible | No | List all PricingTables with a specific IsVisible | Boolean |
Name | No | List all PricingTables related to the same Name or a portion of the Name | String |
ReferenceSegment | No | List all PricingTables related to the same Segment | String |
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Sub/PricingTables/?IdBusiness=2&IsVisible=false&DateCreationMin=2023-04-27T13:54:00
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
API Backoffice - PricingTable Offers
A PricingTableOffer describes the relationship of Offer and a PricingTable.
PricingTableOffer Resource
Property | Description | Type |
---|---|---|
Id | Id of the PricingTableOffer Object | Integer |
IdPricingTable | Id of the PricingTable related to the PricingTableOffer | Integer |
IdOffer | Id of the Offer related to the PricingTableOffer | Integer |
Order | Define the position of the Offer among all Offers in the PricingTable when displayed in the hosted pages | Integer |
Links | Useful links concerning the PricingTableOffer | -- |
Create a PricingTableOffer
Definition
POST https://via.proabono.com/Sub/PricingTableOffers
Example Request
POST https://via.proabono.com/Sub/PricingTableOffers
{
"IdBusiness": 2,
"ReferenceSegment": "sandbox-eur",
"IdPricingTable": 2,
"IdOffer": 2793,
"Order": 3
}
Example Response
{
"Id": 2364,
"DateUpdate": "2023-04-24T09:28:57.04Z",
"IdUserUpdate": 11,
"IdPricingTable": 2,
"IdOffer": 2793,
"Order": 3,
"Links": [
{
"rel": "self",
"href": "/Sub/PricingTableOffers/2"
}
]
}
Create/Declare a PricingTableOffer in ProAbono.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
ReferenceSegment | Yes | Reference of the segment where the table will be created | String |
IdPricingTable | Yes | Id of the PricingTable related to the PricingTableOffer | Integer |
IdOffer | Yes | Id of the Offer related to the PricingTableOffer | Integer |
Order | No | Define the position of the Offer among all Offers in the PricingTable when displayed in hosted pages. By Default, it sets at the last position. | Integer |
Returns
- HTTP 201 in case of a success. Reponse body contains the created resource.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Retrieve a PricingTableOffer
Definition
GET https://via.proabono.com/Sub/PricingTableOffers/{Id}
Example Request
GET https://via.proabono.com/Sub/PricingTableOffers/2364
Example Response
{
"Id": 2364,
"DateUpdate": "2023-04-24T09:28:57.04Z",
"IdUserUpdate": 11,
"IdPricingTable": 2,
"IdOffer": 2793,
"Order": 3,
"Links": [
{
"rel": "self",
"href": "/Sub/PricingTableOffers/2"
}
]
}
Retrieve a PricingTableOffer by id.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the PricingTableOffer to be retrieved. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Update a PricingTable Offer
Definition
PATCH https://via.proabono.com/Sub/PricingTableOffers/{Id}
Example Request
PATCH https://via.proabono.com/Sub/PricingTableOffers/2364
{
"IdBusiness": 2,
"IdPricingTable": 2,
"IdOffer": 2793,
"Order": 2
}
Update your PricingTableOffer as you want.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | Id of the PricingTableOffer | Integer |
IdBusiness | Yes | Id of your Business | Integer |
IdPricingTable | No | Id of the PricingTable related to the PricingTableOffer | Integer |
IdOffer | No | Id of the Offer related to the PricingTableOffer | Integer |
Order | No | Define the position of the Offer among all Offers in the PricingTable when displayed in hosted pages. By Default, it sets at the last position. | Integer |
Returns
- HTTP 200 in case of a success.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Delete a PricingTableOffer
Definition
DELETE https://via.proabono.com/Sub/PricingTableOffers/{Id}
Example Request
DELETE https://via.proabono.com/Sub/PricingTableOffers/2364
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the PricingTableOffer to be deleted. | Integer |
IdBusiness | Yes | Id of your Business | Integer |
Returns
- HTTP 200 in case of a success.
- In any other cases, response body contains a single error describing the problem.
List PricingTableOffers
Definition
GET https://via.proabono.com/Sub/PricingTableOffers/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/PricingTableOffers/?IdBusiness=2&IdPricingTable=2
Example Response
{
"Page": 1,
"SizePage": 10,
"Count": 3,
"TotalItems": 3,
"DateGenerated": "2023-05-05T11:48:18.12Z",
"Items": [
{
"Id": 2371,
"DateUpdate": "2023-04-26T09:37:28.33Z",
"IdUserUpdate": 11,
"IdPricingTable": 2,
"IdOffer": 2800,
"Order": 3,
"Links": [
{
"rel": "self",
"href": "/Sub/PricingTableOffers/2371"
}
]
},
{
"Id": 2364,
"DateUpdate": "2023-04-24T09:28:57.04Z",
"IdUserUpdate": 11,
"IdPricingTable": 2,
"IdOffer": 2793,
"Order": 2,
"Links": [
{
"rel": "self",
"href": "/Sub/PricingTableOffers/2364"
}
]
},
{
"Id": 2348,
"DateUpdate": "2023-04-19T10:35:33.35Z",
"IdUserUpdate": 11,
"IdPricingTable": 2,
"IdOffer": 2777,
"Order": 1,
"Links": [
{
"rel": "self",
"href": "/Sub/PricingTableOffers/2348"
}
]
}
]
}
Get the collection of PricingTableOffers (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdSegment | No | Id of one of your Segment | Integer |
DateUpdateMin | No | List all PricingTableOffers updated/created after the date | Datetime |
DateUpdateMax | No | List all PricingTableOffers updated/created before the date | Datetime |
IdPricingTable | No | List all PricingTableOffers for a given PricingTable | Integer |
IdOffer | No | List all PricingTableOffers for a given Offer | Integer |
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Sub/PricingTableOffers/?IdBusiness=2&IdOffer=238&DateUpdateMin=2023-08-27T13:54:00
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
API Backoffice - Subscriptions
Subscriptions describe the conditions of the relationship between your Customer and your Site/Service/Application.
Subscription Resource
Property | Description | Type |
---|---|---|
Id | Id of the Subscription Object | Integer |
IdOffer | Id of the Offer subscribed by the Customer IdCustomer | Integer |
IdCustomer | Id of the Customer who owns this Subscription | Integer |
IdCustomerBuyer | Id of the Customer who buys this Subscription | Integer |
Name | Name of the Subscription | String |
TitleLocalized | Title of the Subscription in the language of the Customer | String |
DescriptionLocalized | Description of the Subscription in the language of the Customer | String |
Language | Language of the Subscription | String Language |
DateStart | Date when the Subscription started | Integer |
AmountUpFront | Amount of the Upfront fee, Setup fee or Initial fee of the Subscription in cents | Integer |
AmountTrial | Amount of the Trial period in cents | Integer |
DurationTrial | Number of Trial Time Unit | Integer |
UnitTrial | Time Unit of Trial | TimeUnit |
AmountRecurrence | Amount of each recurrence in cents | Integer |
DurationRecurrence | Number of Recurrence Time Unit | Integer |
UnitRecurrence | Time Unit of Recurrence | TimeUnit |
CountRecurrences | Number of Recurrences | Integer |
CountMinRecurrences | Minimum recurrences the customer committed to pay | Integer |
AmountTermination | Amount of the Termination Fee in cents | Integer |
StateSubscription | Technical State of the Subscription | StateSubscription |
Status | Functional State of the Subscription | Status |
Metadata | A set of key/value pairs that you can add to a subscription | Metadata |
Links | Useful links concerning the Subscription | See below. |
Note : Amounts are set without currency because currency is set at the Segment Level.
Collection of links
Rel | Description |
---|---|
related-offer | Offer related to the Subscription |
related-customer | Customer which benefits of the Subscription |
related-customerbuyer | Customer who pays the Subscription |
collection-subscriptionfeature | Collection of SubscriptionFeatures related to the Subscription. See SubscriptionFeature. |
collection-subscriptionperiod | Collection of SubscriptionPeriods related to the Subscription. (Only visible if there is any SubscriptionPeriods.) See Subscription Periods. |
related-quote | See Compute a Subscription Pricing. |
hosted-subscribe | Unique encrypted link to conclude and pay the Subscription for the concerned Customer. |
hosted-related-subscription | Unique encrypted link to the detailed page of the Subscription for the concerned Customer. |
Create a Subscription
Definition
POST https://via.proabono.com/Sub/Subscriptions
Example Request
POST https://via.proabono.com/Sub/Subscriptions
{
"IdBusiness": 2,
"IdOffer": 308,
"IdCustomer": 342896
}
Example Response
{
"Id": 149747,
"IdSegment": 3,
"DateUpdate": "2023-05-11T15:11:04.23Z",
"IdUserUpdate": 69719,
"DateCreation": "2023-05-11T15:11:04.23Z",
"IdUserCreation": 69719,
"StateSubscription": "DraftAgent",
"Status": "Draft",
"IdOffer": 308,
"IdCustomer": 342896,
"IdCustomerBuyer": 342896,
"Name": "Subscription 25",
"Language": "en",
"TitleLocalized": "Premium offer",
"AmountRecurrence": 4900,
"DurationRecurrence": 1,
"UnitRecurrence": "Month",
"CountRecurrences": 1,
"Links": [
{
"rel": "self",
"href": "/Sub/Subscriptions/149747"
},
{
"rel": "related-offer",
"href": "/Sub/Offers/308"
},
{
"rel": "related-customer",
"href": "/Distribution/Customers/342896"
},
{
"rel": "related-customerbuyer",
"href": "/Distribution/Customers/342896"
},
{
"rel": "collection-subscriptionfeature",
"href": "/Sub/SubscriptionFeatures?idSubscription=149747"
},
{
"rel": "collection-subscriptionperiod",
"href": "/Sub/SubscriptionPeriods?idSubscription=149747"
},
{
"rel": "hosted-related-subscription",
"href": "https://sandbox-eur.proabono.com/subscription/{Unique-Enrypted-Url}"
}
]
}
Create a subscription in ProAbono.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdOffer | Yes | Id of the Offer the Customer wants to subscribe | Integer |
IdCustomer | Yes | Id of the Customer who wants to subscribe the Offer IdOffer | Integer |
IdCustomerBuyer | No | Id of the Customer who buys this Subscription. By default, IdCustomerBuyer = IdCustomer. | Integer |
Name | No | Name of the Subscription | String |
TitleLocalized | No | Title of the Subscription in the language of the Customer | String |
DescriptionLocalized | No | Description of the Subscription in the language of the Customer | String |
Language | No | Language of the Subscription | String Language |
AmountUpFront | No | Amount of the Upfront fee, Setup fee or Initial fee of your offer in cents | Integer |
AmountTrial | No | Amount of the Trial period in cents | Integer |
DurationTrial | No | Number of Trial Time Unit | Integer |
UnitTrial | No | Time Unit of Trial | TimeUnit |
AmountRecurrence | No | Amount of each recurrence in cents | Integer |
DurationRecurrence | No | Number of Recurrence Time Unit | Integer |
UnitRecurrence | No | Time Unit of Recurrence | TimeUnit |
CountRecurrences | No | Number of Recurrences | Integer |
CountMinRecurrences | No | Minimum recurrences the customer will be committed to pay | Integer |
AmountTermination | No | Amount of the Termination Fee in cents | Integer |
Metadata | No | A set of key/value pairs that you can add to a subscription. Useful for storing additional information about the subscription in a structured format. | Metadata |
Returns
- HTTP 201 in case of a success. Reponse body contains the created resource.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Retrieve a Subscription
Definition
GET https://via.proabono.com/Sub/Subscriptions/{Id}
Example Request
GET https://via.proabono.com/Sub/Subscriptions/90285
Example Response
{
"Id": 90285,
"IdSegment": 3,
"DateUpdate": "2023-04-09T00:40:00.00Z",
"IdUserUpdate": 3,
"DateCreation": "2023-01-09T10:58:00.00Z",
"IdUserCreation": 69719,
"StateSubscription": "ActiveRunning",
"Status": "Active",
"IdOffer": 2344,
"IdCustomer": 80269,
"IdCustomerBuyer": 80269,
"Name": "Subscription 10",
"Language": "fr",
"TitleLocalized": "Premium Offer",
"DescriptionLocalized": "Most Popular Offer!",
"DateStart": "2023-01-09T00:00:00.00Z",
"AmountRecurrence": 49700,
"DurationRecurrence": 1,
"UnitRecurrence": "Month",
"Links": [
{
"rel": "related-offer",
"href": "/Sub/Offers/2344"
},
{
"rel": "related-customer",
"href": "/Distribution/Customers/80269"
},
{
"rel": "related-customerbuyer",
"href": "/Distribution/Customers/64959"
},
{
"rel": "collection-subscriptionfeature",
"href": "/Sub/SubscriptionFeatures?idSubscription=90285"
},
{
"rel": "collection-subscriptionperiod",
"href": "/Sub/SubscriptionPeriods?idSubscription=90285"
},
{
"rel": "hosted-related-subscription",
"href": "https://sandbox-eur.proabono.com/subscription/{Unique-Enrypted-Url}"
}
]
}
Retrieve a subscription by id
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the Subscription to be retrieved. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Update a Subscription
Definition
PATCH https://via.proabono.com/Sub/Subscriptions/{Id}
Example Request
PATCH https://via.proabono.com/Sub/Subscriptions/2831
{
"IdBusiness": 2,
"Name": "Premium Pro",
"TitleLocalized": "Premium Pro Offer",
"DescriptionLocalized": "Sales ! $349/month instead of $497/month",
"AmountRecurrence": 69700,
"DurationRecurrence": 3,
"UnitRecurrence": "Month",
"Language": "fr",
}
Update your Subscription as you want.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | Id of the Subscription | Integer |
IdBusiness | Yes | Id of your Business | Integer |
Name | Yes | Name of the Subscription | String |
TitleLocalized | Yes | Title of the Subscription in the language of the Customer | String |
DescriptionLocalized | No | Description of the Subscription in the language of the Customer | String |
IdOffer | No | Id of the Offer related to the Subscription | Integer |
StateSubscription | Yes | State of the Subscription | StateSubscription |
Language | Yes | Language of the Subscription | String Language |
AmountUpFront | No | Amount of the Upfront fee, Setup fee or Initial fee of your subscription in cents | Integer |
AmountTrial | No | Amount of the Trial period in cents | Integer |
DurationTrial | No | Number of Trial Time Unit | Integer |
UnitTrial | No | Time Unit of Trial | TimeUnit |
AmountRecurrence | Yes | Amount of each recurrence in cents | Integer |
DurationRecurrence | Yes | Number of Recurrence Time Unit | Integer |
UnitRecurrence | Yes | Time Unit of Recurrence | TimeUnit |
CountRecurrences | No | Number of Recurrences | Integer |
CountMinRecurrences | No | Minimum recurrences the customer committed to pay | Integer |
AmountTermination | No | Amount of the Termination Fee in cents | Integer |
Returns
- HTTP 200 in case of a success.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Compute a Subscription Pricing
Definition
GET https://via.proabono.com/Sub/Subscriptions/{Id}/Quote
Example Request
GET https://via.proabono.com/Sub/Subscriptions/644/Quote
Example Response 1 - Subscription with free trial
{
"DateGeneration": "2023-09-12T17:34:42.10Z",
"IdSubscription": 644,
"AmountSubtotal": 0,
"AmountTotal": 0,
"Details": [
{
"IdSubscription": 644,
"TypeMove": "SubscriptionInitialFee",
"Label": "Trial amount",
"AmountSubtotal": 0,
"AmountTotal": 0
}
],
"NextTerm": {
"IdSubscription": 644,
"AmountSubtotal": 9900,
"AmountTotal": 11632,
"Details": [
{
"IdSubscription": 644,
"TypeMove": "SubscriptionRecurringAmount",
"Label": "Subscription amount",
"AmountSubtotal": 9900,
"AmountTotal": 11632,
"Tax1": {
"IdTaxProfile": 252,
"Label": "Tax1",
"Rate": 1000,
"Amount": 990,
"Type": "Outside"
},
"Tax2": {
"IdTaxProfile": 253,
"Label": "Tax2",
"Rate": 750,
"Amount": 742,
"Type": "Outside"
}
}
]
}
}
Example Response 2 - Subscription with paying features
{
"DateGeneration": "2023-09-12T17:35:12.20Z",
"IdSubscription": 645,
"AmountSubtotal": 17200,
"AmountTotal": 20209,
"Details": [
{
"IdSubscription": 645,
"TypeMove": "SubscriptionInitialFee",
"Label": "Up-front amount",
"AmountSubtotal": 4900,
"AmountTotal": 5757,
"Tax1": {
"IdTaxProfile": 252,
"Label": "Tax1",
"Rate": 1000,
"Amount": 490,
"Type": "Outside"
},
"Tax2": {
"IdTaxProfile": 253,
"Label": "Tax2",
"Rate": 750,
"Amount": 367,
"Type": "Outside"
}
},
{
"IdSubscription": 645,
"TypeMove": "SubscriptionRecurringAmount",
"Label": "Subscription amount",
"AmountSubtotal": 9900,
"AmountTotal": 11632,
"Tax1": {
"IdTaxProfile": 252,
"Label": "Tax1",
"Rate": 1000,
"Amount": 990,
"Type": "Outside"
},
"Tax2": {
"IdTaxProfile": 253,
"Label": "Tax2",
"Rate": 750,
"Amount": 742,
"Type": "Outside"
}
},
{
"IdSubscription": 645,
"IdFeature": 239,
"TypeMove": "SubscriptionFeatures",
"Label": "Module A",
"AmountSubtotal": 1000,
"AmountTotal": 1175,
"Tax1": {
"IdTaxProfile": 252,
"Label": "Tax1",
"Rate": 1000,
"Amount": 100,
"Type": "Outside"
},
"Tax2": {
"IdTaxProfile": 253,
"Label": "Tax2",
"Rate": 750,
"Amount": 75,
"Type": "Outside"
}
},
{
"IdSubscription": 645,
"IdFeature": 238,
"TypeMove": "SubscriptionFeatures",
"Label": "Users",
"AmountSubtotal": 1400,
"AmountTotal": 1645,
"QuantityReal": 3,
"QuantityBilled": 3,
"Tax1": {
"IdTaxProfile": 252,
"Label": "Tax1",
"Rate": 1000,
"Amount": 140,
"Type": "Outside"
},
"Tax2": {
"IdTaxProfile": 253,
"Label": "Tax2",
"Rate": 750,
"Amount": 105,
"Type": "Outside"
}
}
]
}
Compute a pricing estimation of the Subscription based on the Offer, the Subscription overrides and the Customer. ProAbono also applies Taxes if necessary.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the Subscription. | Integer |
Example 1 - Subscription with free trial
Example 2 - Subscription with paying features
Returns
- HTTP 200 in case of a success. Reponse body contains the answer.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Structure of the Global Answer of the Computation
Parameter | Required? | Description | Type |
---|---|---|---|
DateGeneration | Yes | Date of the Computation | Datetime |
IdSubscription | Yes | Id of the Subscription evaluated | Integer |
AmountSubtotal | Yes | Total Amount in cents without Taxes for the first Term | Integer |
AmountTotal | Yes | Total Amount in cents with Taxes for the first Term | Integer |
Details | Yes | Collection of Details of the Subscription for the first Term | EvaluatedSubscriptionDetails - See below |
NextTerm | No | Evaluation of the next Term | See below |
Structure of NextTerm
Parameter | Required? | Description | Type |
---|---|---|---|
IdSubscription | Yes | Id of the Subscription evaluated | Integer |
AmountSubtotal | Yes | Total Amount in cents without Taxes for Next Term | Integer |
AmountTotal | Yes | Total Amount in cents with Taxes for the Next Term | Integer |
Details | Yes | Collection of Details of the Subscription for the Next Term | EvaluatedSubscriptionDetails - See below |
Structure of a EvaluatedSubscriptionDetails
Parameter | Required? | Description | Type |
---|---|---|---|
IdSubscription | Yes | Id of the Subscription evaluated | Integer |
IdFeature | Yes if the SubscriptionDetail is related to a Feature | Id of the Feature linked to the SubscriptionDetail. | Integer |
TypeMove | Yes | Type of CustomerMove | TypeMove |
Label | Yes | Label of the Detail of the Subscription | String |
AmountSubtotal | Yes | Amount in cents without Taxes | Integer |
AmountTotal | Yes | Amount in cents with Taxes | Integer |
QuantityReal | Yes if the SubscriptionDetail is related to a Feature with type Limitation or Consumption |
Quantity of the Feature available for the Customer | Integer |
QuantityBilled | Yes if the SubscriptionDetail is related to a Feature with type Limitation or Consumption |
Quantity of the Feature billed to the Customer | Integer |
Tax1 | No | Details of Tax1 applied for the concerned Customer | EvaluatedSubscriptionDetailsTax - See below |
Tax2 | No | Details of Tax2 applied for the concerned Customer | EvaluatedSubscriptionDetailsTax - See below |
Structure of a EvaluatedSubscriptionDetailsTax
Parameter | Required? | Description | Type |
---|---|---|---|
IdTaxProfile | Yes | Id of the Tax Profile | Integer |
Label | Yes | Label of the Tax | String |
Rate | Yes | Rate of the Tax applied in ‱. Ex 15,6% -> 1560. | Integer |
Amount | Yes | Tax Amount in cents calculated base on the rate of Tax | Integer |
Type | Yes | Type of Tax | TypeTax |
List Subscriptions
Definition
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/Subscriptions/?IdBusiness=2&SizePage=3
Example Response
{
"Page": 1,
"SizePage": 3,
"Count": 3,
"TotalItems": 15,
"DateGenerated": "2023-04-27T13:54:26.72Z",
"Items": [
{
"Id": 90285,
"IdSegment": 44,
"DateUpdate": "2023-04-09T00:40:00.00Z",
"IdUserUpdate": 3,
"DateCreation": "2023-01-09T10:58:00.00Z",
"IdUserCreation": 69719,
"StateSubscription": "ActiveRunning",
"Status": "Active",
"IdOffer": 2344,
"IdCustomer": 80269,
"IdCustomerBuyer": 80269,
"Name": "Subscription 13",
"Language": "fr",
"TitleLocalized": "Premium Offer",
"DescriptionLocalized": "Most Popular Offer!",
"DateStart": "2023-01-09T00:00:00.00Z",
"AmountRecurrence": 49700,
"DurationRecurrence": 1,
"UnitRecurrence": "Month",
"Links": [
{
"rel": "self",
"href": "/Sub/Subscriptions/90285"
}
]
},
{
"Id": 91456,
"IdSegment": 44,
"DateUpdate": "2023-04-09T00:42:00.00Z",
"IdUserUpdate": 3,
"DateCreation": "2023-01-09T10:59:00.00Z",
"IdUserCreation": 69719,
"StateSubscription": "ActiveDelayedTermination",
"Status": "Active",
"IdOffer": 2344,
"IdCustomer": 78654,
"IdCustomerBuyer": 78654,
"Name": "Subscription 14",
"Language": "fr",
"TitleLocalized": "Premium Offer",
"DescriptionLocalized": "Most Popular Offer!",
"DateStart": "2023-01-09T00:00:00.00Z",
"AmountRecurrence": 49700,
"DurationRecurrence": 1,
"UnitRecurrence": "Month",
"Links": [
{
"rel": "self",
"href": "/Sub/Subscriptions/91456"
}
]
},
{
"Id": 65487,
"IdSegment": 44,
"DateUpdate": "2023-04-09T00:52:00.00Z",
"IdUserUpdate": 3,
"DateCreation": "2023-01-09T11:12:00.00Z",
"IdUserCreation": 69719,
"StateSubscription": "ActiveDelayedUpgrade",
"Status": "Active",
"IdOffer": 2344,
"IdCustomer": 34512,
"IdCustomerBuyer": 34512,
"Name": "Subscription 12",
"Language": "fr",
"TitleLocalized": "Premium Offer",
"DescriptionLocalized": "Most Popular Offer!",
"DateStart": "2023-01-09T00:00:00.00Z",
"AmountRecurrence": 49700,
"DurationRecurrence": 1,
"UnitRecurrence": "Month",
"Links": [
{
"rel": "self",
"href": "/Sub/Subscriptions/65487"
}
]
}
],
"Links": [
{
"rel": "next",
"href": "/Sub/Subscriptions/?SizePage=3&page=2"
}
]
}
Get the collection of Subscriptions (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdSegment | No | Id of one of your Segment | Integer |
DateCreationMin | No | List all subscriptions created after the date | Datetime |
DateCreationMax | No | List all subscriptions created before the date | Datetime |
DateUpdateMin | No | List all subscriptions update after the date | Datetime |
DateUpdateMax | No | List all subscriptions updated before the date | Datetime |
IdOffer | No | List all subscriptions related to a known Offer | String |
Name | No | List all subscriptions related to the same Name or a portion of the Name | String |
IdSegment | No | List all subscriptions related to the same Segment | Integer |
DateStartMin | No | List all subscriptions started after the date | Datetime |
DateStartMax | No | List all subscriptions started before the date | Datetime |
StateSubscription | No | List all subscriptions with a specific technical state | StateSubscription |
StateSubscriptionMin | No | List all subscriptions with a given minimum technical state | StateSubscription |
StateSubscriptionMax | No | List all subscriptions with a given maximum technical state | StateSubscription |
StatusSubscription | No | List all subscriptions with a specific functional status | Status |
StatusSubscriptionMin | No | List all subscriptions with a given minimum functional status | Status |
StatusSubscriptionMax | No | List all subscriptions with a given maximum functional status | Status |
ReferenceAffiliation | No | List all subscriptions related to customers with the same ReferenceAffiliation (Reference of the affiliate who brought these customers) | |
IdCustomer | No | List all subscriptions related to a known Customer | String |
IdCustomerBuyer | No | List all subscriptions related to a known Buyer | String |
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Sub/Subscriptions/?IdBusiness=2&StateSubscription=ActiveRunning&dateStartMin=2023-04-27T13:54:00
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
API Backoffice - Subscription Periods
A Subscription Period is a period of time during which your Customer is committed.
Subscription Periods are automatically added when the subscription starts and at each renewal.
Note that the periods for a given subscription cannot overlap.
Subscription Period Resource
Property | Description | Type |
---|---|---|
Id | Id of the Subscription Period Object | Integer |
IdSubscription | Id of the Subscription related to this Subscription Period | Integer |
DateStart | Start Date of the Subscription Period | Datetime |
DateTerm | Term Date (End Date) of the Subscription Period | Datetime |
IsTrial | If false, the Subscription Period is not a Trial Period | Boolean |
Links | Useful links concerning the Subscription Period | -- |
Retrieve a Subscription Period
Definition
GET https://via.proabono.com/Sub/SubscriptionPeriods/{Id}
Example Request
GET https://via.proabono.com/Sub/SubscriptionPeriods/593
Example Response
{
"Id": 593,
"DateUpdate": "2023-08-25T15:55:54.98Z",
"IdUserUpdate": 11,
"DateCreation": "2023-08-25T15:55:54.98Z",
"IdUserCreation": 11,
"IdSubscription": 545,
"DateStart": "2023-08-25T15:55:54.98Z",
"DateTerm": "2023-09-03T15:55:54.98Z",
"IsTrial": true,
"Links": [
{
"rel": "related-subscription",
"href": "/Sub/Subscriptions/545"
}
]
}
Retrieve a Subscription Period by id.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the Subscription Period to be retrieved. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
List Subscription Periods
Definition
GET https://via.proabono.com/Sub/SubscriptionPeriods/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/SubscriptionPeriods/?IdBusiness=2
Example Response
{
"Page": 1,
"SizePage": 10,
"Count": 3,
"TotalItems": 3,
"DateGenerated": "2023-09-13T07:50:27.18Z",
"Items": [
{
"Id": 621,
"DateUpdate": "2023-09-04T06:55:19.85Z",
"IdUserUpdate": 147,
"DateCreation": "2023-09-04T06:55:19.85Z",
"IdUserCreation": 147,
"IdSubscription": 560,
"DateStart": "2023-09-04T06:55:19.85Z",
"DateTerm": "2023-10-04T06:55:19.85Z",
"IsTrial": false,
"Links": [
{
"rel": "self",
"href": "/Sub/SubscriptionPeriods/621"
}
]
},
{
"Id": 596,
"DateUpdate": "2023-08-26T08:43:15.12Z",
"IdUserUpdate": 1097,
"DateCreation": "2023-08-26T08:43:15.12Z",
"IdUserCreation": 1097,
"IdSubscription": 547,
"DateStart": "2023-08-26T08:43:15.12Z",
"DateTerm": "2023-09-26T08:43:15.12Z",
"IsTrial": false,
"Links": [
{
"rel": "self",
"href": "/Sub/SubscriptionPeriods/596"
}
]
},
{
"Id": 593,
"DateUpdate": "2023-08-25T15:55:54.98Z",
"IdUserUpdate": 11,
"DateCreation": "2023-08-25T15:55:54.98Z",
"IdUserCreation": 11,
"IdSubscription": 545,
"DateStart": "2023-08-25T15:55:54.98Z",
"DateTerm": "2023-09-03T15:55:54.98Z",
"IsTrial": true,
"Links": [
{
"rel": "self",
"href": "/Sub/SubscriptionPeriods/593"
}
]
}
]
}
Get the collection of Subscription Periods (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdSegment | No | Id of one of your Segment | Integer |
DateUpdateMin | No | List all Subscription Periods updated/created after the date | Datetime |
DateUpdateMax | No | List all Subscription Periods updated/created before the date | Datetime |
IdSubscription | No | List all Subscription Periods of a Subscription | Integer |
DateStartMin | No | List all Subscription Periods started after the date | Datetime |
DateStartMax | No | List all Subscription Periods started before the date | Datetime |
DateTermMin | No | List all Subscription Periods ended/will end after the date | Datetime |
DateTermMax | No | List all Subscription Periods ended/will end before the date | Datetime |
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Sub/SubscriptionPeriods/?IdBusiness=2&IdSubscription=545&DateStartMin=2023-08-27T13:54:00
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
API Backoffice - Subscription Features
A SubscriptionFeature describes the relationship of Feature and a Customer via its Subscription.
SubscriptionFeature Resource
Property | Description | Type |
---|---|---|
Id | Id of the Subscription Feature Object | Integer |
IdSubscription | Id of the Subscription related to the SubscriptionFeature | Integer |
IdFeature | Id of the Feature related to the SubscriptionFeature | Integer |
Properties | List of properties of the SubscriptionFeature | See Feature Properties |
QuantityIncluded | Limitation/Quota/NumberOfUnit of the Feature included in the Subscription of the Customer | Integer |
QuantityCurrent | Current Limitation/Quota/NumberOfUnit of the Feature available for the Customer | Integer |
Steps | Collection of Steps | See below. |
Links | Useful links concerning the Subscription Feature | -- |
Example 1 - $10 for Module A
"Steps": [
{
"AmountCeiling": 1000
}
]
Example 2 - $7 per user
"Steps": [
{
"Increment": 1,
"AmountPerIncrement": 700
}
]
Example 3 - $7 per User for the 10st User and then 5$ per User
"Steps": [
{
"QuantityMax": 10,
"Increment": 1,
"AmountPerIncrement": 700
},
{
"Increment": 1,
"AmountPerIncrement": 500
}
]
Example 4 - $7 per User with a maximum cost of $150
"Steps": [
{
"Increment": 1,
"AmountPerIncrement": 700,
"AmountCeiling": 15000
}
]
Example 5 - $100 per 5 Users until 200 users then $12 per user
"Steps": [
{
"QuantityMax": 200,
"Increment": 5,
"AmountPerIncrement": 10000
},
{
"Increment": 1,
"AmountPerIncrement": 1200
}
]
Structure of a SubscriptionFeatureStep
Parameter | Description | Type |
---|---|---|
QuantityMax | Limit max of Feature for the Step | Integer |
Increment | Quantity of Feature per Increment (Size of Increment) for the Step | Integer |
AmountPerIncrement | Amount in cents per Increment for the Step | Integer |
AmountCeiling | Amount max in cents for the Step | Integer |
See some examples on the right.
Retrieve a SubscriptionFeature
Definition
GET https://via.proabono.com/Sub/SubscriptionFeatures/{Id}
Example Request
GET https://via.proabono.com/Sub/SubscriptionFeatures/2372
Example Response
{
"Id": 2372,
"DateUpdate": "2023-09-12T17:27:00.67Z",
"IdUserUpdate": 11,
"IdSubscription": 645,
"IdFeature": 238,
"Properties": "UpdatableBeforeSubscription, UpdatableAfterSubscription, FreeInTrial",
"QuantityIncluded": 1,
"QuantityCurrent": 3,
"Steps": [
{
"Increment": 1,
"AmountPerIncrement": 700
}
],
"Links": [
{
"rel": "related-subscription",
"href": "/Sub/Subscriptions/645"
}
]
}
Retrieve a SubscriptionFeature by id.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the SubscriptionFeature to be retrieved. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Update a Subscription Feature
Definition
PATCH https://via.proabono.com/Sub/SubscriptionFeatures/{Id}
Example Request
PATCH https://via.proabono.com/Sub/SubscriptionFeatures/2372
{
"Properties": "UpdatableBeforeSubscription, UpdatableAfterSubscription, FreeInTrial",
"QuantityIncluded": 1,
"QuantityCurrent": 8,
"Steps": [
{
"Increment": 1,
"AmountPerIncrement": 850
}
]
}
Update your SubscriptionFeature as you want.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | Id of the SubscriptionFeature | Integer |
Properties | No | List of properties of the SubscriptionFeature | See Feature Properties |
QuantityIncluded | No | Limitation/Quota/NumberOfUnit of the Feature included in the Subscription of the Customer | Integer |
QuantityCurrent | No | Current Limitation/Quota/NumberOfUnit of the Feature available for the Customer | Integer |
Steps | No | Collection of Steps | See SubscriptionFeatureStep in SubscriptionFeature |
See SubscriptionFeatureStep examples in SubscriptionFeature Resource Section.
Returns
- HTTP 200 in case of a success.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
List SubscriptionFeatures
Definition
GET https://via.proabono.com/Sub/SubscriptionFeatures/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/SubscriptionFeatures/?IdBusiness=2&IdSubscription=645
Example Response
{
"Page": 1,
"SizePage": 10,
"Count": 2,
"TotalItems": 2,
"DateGenerated": "2023-09-13T12:18:55.21Z",
"Items": [
{
"Id": 2373,
"DateUpdate": "2023-09-12T17:27:00.76Z",
"IdUserUpdate": 11,
"IdSubscription": 645,
"IdFeature": 239,
"Properties": "FreeInTrial",
"QuantityIncluded": 0,
"Steps": [
{
"AmountCeiling": 1000
}
],
"Links": [
{
"rel": "self",
"href": "/Sub/SubscriptionFeatures/2373"
}
]
},
{
"Id": 2372,
"DateUpdate": "2023-09-12T17:27:00.67Z",
"IdUserUpdate": 11,
"IdSubscription": 645,
"IdFeature": 238,
"Properties": "UpdatableBeforeSubscription, UpdatableAfterSubscription, FreeInTrial",
"QuantityIncluded": 1,
"QuantityCurrent": 3,
"Steps": [
{
"Increment": 1,
"AmountPerIncrement": 700
}
],
"Links": [
{
"rel": "self",
"href": "/Sub/SubscriptionFeatures/2372"
}
]
}
]
}
Get the collection of SubscriptionFeatures (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdSegment | No | Id of one of your Segment | Integer |
DateUpdateMin | No | List all SubscriptionFeatures updated/created after the date | Datetime |
DateUpdateMax | No | List all SubscriptionFeatures updated/created before the date | Datetime |
IdSubscription | No | List all SubscriptionFeatures for a given Subscription | Integer |
IdFeature | No | List all SubscriptionFeatures for a given Feature | Integer |
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Sub/SubscriptionFeatures/?IdBusiness=2&IdFeature=238&DateUpdateMin=2023-08-27T13:54:00
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
API Backoffice - Subscription Discounts
A SubscriptionDiscount links a Discount and a Subscription.
SubscriptionDiscount Resource
Property | Description | Type |
---|---|---|
Id | Id of the SubscriptionDiscount Object | Integer |
IdSubscription | Id of the Subscription related to the SubscriptionDiscount | Integer |
IdDiscount | Id of the Discount related to the SubscriptionDiscount | Integer |
ReferenceDiscount | Reference of the Discount related to the SubscriptionDiscount | Integer |
Name | Name of the Discount | String |
Idfeature | Id of the feature if the discount is applied to a feature | Integer |
ReferenceFeature | Reference of the feature if the discount is applied to a feature | Integer |
TargetFee | Targets the fees on which the discount is applied | TargetFee |
TypeOff | Type of the Discount | TypeOff |
ValueOff | Defines the value (amount or percent) in cents of the Discount | Integer |
IsApplied | Indicates if the discount is applied or not. | Boolean |
CountPeriodsLeft | Number of application periods remaining | Integer |
Create a SubscriptionDiscount
Definition
POST https://via.proabono.com/Sub/SubscriptionDiscounts
Example Request 1
POST https://via.proabono.com/Sub/SubscriptionDiscounts
{
"IdSubscription": 752900,
"IdDiscount": 28
}
Example Response 1
{
"Id": 151,
"DateCreation": "2023-05-27T14:33:46.16Z",
"IdUserCreation": 11,
"DateUpdate": "2023-05-27T14:33:46.16Z",
"IdUserUpdate": 11,
"IdSegment": 3,
"IdDiscount": 28,
"IdSubscription": 752900,
"ReferenceDiscount": "30off-recurringfees",
"Name": "30% off on all recurring fees",
"TargetFee": "AllRecurring",
"ValueOff": 3000,
"TypeOff": "PerTenThousand",
"IsApplied": false,
"Links": [
{
"rel": "self",
"href": "/Sub/SubscriptionDiscounts/151"
},
{
"rel": "related-subscription",
"href": "/Sub/Subscriptions/752900"
}
]
}
Example Request 2 - Discount applied on a feature
POST https://via.proabono.com/Sub/SubscriptionDiscounts
{
"IdSubscription": 752900,
"IdDiscount": 29,
"ReferenceFeature" : "users"
}
Example Response 2
{
"Id": 152,
"DateCreation": "2023-05-27T14:33:53.12",
"IdUserCreation": 11,
"DateUpdate": "2023-05-27T14:33:53.12Z",
"IdUserUpdate": 11,
"IdSegment": 3,
"IdDiscount": 29,
"IdSubscription": 752900,
"ReferenceDiscount": "50off-featurefees",
"Name": "50% off on all users",
"TargetFee": "FeatureFee",
"ValueOff": 5000,
"TypeOff": "PerTenThousand",
"IsApplied": false,
"Links": [
{
"rel": "self",
"href": "/Sub/SubscriptionDiscounts/152"
},
{
"rel": "related-subscription",
"href": "/Sub/Subscriptions/752900"
}
]
}
Create/Declare a SubscriptionDiscount in ProAbono. It links a Discount and a Subscription.
If a Discount must be applied only on a Feature, its TargetFee type must be "FeatureFee".
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdSubscription | Yes | Id of the Subscription | Integer |
IdDiscount | Yes | Id of the Discount | Integer |
ReferenceFeature | (Yes, only if the discount applies to a feature) | Reference of the Feature | String |
Returns
- HTTP 201 in case of a success. Reponse body contains the created resource.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Retrieve a SubscriptionDiscount
Definition
GET https://via.proabono.com/Sub/SubscriptionDiscounts/{Id}
Example Request
GET https://via.proabono.com/Sub/SubscriptionDiscounts/151
Example Response
{
"Id": 151,
"DateCreation": "2023-05-27T14:33:46.16Z",
"IdUserCreation": 11,
"DateUpdate": "2023-05-27T14:33:46.16Z",
"IdUserUpdate": 11,
"IdSegment": 3,
"IdDiscount": 28,
"IdSubscription": 752900,
"ReferenceDiscount": "30off-recurringfees",
"Name": "30% off on all recurring fees",
"TargetFee": "AllRecurring",
"ValueOff": 3000,
"TypeOff": "PerTenThousand",
"IsApplied": false,
"Links": [
{
"rel": "related-subscription",
"href": "/Sub/Subscriptions/752900"
}
]
}
Retrieve a SubscriptionDiscount by id.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the SubscriptionDiscount to be retrieved. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Delete a SubscriptionDiscount
Definition
DELETE https://via.proabono.com/Sub/SubscriptionDiscounts/{Id}
Example Request
DELETE https://via.proabono.com/Sub/SubscriptionDiscounts/123456
It removes a Discount from a Subscription.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the SubscriptionDiscount to be deleted. | Integer |
Returns
- HTTP 200 in case of a success.
- In any other cases, response body contains a single error describing the problem.
List SubscriptionDiscounts
Definition
GET https://via.proabono.com/Sub/SubscriptionDiscounts/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/SubscriptionDiscounts/?IdBusiness=2&IdSubscription=645
Example Response
{
"Page": 1,
"SizePage": 2,
"Count": 2,
"TotalItems": 2,
"DateGenerated": "2023-05-27T14:43:57.95Z",
"Items": [
{
"Id": 153,
"DateCreation": "2023-05-27T14:43:47.39Z",
"IdUserCreation": 11,
"DateUpdate": "2023-05-27T14:43:47.39Z",
"IdUserUpdate": 11,
"IdSegment": 3,
"IdDiscount": 27,
"IdSubscription": 754267,
"ReferenceDiscount": "50off-upfrontfee",
"Name": "50% off on the upfront fee",
"TargetFee": "UpfrontFee",
"ValueOff": 5000,
"TypeOff": "PerTenThousand",
"IsApplied": false,
"Links": [
{
"rel": "self",
"href": "/Sub/SubscriptionDiscounts/153"
}
]
},
{
"Id": 151,
"DateCreation": "2023-05-27T14:33:46.16Z",
"IdUserCreation": 11,
"DateUpdate": "2023-05-27T14:33:46.16Z",
"IdUserUpdate": 11,
"IdSegment": 3,
"IdDiscount": 38,
"IdSubscription": 752900,
"ReferenceDiscount": "30off-recurringfees",
"Name": "30% off on all recurring fees",
"TargetFee": "AllRecurring",
"ValueOff": 3000,
"TypeOff": "PerTenThousand",
"IsApplied": false,
"Links": [
{
"rel": "self",
"href": "/Sub/SubscriptionDiscounts/151"
}
]
}
]
}
Get the collection of SubscriptionDiscounts (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | No | List all SubscriptionDiscounts for a given Business | Integer |
IdSegment | No | List all SubscriptionDiscounts for a given Segment | Integer |
IdSubscription | No | List all SubscriptionDiscounts for a given Subscription | Integer |
IdFeature | No | List all SubscriptionDiscounts for a given Feature | Integer |
IdDiscount | No | List all SubscriptionDiscounts for a given Discount | Integer |
DateCreationMin | No | List all Discounts created after the date | Datetime |
DateCreationMax | No | List all Discounts created before the date | Datetime |
DateUpdateMin | No | List all Subscriptions updated after the date | Datetime |
DateUpdateMax | No | List all Discounts updated before the date | Datetime |
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Sub/SubscriptionDiscounts/?IdBusiness=2&IdDiscount=238&DateUpdateMin=2023-02-27T13:54:00
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
API Backoffice - Discounts
Discounts are used to reduce the price of subscriptions, either permanently or for a short period of time.
Discounts can be applied to offers and subscriptions.
Discount Resource
Property | Description | Type |
---|---|---|
Id | Id of the Discount Object | Integer |
ReferenceDiscount | Shared Key of the Discount between ProAbono and your application (Often used for accounting purposes) | String |
StateDiscount | State of the Discount | StateDiscount |
Name | Name of the Discount | String |
TargetFee | Targets the fees on which the discount will applied | TargetFee |
TypeOff | Type of the Discount | TypeOff |
ValueOff | Defines the value (amount or percent) in cents of the Discount | Integer |
CountPeriods | Number of Periods | Integer |
Links | Useful links concerning the Discount | See below. |
Note : value are set without currency because currency is set at the Segment Level.
Collection of links
Rel | Description |
---|---|
collection-offerdiscount | Collection of OfferDiscounts related to the Discount. See Offer Discounts. |
collection-subscriptiondiscount | Collection of SubscriptionDiscounts related to the Discount. See Subscription Discounts. |
Create a Discount
Definition
POST https://via.proabono.com/Sub/Discounts
Example 1 - Request (30% off all recurring fees permanently)
POST https://via.proabono.com/Sub/Discounts
{
"IdSegment": 3,
"ReferenceDiscount": "30off-recurringfees",
"Name": "30% off on all recurring fees",
"TargetFee": "AllRecurring",
"TypeOff": "PerTenThousand",
"ValueOff": 3000
}
Example 1 - Response
{
"Id": 28,
"DateCreation": "2023-05-24T15:13:58.78Z",
"IdUserCreation": 666,
"DateUpdate": "2023-05-24T15:13:58.78Z",
"IdUserUpdate": 666,
"IdBusiness": 2,
"IdSegment": 3,
"StateDiscount": "Enabled",
"ReferenceDiscount": "30off-recurringfees",
"Name": "30% off on all recurring fees",
"TargetFee": "AllRecurring",
"ValueOff": 3000,
"TypeOff": "PerTenThousand",
"Links": [
{
"rel": "self",
"href": "/Sub/Discounts/28"
},
{
"rel": "collection-offerdiscount",
"href": "/Sub/OfferDiscounts?idDiscount=28"
},
{
"rel": "collection-subscriptiondiscount",
"href": "/Sub/SubscriptionDiscounts?idDiscount=28"
}
]
}
Example 2 - Request (10% off for 3 months)
POST https://via.proabono.com/Sub/Discounts
{
"IdSegment": 3,
"ReferenceDiscount": "10off-recurringfees-3months",
"Name": "10% off for 3 months",
"TargetFee": "AllRecurring",
"TypeOff": "PerTenThousand",
"ValueOff": 1000,
"CountPeriods" : 3
}
Example 3 - Request (50% off for the Upfront fee)
POST https://via.proabono.com/Sub/Discounts
{
"IdSegment": 3,
"ReferenceDiscount": "50off-upfrontfee",
"Name": "50% off on the Setup Fee",
"TargetFee": "UpfrontFee",
"TypeOff": "PerTenThousand",
"ValueOff": 5000
}
Create a discount in ProAbono.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdSegment | Yes | Id of your Segment | Integer |
ReferenceDiscount | No | Shared Key of the Discount between ProAbono and your application (Often used for accounting purposes) | String |
Name | No | Name of the Discount | String |
StateDiscount | No | State of the Discount. Default value is Enabled. | StateDiscount |
TargetFee | Yes | Targets the fees on which the discount will applied | TargetFee |
TypeOff | No | Type of the Discount. Default value is Flat. | TypeOff |
ValueOff | Yes | Defines the value in cents of the Discount | Integer |
CountPeriods | No | Number of Periods. Null means permanently. | Integer |
Returns
- HTTP 201 in case of a success. Reponse body contains the created resource.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Retrieve a Discount
Definition
GET https://via.proabono.com/Sub/Discounts/{Id}
Example Request
GET https://via.proabono.com/Sub/Discounts/28
Example Response
{
"Id": 28,
"DateCreation": "2023-05-24T15:13:58.78Z",
"IdUserCreation": 666,
"DateUpdate": "2023-05-24T15:13:58.78Z",
"IdUserUpdate": 666,
"IdBusiness": 2,
"IdSegment": 3,
"StateDiscount": "Enabled",
"ReferenceDiscount": "30off-recurringfees",
"Name": "30% off on all recurring fees",
"TargetFee": "AllRecurring",
"ValueOff": 3000,
"TypeOff": "PerTenThousand",
"Links": [
{
"rel": "collection-offerdiscount",
"href": "/Sub/OfferDiscounts?idDiscount=28"
},
{
"rel": "collection-subscriptiondiscount",
"href": "/Sub/SubscriptionDiscounts?idDiscount=28"
}
]
}
Retrieve a discount by id
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the Discount to be retrieved. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
List Discounts
Definition
GET https://via.proabono.com/Sub/Discounts/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Sub/Discounts/?IdBusiness=2&SizePage=3
Example Response
{
"Page": 1,
"SizePage": 10,
"Count": 3,
"TotalItems": 12,
"DateGenerated": "2023-05-25T14:14:30.51Z",
"Items": [{
"Id": 37,
"DateCreation": "2023-05-25T12:54:43.82Z",
"IdUserCreation": 666,
"DateUpdate": "2023-05-25T12:54:43.82Z",
"IdUserUpdate": 666,
"IdBusiness": 2,
"IdSegment": 3,
"StateDiscount": "Enabled",
"ReferenceDiscount": "1035cf46-6428-4083-a3ac-77b20586f08f",
"Name": "1st month free",
"TargetFee": "All",
"ValueOff": 10000,
"TypeOff": "PerTenThousand",
"CountPeriods": 1,
"Links": [
{
"rel": "self",
"href": "/Sub/Discounts/37"
}
]
},
{
"Id": 8,
"DateCreation": "2023-05-19T09:23:33.92Z",
"IdUserCreation": 666,
"DateUpdate": "2023-05-19T09:23:33.92Z",
"IdUserUpdate": 666,
"IdBusiness": 2,
"IdSegment": 3,
"StateDiscount": "Enabled",
"ReferenceDiscount": "b02fc2ce-2f30-46d5-be1d-403bc23e6136",
"Name": "10% off for 1 month",
"TargetFee": "FlatFee",
"ValueOff": 1000,
"TypeOff": "PerTenThousand",
"CountPeriods": 1,
"Links": [
{
"rel": "self",
"href": "/Sub/Discounts/8"
}
]
},
{
"Id": 28,
"DateCreation": "2023-05-24T15:13:58.78Z",
"IdUserCreation": 666,
"DateUpdate": "2023-05-24T15:13:58.78Z",
"IdUserUpdate": 666,
"IdBusiness": 2,
"IdSegment": 3,
"StateDiscount": "Enabled",
"ReferenceDiscount": "30off-recurringfees",
"Name": "30% off on all recurring fees",
"TargetFee": "AllRecurring",
"ValueOff": 3000,
"TypeOff": "PerTenThousand",
"Links": [
{
"rel": "self",
"href": "/Sub/Discounts/28"
}
]
}
],
"Links": [
{
"rel": "next",
"href": "/Sub/Discounts/?page=2"
}
]
}
Get the collection of Discounts (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | List all Discounts related to the same Business (cross-segment) | Integer |
IdSegment | No | List all Discounts related to the same Segment | Integer |
DateCreationMin | No | List all Discounts created after the date | Datetime |
DateCreationMax | No | List all Discounts created before the date | Datetime |
DateUpdateMin | No | List all Subscriptions updated after the date | Datetime |
DateUpdateMax | No | List all Discounts updated before the date | Datetime |
Name | No | List all Discounts related to the same Name or a portion of the Name | String |
StateDiscount | No | List all Discounts with a specific StateDiscount | StateDiscount |
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Sub/Discounts/?IdBusiness=2&stateDiscount=Enabled
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Sub/Discounts/?IdBusiness=2&stateDiscount=Enabled&dateCreationMin=2023-04-27T13:54:00
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
API Backoffice - Invoices & Credit Notes
Invoices describe what you sold.
Credit notes describe what you have refunded or cancelled.
Refunding or cancelling an invoice creates a credit note.
Invoice Resource
Invoices and Credit Notes are based on the same resource : Invoice.
Property | Description | Type |
---|---|---|
Id | Id of the Invoice Object | Integer |
FullNumber | FullNumber of the Invoice | String |
Number | Number of the Invoice | Integer |
IsCredit | Indicates if the object is an invoice or a credit note. If true, the object is a credit note | boolean |
IdCustomer | Id of the Customer | Integer |
IdAddressBusiness | Id of the Billing Address of the Seller | Integer |
IdAddressBilling | Id of the Billing Address of the Customer | Integer |
StateInvoice | Technical State of the Invoice | StateInvoice |
Status | Functional State of the Invoice | Status |
DateIssue | Date when the Invoice has been issued | Datetime |
DatePayment | Date of payment | Datetime |
Language | Language of the Invoice | String Language |
TypePayment | Type of payment the Customer paid with | TypePayment |
AmountSubtotal | Amount without taxes in cents | Integer |
AmountTotalDue | Total Amount (with taxes) in cents | Integer |
Lines | Collection of lines | InvoiceLines |
Customer | Details of the Customer | Customer |
AddressBusiness | Postal address of your Business | Address |
AddressBilling | Postal address of the Customer | Address |
CustomerBilling | Customer Billing | Customer Billing |
Links | Useful links concerning the Invoice | See below. |
Collection of links
Rel | Description |
---|---|
related-customer | Customer of the Invoice |
related-address-business | Billing Address of the Seller. See Address. |
related-address-billing | Billing Address of the Customer. See Address. |
collection-invoiceline | Collection of InvoiceLines related to the invoice. See InvoiceLines. |
collection-subscription | Collection of Subscriptions related to the invoice. See Subscriptions. |
collection-payment | Collection of Payments related to the invoice. See Payments. |
collection-gatewaytransaction | Collection of Transactions related to the invoice. |
hosted-related-invoice | Unique encrypted link to the invoice in PDF format. |
Invoice Extra Data
Example Request
GET https://via.proabono.com/Finance/Invoices/3281497?IdBusiness=2&Extra=Customer&Extra=AddressBusiness&Extra=AddressBilling
Example Response
{
"Id": 3281497,
"DateCreation": "2024-03-15T09:09:10.14Z",
"IdUserCreation": 11,
"DateUpdate": "2024-03-20T08:26:09.68Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"Key": "d62b270b-98af-4e81-a981-4cb48d708f8b",
"FullNumber": "F-3.00000076",
"IsCredit": false,
"Number": 76,
"IsInRealMoney": true,
"IdCustomer": 1068165,
"IdAddressBusiness": 812,
"IdAddressBilling": 487491,
"Status": "Paid",
"StateInvoice": "Paid",
"DateIssue": "2024-03-15T09:09:10.24Z",
"DatePayment": "2024-03-20T08:26:09.68Z",
"Language": "fr",
"TypePayment": "Card",
"AmountSubtotal": 59800,
"AmountTotal": 71760,
"Lines": [
{
"Id": 4983775,
"DateUpdate": "2024-03-15T09:09:10.20Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 1068165,
"TypeMove": "AutoSubscriptionUpfront",
"IdInvoice": 3281497,
"IdSubscription": 969445,
"IdAddressBusiness": 812,
"IdAddressBilling": 487491,
"TextLocalized": "Setup fee",
"AmountSubtotal": 14900,
"AmountTotal": 17880,
"RateTax1": 2000,
"LabelTax1": "TVA",
"DateMove": "2024-03-01T00:00:00.00Z"
},
{
"Id": 4983774,
"DateUpdate": "2024-03-15T09:09:10.20Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 1068165,
"TypeMove": "AutoSubscriptionRecurrence",
"IdInvoice": 3281497,
"IdSubscription": 969445,
"IdAddressBusiness": 812,
"IdAddressBilling": 487491,
"TextLocalized": "Subscription Fee",
"DatePeriodEnd": "2024-04-01T00:00:00.00Z",
"AmountSubtotal": 6900,
"AmountTotal": 8280,
"RateTax1": 2000,
"LabelTax1": "TVA",
"DatePeriodStart": "2024-03-01T00:00:00.00Z"
},
{
"Id": 4983772,
"DateUpdate": "2024-03-15T09:09:10.20Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 1068165,
"TypeMove": "AutoFeatureProratable",
"IdInvoice": 3281497,
"IdSubscription": 969445,
"IdFeature": 9592,
"IdAddressBusiness": 812,
"IdAddressBilling": 487491,
"TextLocalized": "Users",
"DatePeriodEnd": "2024-04-01T00:00:00.00Z",
"QuantityReported": 4,
"QuantityBilled": 2,
"AmountSubtotal": 4000,
"AmountTotal": 4800,
"RateTax1": 2000,
"LabelTax1": "TVA",
"DatePeriodStart": "2024-03-01T00:00:00.00Z"
},
{
"Id": 4983773,
"DateUpdate": "2024-03-15T09:09:10.20Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 1068165,
"TypeMove": "AutoFeatureProratable",
"IdInvoice": 3281497,
"IdSubscription": 969445,
"IdFeature": 9591,
"IdAddressBusiness": 812,
"IdAddressBilling": 487491,
"TextLocalized": "24/7 Support",
"DatePeriodEnd": "2024-04-01T00:00:00.00Z",
"AmountSubtotal": 10000,
"AmountTotal": 12000,
"RateTax1": 2000,
"LabelTax1": "TVA",
"DatePeriodStart": "2024-03-01T00:00:00.00Z"
},
{
"Id": 4983776,
"DateUpdate": "2024-03-15T09:09:10.20Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 1068165,
"TypeMove": "Service",
"IdInvoice": 3281497,
"IdAddressBusiness": 812,
"IdAddressBilling": 487491,
"TextLocalized": "Training courses",
"AmountSubtotal": 24000,
"AmountTotal": 28800,
"RateTax1": 2000,
"LabelTax1": "TVA",
"DateMove": "2024-03-15T08:48:44.54Z"
}
],
"Customer": {
"Id": 1068165,
"DateCreation": "2024-03-05T08:38:40.96Z",
"IdUserCreation": 11,
"DateUpdate": "2024-03-15T09:09:10.33Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"Status": "Enabled",
"StateCustomer": "Enabled",
"ReferenceCustomer": "b9d8cf94-a35d-4bb3-9f55-7bef11618dcf",
"Name": "Smith Inc",
"Language": "en"
},
"AddressBusiness": {
"Id": 812,
"IdBusiness": 2,
"DateUpdate": "2021-07-27T08:38:06.74Z",
"IdUserUpdate": 761080,
"Company": "Sandbox & Co.",
"FirstName": "Jane",
"LastName": "Smith",
"AddressLine1": "101 avenue des Champs Elysees",
"AddressLine2": "Building Eiffel - 5th floor",
"ZipCode": "75008",
"City": "Paris",
"Country": "FR",
"Region": "FR-75",
"TaxInformation": "FR00789536845"
},
"AddressBilling": {
"Id": 487491,
"DateUpdate": "2024-03-05T08:42:06.45Z",
"IdUserUpdate": 11,
"IdSegment": 3,
"IdCustomer": 1068165,
"Company": "Smith Inc.",
"FirstName": "John",
"LastName": "Smith",
"AddressLine1": "440 Grove Street",
"AddressLine2": "1st Floor",
"ZipCode": "10011",
"City": "New York",
"Country": "US",
"Region": "US-NY",
"Phone" : "1-631-850-3480"
"TaxInformation": "US123456789"
},
"CustomerBilling": {
"Id": 1068165,
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 1068165,
"IsCustomerBillable": true,
"IsPaymentCappingReached": false,
"IsPermissionInExpiration": false,
"IsGreyListed": false,
"StateCustomer": "Enabled",
"TypePayment": "Card",
"CountUnpaidInvoice": 2,
"AmountUnpaidInvoice": 39450,
"DaysUnpaidInvoice": 15,
"IsAutoBilling": false,
"DurationBilling": 1,
"UnitBilling": "Month",
"CanRenewIfNoPaymentInfo": true
},
"Links": [
{
"rel": "related-customer",
"href": "/Distribution/Customers/1068165"
},
{
"rel": "related-invoice-addressbusiness",
"href": "/Finance/InvoiceAddressBusinesses/812"
},
{
"rel": "related-invoice-addressbilling",
"href": "/Finance/InvoiceAddressBillings/487491"
},
{
"rel": "collection-invoiceline",
"href": "/Finance/InvoiceLines?IdInvoice=3281497"
},
{
"rel": "collection-subscription",
"href": "/Sub/Subscriptions?IdInvoice=3281497"
},
{
"rel": "collection-gatewaytransaction",
"href": "/Gateway/GatewayTransactions?IdInvoice=3281497"
},
{
"rel": "collection-payment",
"href": "/Finance/Payments?IdInvoice=3281497"
},
{
"rel": "hosted-related-invoice",
"href": "https://sandbox-eur.proabono.com/invoice-pdf/{Unique-Encrypted-Url}"
}
]
}
When retrieving an invoice or a list of invoices, you can request additionnal data to be returned.
To do so, add extra={resource-type} in the url.
Extra Resource Type |
---|
Customer |
AddressBilling |
AddressBusiness |
Retrieve an Invoice or a Credit Note
Definition
GET https://via.proabono.com/Finance/Invoices/{Id}
Example Request
GET https://via.proabono.com/Finance/Invoices/3281497
Example Response
{
"Id": 3281497,
"DateCreation": "2024-03-15T09:09:10.14Z",
"IdUserCreation": 11,
"DateUpdate": "2024-03-20T08:26:09.68Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"Key": "d62b270b-98af-4e81-a981-4cb48d708f8b",
"FullNumber": "F-3.00000076",
"IsCredit": false,
"Number": 76,
"IsInRealMoney": true,
"IdCustomer": 1068165,
"IdAddressBusiness": 812,
"IdAddressBilling": 487491,
"Status": "Paid",
"StateInvoice": "Paid",
"DateIssue": "2024-03-15T09:09:10.24Z",
"DatePayment": "2024-03-20T08:26:09.68Z",
"Language": "fr",
"TypePayment": "Card",
"AmountSubtotal": 59800,
"AmountTotal": 71760,
"Lines": [
{
"Id": 4983775,
"DateUpdate": "2024-03-15T09:09:10.20Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 1068165,
"TypeMove": "AutoSubscriptionUpfront",
"IdInvoice": 3281497,
"IdSubscription": 969445,
"IdAddressBusiness": 812,
"IdAddressBilling": 487491,
"TextLocalized": "Setup fee",
"AmountSubtotal": 14900,
"AmountTotal": 17880,
"RateTax1": 2000,
"LabelTax1": "TVA",
"DateMove": "2024-03-01T00:00:00.00Z"
},
{
"Id": 4983774,
"DateUpdate": "2024-03-15T09:09:10.20Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 1068165,
"TypeMove": "AutoSubscriptionRecurrence",
"IdInvoice": 3281497,
"IdSubscription": 969445,
"IdAddressBusiness": 812,
"IdAddressBilling": 487491,
"TextLocalized": "Subscription Fee",
"DatePeriodEnd": "2024-04-01T00:00:00.00Z",
"AmountSubtotal": 6900,
"AmountTotal": 8280,
"RateTax1": 2000,
"LabelTax1": "TVA",
"DatePeriodStart": "2024-03-01T00:00:00.00Z"
},
{
"Id": 4983772,
"DateUpdate": "2024-03-15T09:09:10.20Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 1068165,
"TypeMove": "AutoFeatureProratable",
"IdInvoice": 3281497,
"IdSubscription": 969445,
"IdFeature": 9592,
"IdAddressBusiness": 812,
"IdAddressBilling": 487491,
"TextLocalized": "Users",
"DatePeriodEnd": "2024-04-01T00:00:00.00Z",
"QuantityReported": 4,
"QuantityBilled": 2,
"AmountSubtotal": 4000,
"AmountTotal": 4800,
"RateTax1": 2000,
"LabelTax1": "TVA",
"DatePeriodStart": "2024-03-01T00:00:00.00Z"
},
{
"Id": 4983773,
"DateUpdate": "2024-03-15T09:09:10.20Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 1068165,
"TypeMove": "AutoFeatureProratable",
"IdInvoice": 3281497,
"IdSubscription": 969445,
"IdFeature": 9591,
"IdAddressBusiness": 812,
"IdAddressBilling": 487491,
"TextLocalized": "24/7 Support",
"DatePeriodEnd": "2024-04-01T00:00:00.00Z",
"AmountSubtotal": 10000,
"AmountTotal": 12000,
"RateTax1": 2000,
"LabelTax1": "TVA",
"DatePeriodStart": "2024-03-01T00:00:00.00Z"
},
{
"Id": 4983776,
"DateUpdate": "2024-03-15T09:09:10.20Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 1068165,
"TypeMove": "Service",
"IdInvoice": 3281497,
"IdAddressBusiness": 812,
"IdAddressBilling": 487491,
"TextLocalized": "Training courses",
"AmountSubtotal": 24000,
"AmountTotal": 28800,
"RateTax1": 2000,
"LabelTax1": "TVA",
"DateMove": "2024-03-15T08:48:44.54Z"
}
],
"CustomerBilling": {
"Id": 1068165,
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 1068165,
"IsCustomerBillable": true,
"IsPaymentCappingReached": false,
"IsPermissionInExpiration": false,
"IsGreyListed": false,
"StateCustomer": "Enabled",
"TypePayment": "Card",
"CountUnpaidInvoice": 2,
"AmountUnpaidInvoice": 39450,
"DaysUnpaidInvoice": 15,
"IsAutoBilling": false,
"DurationBilling": 1,
"UnitBilling": "Month",
"CanRenewIfNoPaymentInfo": true
},
"Links": [
{
"rel": "related-customer",
"href": "/Distribution/Customers/1068165"
},
{
"rel": "related-invoice-addressbusiness",
"href": "/Finance/InvoiceAddressBusinesses/812"
},
{
"rel": "related-invoice-addressbilling",
"href": "/Finance/InvoiceAddressBillings/487491"
},
{
"rel": "collection-invoiceline",
"href": "/Finance/InvoiceLines?IdInvoice=3281497"
},
{
"rel": "collection-subscription",
"href": "/Sub/Subscriptions?IdInvoice=3281497"
},
{
"rel": "collection-gatewaytransaction",
"href": "/Gateway/GatewayTransactions?IdInvoice=3281497"
},
{
"rel": "collection-payment",
"href": "/Finance/Payments?IdInvoice=3281497"
},
{
"rel": "hosted-related-invoice",
"href": "https://sandbox-eur.proabono.com/invoice-pdf/{Unique-Encrypted-Url}"
}
]
}
Retrieve an Invoice
or a Credit Note
.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the Invoice to be retrieved. | Integer |
See Invoice Extra Data if you need more additionnal data to be returned.
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Refund an Invoice
Definition
POST https://via.proabono.com/Finance/InvoiceDebits/RefundAuto?Id={IdInvoice}&IdBusiness={YourIdBusiness}
Example Request
POST https://via.proabono.com/Finance/InvoiceDebits/RefundAuto?Id=54258&IdBusiness=2
{
"Reason": "The customer has terminated its subscription at the begin of the period. So he asked for a refund.",
"InfoExtra1": "Internal Accounting Code : 79"
}
Example Response
{
"Id": 54263,
"DateUpdate": "2023-02-16T13:09:37.00Z",
"IdUserUpdate": 104143,
"IdSegment": 605,
"DateCreation": "2023-02-16T13:09:36.80Z",
"IdUserCreation": 104143,
"Key": "de3ae359-49bd-4dc9-9074-78bb69f98fed",
"FullNumber": "SA-605.00000035",
"Number": 35,
"IsCredit": true,
"IdCustomer": 171846,
"IdInvoiceDebit": 54258,
"IdAddressBusiness": 249,
"IdAddressBilling": 41676,
"StateInvoice": "PaidRefunded",
"Status": "Paid",
"DateIssue": "2023-02-16T13:09:36.82Z",
"DatePayment": "2023-02-16T13:09:36.90Z",
"Language": "fr",
"TypePayment": "Card",
"AmountSubtotal": 9900,
"AmountTotal": 11880,
"TypeCredit": "Refund",
"Reason": "The customer has terminated its subscription at the begin of the period. So he asked for a refund.",
"InfoExtra1": "Internal Accounting Code : 79"
}
Refunding an Invoice creates a Credit Note.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | Id of the Invoice to refund | Integer |
IdBusiness | Yes | Id of your Business | Integer |
Reason | Yes | Reason of the Refund | String |
InfoExtra1 | No | Free to add extra information | String |
InfoExtra2 | No | Free to add extra information | String |
Returns
- HTTP 201 in case of a success. Reponse body contains the created resource.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Register payment for an Invoice
Definition
POST https://via.proabono.com/Finance/InvoiceDebits/{Id}/Payment
Example Request
POST https://via.proabono.com/Finance/InvoiceDebits/78519/Payment
{
"TypePayment": "ExternalCheck",
"DatePayment": "2023-5-11",
"InfoExtra1": "Check Number 1234567890",
"InfoExtra2": ""
}
Example Response
{
"Id": 78519,
"DateUpdate": "2023-05-12T14:40:55.20Z",
"IdUserUpdate": 52,
"IdSegment": 3,
"DateCreation": "2023-05-12T14:40:20.70Z",
"IdUserCreation": 11,
"Key": "a0b8aa48-74b4-43c2-86af-e0fbe87bd8d8",
"FullNumber": "S-3.00000014",
"Number": 14,
"IsCredit": false,
"IsInRealMoney": false,
"IdCustomer": 191566,
"IdAddressBusiness": 255,
"IdAddressBilling": 60523,
"StateInvoice": "Paid",
"Status": "Paid",
"DateIssue": "2023-05-12T14:40:20.78Z",
"DatePayment": "2023-05-11T00:00:00.00Z",
"Language": "fr",
"TypePayment": "ExternalCheck",
"AmountSubtotal": 2900,
"AmountTotal": 3480,
"InfoExtra1": "Check Number 1234567890"
}
Register a Payment for an Invoice. It sets the status of an Invoice to Paid.
Useful when the payment is external : WireTransfer, Checks, Cash, ...
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | Id of the Invoice | Integer |
TypePayment | Yes | Type of the Payment | TypePayment |
DatePayment | Yes | Date of the Payment of the Refund | Datetime |
InfoExtra1 | No | Free to add extra information | String |
InfoExtra2 | No | Free to add extra information | String |
Returns
- HTTP 201 in case of a success. Reponse body contains the created resource.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
List all Invoices and Credit Notes
Definition
GET https://via.proabono.com/Finance/Invoices/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Finance/Invoices/?IdBusiness=2
Example Response
{
"Page": 1,
"SizePage": 10,
"Count": 2,
"TotalItems": 2,
"DateGenerated": "2023-08-27T13:32:35.74Z",
"Items": [
{
"Id": 27,
"DateUpdate": "2023-08-20T07:28:52.65Z",
"IdUserUpdate": 955,
"IdSegment": 3,
"DateCreation": "2023-08-20T07:28:52.65Z",
"IdUserCreation": 955,
"Key": "9a5fb3bf-5041-439f-87e4-fad388bf7c96",
"FullNumber": "F-3.00000002",
"Number": 2,
"IsCredit": false,
"IdCustomer": 64811,
"IdAddressBusiness": 8,
"IdAddressBilling": 29,
"StateInvoice": "Paid",
"Status": "Paid",
"DateIssue": "2023-08-20T07:28:53.23Z",
"DatePayment": "2023-08-20T07:28:53.01Z",
"Language": "en",
"TypePayment": "Card",
"AmountSubtotal": 20000,
"AmountTotalDue": 20000,
"Links": [
{
"rel": "self",
"href": "/Finance/InvoiceDebits/27"
}
]
},
{
"Id": 19,
"DateUpdate": "2023-07-27T13:22:55.43Z",
"IdUserUpdate": 149,
"IdSegment": 3,
"DateCreation": "2023-07-27T13:22:55.43Z",
"IdUserCreation": 149,
"Key": "91f8ea96-617a-4ee8-8cf4-4fe8d085a156",
"FullNumber": "F-3.00000001",
"Number": 1,
"IsCredit": false,
"IdCustomer": 64081,
"IdAddressBusiness": 8,
"IdAddressBilling": 21,
"StateInvoice": "PaidRefunded",
"Status": "Paid",
"DateIssue": "2023-07-27T13:22:56.10Z",
"DatePayment": "2023-07-27T13:22:55.93Z",
"Language": "fr",
"TypePayment": "Card",
"AmountSubtotal": 20000,
"AmountTotalDue": 20000,
"Links": [
{
"rel": "self",
"href": "/Finance/InvoiceDebits/19"
}
]
}
]
}
Get the collection of Invoices and Credit Notes (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdSegment | No | Id of one of your Segment | Integer |
IsCredit | No | If True, list only Credit Notes | Boolean |
DateIssueMin | No | List all invoices issued after the date | Datetime |
DateIssueMax | No | List all invoices issued before the date | Datetime |
DatePaymentMin | No | List all invoices paid after the date | Datetime |
DatePaymentMax | No | List all invoices paid before the date | Datetime |
StateInvoice | No | List all invoices with a specific technical state | StateInvoice |
StateInvoiceMin | No | List all invoices with a given minimum technical state | StateInvoice |
StateInvoiceMax | No | List all invoices with a given maximum technical state | StateInvoice |
StatusInvoice | No | List all invoices with a specific functional status | Status |
StatusInvoiceMin | No | List all invoices with a given minimum functional status | Status |
StatusInvoiceMax | No | List all invoices with a given maximum functional status | Status |
NumberMin | No | List all invoices issued after a specific 'Number' | Integer |
NumberMax | No | List all invoices issued before a specific 'Number' | Integer |
TypePayment | No | List all invoices with a specific type of payment | TypePayment |
ReferenceAffiliation | No | List all invoices related to customers with the same ReferenceAffiliation (Reference of the affiliate who brought these customers) | String |
IdCustomer | No | List all invoices of a Customer | Integer |
ReferenceCustomer | No | List all invoices of a Customer | String |
See Invoice Extra Data if you need more extra data to be returned.
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Finance/Invoices/?IdBusiness=2&StateInvoice=Paid&DatePaymentMin=2023-04-27T13:54:00
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
List only Invoices
Definition
GET https://via.proabono.com/Finance/Invoices/?IdBusiness={YourIdBusiness}&IsCredit=false
Example Request
GET https://via.proabono.com/Finance/Invoices/?IdBusiness=2&IsCredit=false
Get the collection of Invoices only.
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdSegment | No | Id of one of your Segment | Integer |
IsCredit | No | If False, list only Invoices | Boolean |
For more parameters, see List all Invoices and Credit Notes
List only Credit Notes
Definition
GET https://via.proabono.com/Finance/Invoices/?IdBusiness={YourIdBusiness}&IsCredit=true
Example Request
GET https://via.proabono.com/Finance/Invoices/?IdBusiness=2&IsCredit=true
Get the collection of Credit Notes only.
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdSegment | No | Id of one of your Segment | Integer |
IsCredit | No | If True, list only Credit Notes | Boolean |
For more parameters, see List all Invoices and Credit Notes
API Backoffice - Invoice Lines
InvoiceLine describes a content of an invoice.
InvoiceLine Resource
Property | Description | Type |
---|---|---|
Id | Id of the InvoiceLine Object | Integer |
IdInvoice | Id of the Invoice to which this InvoiceLine belongs. | Integer |
IdSubscription | Id of the Subscription which to which this InvoiceLine belongs. | Integer |
TextLocalized | Description of the content of the InvoiceLine | String |
AmountSubtotal | Amount without taxes in cents | Integer |
AmountTotalDue | Total Amount (with taxes) in cents | Integer |
RateTax1 | Rate of Tax1 in ‱. Ex 15,6% -> 1560. | Integer |
LabelTax1 | Label of Tax1 | String |
RateTax2 | Rate of Tax2 in ‱. Ex 15,6% -> 1560. | Integer |
LabelTax2 | Label of Tax2 | String |
Retrieve an InvoiceLine
Definition
GET https://via.proabono.com/Finance/InvoiceLines/{Id}
Example Request
GET https://via.proabono.com/Finance/InvoiceLines/76
Example Response
{
"Id": 76,
"DateUpdate": "2023-09-12T12:40:12.14Z",
"IdUserUpdate": 1237,
"IdInvoice": 37,
"IdSubscription": 639,
"TextLocalized": "Up-front amount",
"AmountSubtotal": 4900,
"AmountTotalDue": 5757,
"RateTax1": 1000,
"LabelTax1": "Tax1",
"RateTax2": 750,
"LabelTax2": "Tax2",
"Links": [
{
"rel": "related-invoice",
"href": "/Finance/Invoices/37"
},
{
"rel": "related-subscription",
"href": "/Sub/Subscriptions/639"
}
]
}
Retrieve a InvoiceLine
.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the InvoiceLine to be retrieved. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
List InvoiceLines
Definition
GET https://via.proabono.com/Finance/InvoiceLines/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Finance/InvoiceLines/?IdBusiness=2&IdInvoice=37
Example Response
{
"Page": 1,
"SizePage": 10,
"Count": 4,
"TotalItems": 4,
"DateGenerated": "2023-09-12T13:52:48.85Z",
"Items": [
{
"Id": 77,
"DateUpdate": "2023-09-12T12:40:12.17Z",
"IdUserUpdate": 1237,
"IdInvoice": 37,
"IdSubscription": 639,
"TextLocalized": "Subscription amount",
"AmountSubtotal": 9900,
"AmountTotalDue": 11632,
"RateTax1": 1000,
"LabelTax1": "Tax1",
"RateTax2": 750,
"LabelTax2": "Tax2",
"Links": [
{
"rel": "self",
"href": "/Finance/InvoiceLines/77"
}
]
},
{
"Id": 78,
"DateUpdate": "2023-09-12T12:40:12.17Z",
"IdUserUpdate": 1237,
"IdInvoice": 37,
"IdSubscription": 639,
"TextLocalized": "Module A",
"AmountSubtotal": 1000,
"AmountTotalDue": 1175,
"RateTax1": 1000,
"LabelTax1": "Tax1",
"RateTax2": 750,
"LabelTax2": "Tax2",
"Links": [
{
"rel": "self",
"href": "/Finance/InvoiceLines/78"
}
]
},
{
"Id": 79,
"DateUpdate": "2023-09-12T12:40:12.17Z",
"IdUserUpdate": 1237,
"IdInvoice": 37,
"IdSubscription": 639,
"TextLocalized": "Users",
"AmountSubtotal": 1400,
"AmountTotalDue": 1645,
"RateTax1": 1000,
"LabelTax1": "Tax1",
"RateTax2": 750,
"LabelTax2": "Tax2",
"Links": [
{
"rel": "self",
"href": "/Finance/InvoiceLines/79"
}
]
},
{
"Id": 76,
"DateUpdate": "2023-09-12T12:40:12.14Z",
"IdUserUpdate": 1237,
"IdInvoice": 37,
"IdSubscription": 639,
"TextLocalized": "Up-front amount",
"AmountSubtotal": 4900,
"AmountTotalDue": 5757,
"RateTax1": 1000,
"LabelTax1": "Tax1",
"RateTax2": 750,
"LabelTax2": "Tax2",
"Links": [
{
"rel": "self",
"href": "/Finance/InvoiceLines/76"
}
]
}
]
}
Get the collection of InvoiceLines (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdSegment | No | List all InvoiceLines related to a specific Segment | Integer |
DateUpdateMin | No | List all InvoiceLines updated/created after the date | Datetime |
DateUpdateMax | No | List all InvoiceLines updated/created before the date | Datetime |
DateIssueMin | No | List all InvoiceLines issued after the date | Datetime |
DateIssueMax | No | List all InvoiceLines issued before the date | Datetime |
IsCredit | No | If false, list all InvoiceLines of Credit Notes. If true, list all InvoiceLines of Invoices. | Boolean |
IdInvoice | No | List all InvoiceLines of an Invoice or Credit Note | Integer |
IdSubscription | No | List all InvoiceLines related to a specific Subscription | Integer |
AmountSubtotalMin | No | List all InvoiceLines with AmountSubtotal equal or greater than AmountSubtotalMin | Integer |
AmountSubtotalMax | No | List all InvoiceLines with AmountSubtotal equal or less than AmountSubtotalMax | Integer |
AmountTotalDueMin | No | List all InvoiceLines with AmountSubtotal equal or greater than AmountTotalDue | Integer |
AmountTotalDueMax | No | List all InvoiceLines with AmountSubtotal equal or less than AmountTotalDue | Integer |
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Finance/InvoiceLines/?IdBusiness=2&IdInvoice=37&AmountTotalDueMin=1000
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
API Backoffice - CustomerBalance
The Balance of a Customer is the result of debit and credit moves.
CustomerMove describes a movement in the balance of a customer.
CustomerMoves can be viewed as :
- an Extra Charge if the amount is positive,
- a Gift, Discount, Coupon ... if the amount is negative.
CustomerMove Resource
Property | Description | Type |
---|---|---|
Id | Id of the CustomerMove Object | Integer |
IdCustomer | Id of the Customer related to this CustomerMove | Integer |
IdSubscription | Id of the Subscription related to this CustomerMove | Integer |
IdSubscriptionPeriod | Id of the Period of the Subscription related to this CustomerMove | Integer |
IdFeature | Id of the Feature related to this CustomerMove | Integer |
TextLocalized | Text of the CustomerMove in the language of the Customer | String |
AmountSubtotal | Amount without taxes in cents | Integer |
AmountTotal | Total Amount (with taxes) in cents | Integer |
TypeMove | Type of the Move | Type of Move |
Links | Useful links concerning the CustomerMove |
Note : Amounts are set without currency because currency is set at the Segment Level.
Create a CustomerMove
Definition
POST https://via.proabono.com/Finance/CustomerMoves
Example Request
POST https://via.proabono.com/Finance/CustomerMoves
{
"IdBusiness": 2,
"IdCustomer": 64811,
"TextLocalized": "Extra Charges",
"AmountSubtotal": 9900
}
Example Response
{
"Id": 74,
"DateUpdate": "2023-08-27T17:04:09.13Z",
"IdUserUpdate": 11,
"IdCustomer": 64811,
"TypeMove": "Unspecified",
"TextLocalized": "Extra Charges",
"AmountSubtotal": 9900,
"AmountTotal": 9900,
"Links": [
{
"rel": "self",
"href": "/Finance/CustomerMoves/74"
}
]
}
Create a CustomerMove for a Customer. The CustomerMove can be linked to a Subscription or/and a Feature.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdCustomer | Yes | Id of the Customer related to this CustomerMoves | Integer |
IdBusiness | Yes | Id of your Business | Integer |
IdSubscription | No | Id of the Subscription related to this CustomerMoves | Integer |
IdFeature | No | Id of the Feature related to this CustomerMoves | Integer |
TextLocalized | Yes | Text of the CustomerMove in the language of the Customer | String |
AmountSubtotal | Yes | Amount without taxes in cents | Integer |
Returns
- HTTP 201 in case of a success. Reponse body contains the created resource.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
Retrieve a CustomerMove
Definition
GET https://via.proabono.com/Finance/CustomerMoves/{Id}
Example Request
GET https://via.proabono.com/Finance/CustomerMoves/74
Example Response
{
"Id": 74,
"DateUpdate": "2023-08-27T17:04:09.13Z",
"IdUserUpdate": 11,
"IdCustomer": 64811,
"TypeMove": "Unspecified",
"TextLocalized": "Extra Charges",
"AmountSubtotal": 9900,
"AmountTotal": 9900,
"Links": [
{
"rel": "self",
"href": "/Finance/CustomerMoves/74"
}
]
}
Retrieve a CustomerMove by id.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the CustomerMove to be retrieved. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
Update a CustomerMove
Definition
PATCH https://via.proabono.com/Finance/CustomerMoves/{Id}
Example Request
PATCH https://via.proabono.com/Finance/CustomerMoves/74
{
"IdBusiness": 2,
"TextLocalized": "Extra Charges - Pack A",
}
Update the Text of the CustomerMove as you want.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the CustomerMove to update. | Integer |
TextLocalized | Yes | Text of the CustomerMove in the language of the Customer | String |
IdBusiness | Yes | Id of your Business | Integer |
Returns
- HTTP 200 in case of a success.
- HTTP 422 in case of validation errors. Response body contains a list of errors.
- In any other cases, response body contains a single error describing the problem.
List CustomerMoves
Definition
GET https://via.proabono.com/Finance/CustomerMoves/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Finance/CustomerMoves/?IdBusiness=2
Example Response
{
"Page": 1,
"SizePage": 10,
"Count": 3,
"TotalItems": 3,
"DateGenerated": "2023-08-27T17:12:26.58Z",
"Items": [
{
"Id": 74,
"DateUpdate": "2023-08-27T17:04:09.14Z",
"IdUserUpdate": 11,
"IdCustomer": 64811,
"TypeMove": "Unspecified",
"TextLocalized": "Extra Charges - Pack A",
"AmountSubtotal": 9900,
"AmountTotal": 9900,
"Links": [
{
"rel": "self",
"href": "/Finance/CustomerMoves/74"
}
]
},
{
"Id": 45,
"DateUpdate": "2023-08-20T16:22:06.72Z",
"IdUserUpdate": 11,
"IdCustomer": 64802,
"TypeMove": "Unspecified",
"TextLocalized": "Pack 30 Euro",
"AmountSubtotal": 3000,
"AmountTotal": 3000,
"Links": [
{
"rel": "self",
"href": "/Finance/CustomerMoves/45"
}
]
},
{
"Id": 44,
"DateUpdate": "2023-08-20T16:22:02.78Z",
"IdUserUpdate": 11,
"IdCustomer": 64802,
"TypeMove": "Unspecified",
"TextLocalized": "Discount -35 Euro",
"AmountSubtotal": -3500,
"AmountTotal": -3500,
"Links": [
{
"rel": "self",
"href": "/Finance/CustomerMoves/44"
}
]
}
]
}
Get the collection of Subscriptions (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdSegment | No | Id of one of your Segment | Integer |
DateUpdateMin | No | List all CustomerMoves updated/created after the date | Datetime |
DateUpdateMax | No | List all CustomerMoves updated/created before the date | Datetime |
IdCustomer | No | List all CustomerMoves of a Customer | Integer |
IsNotBilled | No | If true, list all CustomerMoves not billed yet. | Boolean |
AmountSubtotalMin | No | List all CustomerMoves with AmountSubtotal equal or greater than AmountSubtotalMin | Integer |
AmountSubtotalMax | No | List all CustomerMoves with AmountSubtotal equal or less than AmountSubtotalMax | Integer |
AmountTotalMin | No | List all CustomerMoves with AmountSubtotal equal or greater than AmountTotal | Integer |
AmountTotalMax | No | List all CustomerMoves with AmountSubtotal equal or less than AmountTotal | Integer |
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Finance/CustomerMoves/?IdBusiness=2&IdCustomer=64811&DateUpdateMin=2023-07-27T13:54:00
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
API Backoffice - Payments
Payments refer to any payments to or from a Customer.
Payment Resource
Property | Description | Type |
---|---|---|
Id | Id of the Payment Object | Integer |
IdCustomer | Id of the Customer related to this Payment | Integer |
IdInvoice | Id of the Invoice related to this Payment | Integer |
TypePayment | Type of payment | TypePayment |
StatePayment | Technical State of the payment | StatePayment |
Status | Functional State of the payment | Status |
Amount | Amount of the payment in cents | Integer |
DatePayment | Date of the payment | Datetime |
IdGatewayTransaction | Id of the Transaction related to this Payment | Integer |
Links | Useful links concerning the Payment | -- |
Note : Amounts are set without currency because currency is set at the Segment Level.
Retrieve a Payment
Definition
GET https://via.proabono.com/Finance/Payments/{Id}
Example Request
GET https://via.proabono.com/Finance/Payments/74
Example Response
{
"Id": 74,
"DateUpdate": "2023-07-27T13:23:00.00Z",
"IdUserUpdate": 149,
"IdSegment": 3,
"DateCreation": "2023-07-27T13:23:00.00Z",
"IdUserCreation": 149,
"IdCustomer": 64081,
"IdInvoice": 19,
"TypePayment": "Card",
"StatePayment": "CompletedRefunded",
"Status": "Completed",
"Amount": 20000,
"DatePayment": "2023-07-27T13:23:00.00Z",
"IdGatewayTransaction": 15,
"Links": [
{
"rel": "related-invoicedebit",
"href": "/Finance/InvoiceDebits/19"
},
{
"rel": "related-gatewaytransaction",
"href": "/Gateway/GatewayTransactions/15"
}
]
}
Retrieve a Payment by id.
Request Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
Id | Yes | The identifier of the Payment to be retrieved. | Integer |
Returns
- HTTP 200 in case of a success. Reponse body contains the desired resource.
- HTTP 404 if the resource is not found. Resource body may contain more information.
- In any other cases, response body contains a single error describing the problem.
List Payments
Definition
GET https://via.proabono.com/Finance/Payments/?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Finance/Payments/?IdBusiness=2
Example Response
{
"Page": 1,
"SizePage": 10,
"Count": 2,
"TotalItems": 2,
"DateGenerated": "2023-08-27T22:06:17.19Z",
"Items": [
{
"Id": 21,
"DateUpdate": "2023-08-20T07:29:00.00Z",
"IdUserUpdate": 955,
"IdSegment": 3,
"DateCreation": "2023-08-20T07:29:00.00Z",
"IdUserCreation": 955,
"IdCustomer": 64811,
"IdInvoice": 27,
"TypePayment": "Card",
"StatePayment": "CompletedRefunded",
"Status": "Completed",
"Amount": 20000,
"DatePayment": "2023-08-20T07:29:00.00Z",
"IdGatewayTransaction": 23,
"Links": [
{
"rel": "self",
"href": "/Finance/Payments/21"
}
]
},
{
"Id": 15,
"DateUpdate": "2023-07-27T13:23:00.00Z",
"IdUserUpdate": 149,
"IdSegment": 3,
"DateCreation": "2023-07-27T13:23:00.00Z",
"IdUserCreation": 149,
"IdCustomer": 64081,
"IdInvoice": 19,
"TypePayment": "Card",
"StatePayment": "Completed",
"Status": "Completed",
"Amount": 20000,
"DatePayment": "2023-07-27T13:23:00.00Z",
"IdGatewayTransaction": 15,
"Links": [
{
"rel": "self",
"href": "/Finance/Payments/15"
}
]
}
]
}
Get the collection of Payments (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdSegment | No | Id of one of your Segment | Integer |
DateUpdateMin | No | List all Payments updated/created after the date | Datetime |
DateUpdateMax | No | List all Payments updated/created before the date | Datetime |
IdCustomer | No | List all Payments of a Customer | Integer |
TypePayment | No | List all Payments with a specific type of payment | TypePayment |
StatePayment | No | List all payments with a specific technical state | StatePayment |
StatePaymentMin | No | List all payments with a given minimum technical state | StatePayment |
StatePaymentMax | No | List all payments with a given maximum technical state | StatePayment |
AmountMin | No | List all Payments with Amount equal or greater than AmountMin | Integer |
AmountMax | No | List all Payments with Amount equal or less than AmountMax | Integer |
StatusPayment | No | List all payments with a specific functional status | Status |
StatusPaymentMin | No | List all payments with a given minimum functional status | Status |
StatusPaymentMax | No | List all payments with a given maximum functional status | Status |
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Finance/Payments/?IdBusiness=2&IdCustomer=64811&DateUpdateMin=2023-07-27T13:54:00
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.
-- Log & events --
API Backoffice - CustomerEvents
CustomerEvents are created by ProAbono in response to certain events that have occurred in ProAbono.
CustomerEvents can be related to an action executed in the backoffice (by an agent), on the hosted pages (by one of your customers), by ProAbono itself.
CustomerEvent Resource
Parameter | Mandatory? | Description | Type |
---|---|---|---|
Id | Yes | Id of the CustomerEvent | String |
DateCreation | Yes | Creation Date of the Event on ProAbono | Datetime |
IdUserCreation | Yes | Id of user who created the Object | Integer |
TypeTrigger | Yes | Type of the Trigger | TypeTrigger |
IdBusiness | Yes | Id of Business related to this event | Integer |
IdSegment | Yes | Id of Segment related to this event | Integer |
IdCustomer | Yes | Id of Customer related to this event | Integer |
IdCustomerBuyer | Yes | Id of CustomerBuyer related to this event | Integer |
IdOffer | No | Id of Offer related to this event | Integer |
IdSubscription | No | Id of Subscription related to this event | Integer |
IdGatewayPermission | No | Id of Gateway Permission related to this event | Integer |
IdInvoiceDebit | No | Id of Invoice related to this event | Integer |
IdInvoiceCredit | No | Id of Credit Note related to this event | Integer |
Each CustomerEvent has attributes which depends on TypeTrigger.
Examples :
- Trigger with type "CustomerAdded". IdCustomer is mandatory.
- Trigger with type "SubscriptionStarted". IdCustomer, IdCustomerBuyer, IdOffer, IdSubscription are mandatory.
- Trigger with type "InvoiceDebitDisputed". IdCustomer, IdCustomerBuyer, IdInvoiceDebit are mandatory.
CustomerEvent Extra Data
Example Request
GET https://via.proabono.com/Notification/CustomerEvents/?IdBusiness=2&Extra=Customer&Extra=Subscription&Extra=AddressBilling
Example Response
{
"Page": 1,
"SizePage": 10,
"Count": 10,
"HasMore": true,
"DateGenerated": "2023-12-06T12:40:05.91Z",
"Items": [
{
"Id": "c03da37a-b5e7-45e2-9008-f0da5fc4df26",
"DateCreation": "2023-12-04T14:56:07.20Z",
"IdUserCreation": 11,
"TypeTrigger": "SubscriptionStarted",
"IdBusiness": 2,
"IdSegment": 3,
"IdOffer": 12436,
"IdCustomer": 978968,
"IdCustomerBuyer": 978968,
"IdSubscription": 813915,
"Customer": {
"Id": 978968,
"DateCreation": "2023-12-03T15:16:09.19Z",
"IdUserCreation": 52,
"DateUpdate": "2023-12-04T14:52:01.28Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"StateLife": "Ok",
"ReferenceCustomer": "123456",
"Name": "John Smith",
"Email": "john@smith.com",
"Language": "en"
},
"AddressBilling": {
"Id": 978968,
"DateUpdate": "2023-12-03T15:16:12.01Z",
"IdUserUpdate": 52,
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 978968,
"Company": "Smith Inc.",
"FirstName": "John",
"LastName": "Smith",
"AddressLine1": "440 Grove Street",
"AddressLine2": "1st Floor",
"ZipCode": "10011",
"City": "New York",
"Country": "US",
"Region": "US-NY",
"Phone" : "1-631-850-3480"
},
"Subscription": {
"Id": 813915,
"DateCreation": "2023-12-04T14:56:07.07Z",
"IdUserCreation": 11,
"DateUpdate": "2023-12-04T14:56:07.20Z",
"IdUserUpdate": 11,
"IdBusiness": 2,
"IdSegment": 3,
"IdOffer": 12436,
"IdCustomer": 978968,
"IdCustomerBuyer": 978968,
"StateSubscription": "Running",
"Name": "Subscription 9",
"TitleLocalized": "Premium Pro+",
"DateStart": "2023-12-04T14:56:07.00Z",
"DatePeriodStart": "2023-12-04T14:56:07.00Z",
"DatePeriodEnd": "2023-01-03T15:16:27.00Z",
"DateTerm": "2023-01-03T15:16:27.00Z",
"IsTrial": false,
"CountPeriodsNonTrial": 1,
"AmountUpFront": 0,
"AmountRecurrence": 100000,
"DurationRecurrence": 1,
"UnitRecurrence": "Month",
"IdSubscriptionBefore": 813797,
"Metadata": {
"Accounting": "cust-123456-small",
"Type": "B2B"
}
}
},
{
...
}
}
],
"Links": [
{
"rel": "next",
"href": "/Notification/CustomerEvents?IdBusiness=2&Extra=Customer&Extra=Subscription&Extra=AddressBilling&page=2"
}
]
}
When retrieving a trigger or a list of CustomerEvents, you can request additionnal data to be returned.
To do so, add extra={resource-type} in the url.
Extra Resource Type |
---|
Business |
Segment |
Agent |
Offer |
Customer |
AddressBilling |
AddressShipping |
CustomerBuyer |
Subscription |
GatewayPermission |
InvoiceDebit |
InvoiceCredit |
List CustomerEvents
Definition
GET https://via.proabono.com/Notification/CustomerEvents?IdBusiness={YourIdBusiness}
Example Request
GET https://via.proabono.com/Notification/CustomerEvents?IdBusiness=2
Example Response
{
"Page": 1,
"SizePage": 5,
"Count": 5,
"HasMore": true,
"DateGenerated": "2023-08-26T21:16:52.61Z",
"Items": [
{
"Id": "c03da37a-b5e7-45e2-9008-f0da5fc4df26",
"DateCreation": "2023-08-26T08:43:15.34Z",
"IdUserCreation": 1097,
"TypeTrigger": "SubscriptionHistory",
"IdBusiness": 2,
"IdSegment": 3,
"IdOffer": 191,
"IdCustomer": 64944,
"IdSubscription": 547
},
{
"Id": "4dda4275-0a15-4a61-bcb4-1a1ed89e495e",
"DateCreation": "2023-08-26T08:43:15.33Z",
"IdUserCreation": 1097,
"TypeTrigger": "SubscriptionStarted",
"IdBusiness": 2,
"IdSegment": 3,
"IdOffer": 191,
"IdCustomer": 64944,
"IdSubscription": 547
},
{
"Id": "7e3d7677-3d8e-4ab0-987c-82cbe76301fd",
"DateCreation": "2023-08-26T08:43:14.62Z",
"IdUserCreation": 1097,
"TypeTrigger": "CustomerSettingsPaymentUpdated",
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 64944
},
{
"Id": "aa773e74-16bb-4af5-b57d-016d6f6cf8b8",
"DateCreation": "2023-08-26T08:43:04.72Z",
"IdUserCreation": 1097,
"TypeTrigger": "CustomerBillingAddressUpdated",
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 64944
},
{
"Id": "7348aab6-821d-4930-b9e6-917e4ef2d5c0",
"DateCreation": "2023-08-26T08:41:29.18Z",
"IdUserCreation": 11,
"TypeTrigger": "CustomerAdded",
"IdBusiness": 2,
"IdSegment": 3,
"IdCustomer": 64944
}
],
"Links": [
{
"rel": "next",
"href": "/Notification/CustomerEvents?sizepage=5&IdBusiness=2&page=2"
}
]
}
Get the collection of CustomerEvents (filtered or not).
Querystring Parameters
Parameter | Required? | Description | Type |
---|---|---|---|
IdBusiness | Yes | Id of your Business | Integer |
IdSegment | No | Id of one of your Segment | Integer |
DateCreationMin | No | List all CustomerEvents created after the date | Datetime |
DateCreationMax | No | List all CustomerEvents created before the date | Datetime |
TypeTrigger | No | List all CustomerEvents with a specific Type of Trigger | TypeTrigger |
IdCustomer | No | List all CustomerEvents related to a specific Customer | Integer |
ReferenceCustomer | No | List all CustomerEvents related to a specific Customer | String |
IdOffer | No | List all CustomerEvents related to a specific Offer | Integer |
ReferenceOffer | No | List all CustomerEvents related to a specific Offer | String |
IdSubscription | No | List all CustomerEvents related to a specific Subscription | Integer |
See CustomerEvent Extra Data if you need more additionnal data to be returned.
You can combine these parameters to get exactly what you are looking for.
Example:
GET /Notification/CustomerEvents/?IdBusiness=2&TypeTrigger=CustomerAdded&DateCreationMin=2023-07-27T13:54:00&Extra=Customer&Extra=AddressBilling
Returns
- HTTP 200 in case of success. Response body contains a Paginated list of requested resources.
- HTTP 204 if there is no result. Response body is Empty.
- In any other cases, response body contains a single error describing the problem.