* new "Manager Secretary" call forwarding type
* new /api/managersecretary
- controls "Manager Secretary" call forwarding auto set
* support Prefer='internal' to avoid all form validations,
and creations as well as no hal is created but json body
is returned instead. only usable on port 1442 for
internal ngcp api clients.
* Role/API valid_uuid() check
Change-Id: I826138d8cdbce737c09c3b98bc7bdd905d09e81c
It's fine to remove read-only fields only if $run==1, but in any
case remove unknown fields.
Also the force-array change broke additional tests, fixed them.
Change-Id: I48ffcf201bd1eedb8fb317f1ca248af9e4a01e60
* map regex fixed
* get_form may return an array with the exceptions now
* use get_item_id consistently
* use warnings and strict
Change-Id: I9f356814ecf4b51613d3aee3782a6b3b91f04cad
which implies, among others, strict and warnings. these should never
be omitted and are one of the most frequent complaints of perlcritic
currently.
as a result TryCatch can be removed (imported by Sipwise::Base).
also, "no Moose" is removed (has no effect).
Change-Id: I901b6a9f0f6d426f62b73e68f2c5ad6365c1eeef
Switch from the discouraged base module to the light-weight parent module.
Also remove some surrounding BEGIN blocks from 'use parent' which are
completely unnecessary.
Change-Id: I3a669e8024f098819be45030ca9d1afa8756105c
+dashboard uses a similar query for the survey
info visible to subscribers, which should now
load faster as well.
+the filter dropdown select+update table was
generally not working properly (MT#17323):
-fnFilter() does net necesarily trigger new
ajax requests, but searches in clientside
table store. the list stays empty, if there
is no direction column present, to match
"in" or "out" literals.
-using sSearch for specifying in/out filter
disallows to enter other search params in
text search field.
+union all now also used for the api
subscriber_id filter
Change-Id: Ia777504b9ade7acb34c66cb899f366ce029c905f
CAUTION: uses some optimized bulk-insert and truncate mechanisms
bypassing DBIC to make it reasonably fast (1M rows up in ~20s).
Optimized CSV download also to use partial writes to avoid
gateway timeouts on huge files.
Allows to handle LNP carriers in /api/lnpcarriers/.
Allows to handle LNP numbers and batch uploads in /api/lnpnumbers/.
Change-Id: I2f659bf5ee53270bedd3bb416a011bddc558b9ae
any *attempt* of a top-up request should be
logged.
+create top-up log records for api
in order to record failed top-up requests as well,
the somewhat tricky thing is to have two
separate transactions here
+propery casting of topup request json field
values to numbers etc., so the transaction for
creating the log entry cannot fail and e.g.
requests with subscriber_id='blah' are recorded
correctly
+new "request_token" parameter for /api/topupvoucher
and /api/topupcash, to identify and filter for
particular requests.
+topup log api resource
+topup log api tests
+fix to correctly reject used vouchers
+topup log panel UI
+fix for balanceintervals.t threaded tests
Change-Id: I86eb845f6173803705b12cc7e5cdbac9a3153a0a
MT#14779 Add default value for the q parameter
MT#14891 Consider form validation for the POST request (create location)
MT#14789 Remove user_agent registration parameter
Change-Id: I9f81ec3ec5c308c731b3dfe6aa5f075c7d7b50ab
+ synchronized contract balance catchup
+ balance interval resizing upon profile package transitions
+ dynamic interval length, interval start, carry-over propagation, ..
+ end-of-month 'preserve' mode correction for strictly aligned month intervals for start_mode=customer "create" timestamp
+ new api/balanceintervals resource to inspect contracts' balance interval histories
+ updated affected panel UI controllers
+ test case with time warps using Time::Fake
caveats:
- creating an invoice for a given 'period' (month) has to be refactored to select a disitnct balance interval. right now it takes the last interval in the month specified.
- generate_invoice.pl is broken and needs a major refactoring
Change-Id: I7bb54a83b76e510b1baa573a986d05400a7fec1e
-properly validate billing mapping intervals
-api/contracts and api/customers complete
+the problem with updating the "prepaid" preference remains at the moment
+billing_mappings field contains future (editable) mappings only, the full schedule is given in a separate field
+hal-links to all occurring billing profiles and networks
-extended tests: api-customer.t and api-contract.t
-api-billingnetworks.t test
-billing networks panel controller
+search by enclosed IP address
-panel UIs for billing networks, customers, contracts
+past billing mapping intervals that cannot be edited are displayed by a seperate hfh "block" part of the billing_profiles repeatable
-profile packages api, UI
+terminating billing profiles (MT#8645) will be broken
+fixed now: profile cannot be terminated unless there are:
-zero non-terminated customers, whose mappings contain the profile with future or open end
-zero profile packages, that link to the profile in either one of their initial-, underrun- or topup profile sets
+panel edit should work, termination wip
+topup_profiles w/o amounts
+contracts/customers API profile_package_id field:
+apply the package's initial profiles
+api/customer and api/contract profile definition modes (id/profiles/package)
+api OK, api-customer.t tests
+customer and contract panel UI with selector to specify actual billing mapping, schedule or profile package (same as api)
+terminate logic harmonized: profiles, networks, packages
+api tests updated
+prepare for merging: cleanup, enable tests
Change-Id: I6c0dec72f490b5731fc673cd393d6aeb08dd8143
the journal module introduces a change history of
resources modified by api invocations. the history of
the 'customer' resource demo is accessible at
/api/customers/x/journal.
Change-Id: I4d5d11bc3e35160feed587ce4c1db565991866b2
Sometimes the value is a ref to some other var, so a simple
if($foo){} is not sufficient, as it would be true, althouhg we're
just checking if it's defined and has a value.
- Migrate from custom subscriber struct to normal resultset.
- Properly handle boolean input in form processing (convert to
int, otherwise formhandler fails while cloning when doing the
processing).
- Properly handle profile set editing in API
- Cleanup of log messages
- let custom roles "derive" from main api role
- have an item_rs in each role
- call search logic after each item_rs call automatically
- render search query doc dynamically
Cleanup unnecessary realms.
Use roles instead of realms for authz.
HTTP basic auth for api access.
Use admin/reseller roles instead of api_admin/api_reseller.
Fix API::Root invalid_user detaching.
We should now have working baselines for
- collections (SystemContacts)
- items (SystemContactsItem)
with support for
- collections: OPTIONS, HEAD, GET, POST
- items: OPTIONS, HEAD, GET, PUT, PATCH, DELETE
covered by according tests and with a proper API documentation.
Clearly distinguish between systemcontacts (those without reseller) from
customercontacts (those with resellers). Separating them frees us from
having to handle reseller_id magic.
Use /api/foo/ for collections and /api/foo/{:id} for items to easily
distinguish between them. Also, we want to use query params for limiting
the collections, e.g. /api/foo/?name={:name}&something={:else}, which in
turn returns a filtered collection again. This makes it difficult then to
fetch items via /api/foo/?id={:id}, so use /api/foo/{:id} instead.
Also move rest of common functions into API Role.