Authentication
A session and grant cookie must accompany each request. You can generate these cookies by logging in to the control panel with a browser, and extract them from any request after logging in. Log out of your browser after extracting your cookies, so that the session you created will be used only for the API access. Failure to provide a valid grant and session will result in a 401 http return code with no further information.
Base URL
API requests are performed against the base URL https://www.uniweb.no/api/partner. The relative path to each operation is given below, together with the method verb.
Operations
Subscription List
GET /subscriptions
Returns a JSON Array of all subscriptions. Complex products will have a list of extensions to describe the product composition. Example output with one list element:
[
{
"id": 1234,
"customer": 1234,
"username": "domain.no",
"tsig": "secret", // Only for domains
"product": {
"id": 102091,
"text": ".no domene",
"code": "dns"
},
"otc": 60.0,
"rc": 179.0,
"inOtc": 50.0,
"inRc": 85.50,
"renew": true,
"created": "2020-05-08",
"period": {
"from": "2020-05-08",
"to": "2021-03-09",
"qty": 1
},
disk: n,
xfer: n,
concurrency: n,
cpu: n,
mem: n,
dmem: n
}
]
Subscription List For Customer
GET /subscriptions/customer/{id}
Returns a JSON Array of all subscriptions for the given customer. Same output as above.
Subscription
GET /subscriptions/{id}
Return a JSON Object for the given subscription. Same output as /subscriptions LIST call.
Get Subscription by type and username
GET /subscriptions/{type}/{username}
Return a JSON Object for the given subscription, defined by type and username (ex type=dns, username=domain.no or type=ssl, username=domain.no). Same output as /subscriptions LIST call. In case of the subscription beiing an ssl certificat, the optional properties cert, ca, key and subjectAltnames may be populated.
Customer List
GET /customers
Returns a JSON Array of all customers. Example output with one list element:
[
{
"id": 1234,
"name":"Customer Name AS",
"street": "Street address",
"zip": "1234",
"city": "CITY",
"orgId": "123456789",
"type": "Company", // [Company | Individual ]
"username": "someId",
"subscriptionContact": {
"id": 1234,
"name": "Contact Name",
"email": "contact@email.address"
}
}
]
Customer Query
POST /customers/query
Returns a JSON Array of customers matching the query object. Query properties are currently not described in the API. Example output with one list element:
[
{
"id": 1234,
"name":"Customer Name AS",
"street": "Street address",
"zip": "1234",
"city": "CITY",
"orgId": "123456789",
"type": "Company", // [Company | Individual ]
"username": "someId",
"subscriptionContact": {
"id": 1234,
"name": "Contact Name",
"email": "contact@email.address"
}
}
]
Customer List For Order
GET /orders/{orderId}/customers
Returns a JSON Array of all customers for the given order. Same output as Customer List.
Create Customer
POST /customers
Creates a new customer. The complete customer object is returned in JSON format. Example of POST payload:
{
"name":"Customer Name AS",
"street": "Street address",
"street2": "Street address2", // Optional
"orgId": "1234",
"zip": "1234",
"city": "CITY",
"orgId": "123456789",
"country", "NO",
"type": "Company", // [Company | Individual ]
"contactName": "Contact Name",
"contactEmail": "contact@email.address",
"mobile": "+47.12345678", // Will be set as customer AND contact mobile
"password": "secret", // Optional
"username": "yourUniqueId"
}
The result payload is similar to a single entry from the GET /customers resource.
Product List
GET /products
Returns a JSON Array of all products. Optional query parameters:
- code=[dns,tws] - Filter only products matching the code
Example output:
[
{
"id":102091,
"text":".no Domene",
"period":"1Y",
"vatFactor":1.25,
"type":"dns", // Type has internal sematics, but can also be used to group products in Partner systems if needed
"size":1,
"sizeUnit":"count" // [count,bytes,bytes1024,bitPerSecond,core]
},
{
"id":166512,
"text":"Managed Backup Storage",
"period":"3M",
"vatFactor":1.25,
"type":"backup-storage",
"size":1073741824,
"sizeUnit":"bytes1024"
},
{
"id":166392,
"text":"VPS CPU 1/4 Core",
"period":"3M",
"vatFactor":1.25,
"type":"vps-cpu",
"cart":false,
"size":1,
"sizeUnit":"core"
}
]
Order Query
POST /orders/query
Returns a JSON Array of orders/invoices matching query
Example output:
[
{
"id": 123456,
"customer": {
"id": 123456,
"username": "654321",
"partnerCustomer": false,
"name": "Kunde AS",
"brand": 123,
"partnerName": "Partner AS",
"type": "Company"
},
"created": "2022-01-25",
"contact": {
"id": 1234,
"name": "Ola Hansen"
},
"invoiceNo": 1030455,
"invoiceId": "f5ee8e5b-86e2-49de-92ec-486f4fef3097",
"externalInvoiceNo": "1030455",
"invoiceSum": 321.0,
"invoiceDate": "2022-09-29",
"invoiceDue": "2022-10-13",
"invoiceExported": "2022-09-29",
"paid": 321.0,
"credited": 0.0,
"lost": 0.0,
"archiveOnly": false,
"waived": 0.0,
"shareableRef": "f1a5e72f-e049-4524-bc1d-1fc8055eae35",
"invoiceType": "PayEx360"
},
...
]
Order List
GET /orders
Returns a JSON Array of all orders. Add parameter latestSeenInvoiceNo=nnn to only pick up invoiced orders newer than previously seen id
Example output:
[
{
"id":2003004,
"created":"2020-01-12",
"invoiceNo":"012345678",
"invoiceDate":"2020-12-30",
"invoiceDue":"2021-01-31",
"invoiceSum":1000.0,
"paid":0.0
}
]
Get Order
GET /orders/{id}
Returns a spesific order.
Example output:
[
{
"id":2003004,
"created":"2020-01-12",
"invoiceNo":"012345678",
"invoiceDate":"2020-12-30",
"invoiceDue":"2021-01-31",
"invoiceSum":1000.0,
"paid":0.0
}
]
Orderline List
GET /orders/{id}/orderlines
Returns a JSON Array of all orderlines on the given order.
Example output:
[
{
"id":123456,
"order":2003004,
"created":"2020-12-30",
"text":"Webhotell XZY 5GB fra 30.12.2020 til 30.12.2021",
"type":"Create", // [Create|Renew|Change|Burst]
"product":166203,
"price":1000.0,
"enduserPrice", 1500.0,
"qty":1,
"sumEx":1000.0,
"periodId":123456,
"periodFrom":"2020-30-12",
"periodTo":"2021-30-12",
}
]
Pricelist List
GET /pricelists
Returns a JSON Array of all custom partner price lists. Example output with one list element:
[
{
"id":1234,
"name":"My pricelist"
}
]
Pricelist information
GET /pricelists/{id}
Returns a JSON object of all price list prices for the given pricelist. Example output:
[
{
"pricelist":1234,
"product":102091,
"rc":179.0,
"otc":60.0,
"forsale":true // Disable forsale to remove buying option from Control Panel and Shopping Cart
}
]
Email Count
GET /email/count
Returns the number of email addresses under the current partner. Example:
{
"count":1234
}
Migrate customer
POST /migrate
Schedule migration of a customer and all related services. This endpoint will only have affect after a specific migration process has been initiated from our end.
Every entity representing a subscription can include arbitrary metadata in the metadata attribute to ease migration. The data will be deleted after the migration has been completed.
Please note that email addresses must be unwrapped if an account has an alias in a different domain. This must be communicated as an account + forward.
{
"callbackURL:": "",
"customer": {
"name":"Customer Name AS",
"dueDays": 14, // Defaults to 14
"street": "Street address",
"street2": "Street address2", // Optional
"zip": "1234",
"city": "CITY",
"vat": true,
"password": "secret",
"countryCode": "NO",
"orgId": "123456789",
"type": "Company", // [Company | Individual ]
"partner": false, // True for partner
"owningPartner": 1234, // The owning partner, either brand partner or reseller of the brand
"owningPartnerUsername": "1234", // The owning partner, either brand partner or reseller of the brand
"mute": false // If this customer is type Partner, mute can be used to avoid sending emails to the end customers of the partner,
"hasCronjobs": false, // If true, a hint about Webcron is included in the migration welcome email to the customer
"invoiceTransport": "EMAIL", // [EMAIL, MAIL, EHF, EFAKTURA, AVTALEGIRO]
"grants": [
{
"email": "email-or-customer-id",
"allAccess": true,
"su": true,
"password" : "password-if-new-principal",
"domain": false,
"mail": false,
"webhosting": false,
"serverhosting": false,
"backup": false,
"billing": false,
}
],
"subscriptionContact": {
"name": "Contact Name",
"email": "contact@email.address",
"phone": "33349700"
},
"invoiceContact": {
"name": "Contact Name",
"email": "contact@email.address",
"phone": "33349700",
},
"contacts": [
{
"name": "Contact Name",
"email": "contact@email.address",
"phone": "33349700",
"title": "CEO",
}
],
"pricelist": 1234, // Id of the pricelist to assign to this customer
"username": "yourUniqueId",
},
"mailbundle": {
"product": 1234,
"period": {
"from": "2020-01-01",
"to": "2021-01-01"
},
"renew": true
},
"clusters": [
{
"reuse": false, // Set to true if this is an additional service migration for existing customer
"sslCertificates": [
{
"username": "GlobalSign-NNN-example.com",
"fqdns": ["example.com", "www.example.com"],
"keystore": "keystore-data",
"product": 1234,
"period": {
"from": "2020-01-01",
"to": "2021-01-01"
},
"renew": true
},
],
"webaccounts": [
{
"product": 12345,
"url": "sftp://username:password@host/path/to/shared/files", // Mounted as 'shared' for every webroot
"webroots": [
{
"url": "sftp://username:password@host/path/to/files",
"phpVersion": "7.2",
"vhostName": "www",
"hosts": ["domain.com", "www.domain.com", "otherdomain.com", "www.otherdomain.com"],
"forceSSL": false // Should we force redirect to SSL? Default false
}
],
"databases": [
{
"url": "sftp://username:password@host/path/to/dumpfile",
"dbname": "mydbname",
"renew": true,
"suspend": false,
"product": 12346,
"password": "secret",
"metadata": {}
}
],
"metadata": {},
"renew": true,
"suspend": false,
"period": {
"from": "2020-01-01",
"to": "2021-01-01"
},
}
],
"databases": [
{
"url": "sftp://username:password@host/path/to/dumpfile",
"dbname": "mydbname",
"renew": true,
"suspend": false,
"product": 12346,
"metadata": {},
"password": "secret",
"period": {
"from": "2020-01-01",
"to": "2021-01-01"
}
}
],
"domains": [
{
"reuse": false, // Set to true if this is an additional service migration for an existing domain. All data for the domain is ignored, except for the zone which is used to retrieve the existing subscription (required to exist)
"zone": "domain.no",
"dns": true, // Should we create a DNS zone?
"renew": true,
"axfrHost": "some.ns.hostname",
"suspend": false,
"registrar": true, // Are we the registrar for this domain?
"metadata": {},
"password": "secret",
"period": {
"from": "2020-01-01",
"to": "2021-01-01"
},
"keySigningKey": "Private-key-format: v1.3
Algorithm: 7 (NSEC3RSASHA1)
Modulus: wNL8K7HmEn8rkt5LPaKrhAOCMuKOXYMSLSjo6ni7G/d8SwAySfesq1Yp0UqQfNnrx3Xl3Lr6h2gRlcUTCKKB5zR5gmW0rBhGtgmy16WNxln+I8hjBzhKdjBfoCvw5mfrCuZbDocaNFck96H3VfmRMoCUJVbcgoe4DM4/2VKgfQQM6uqNwTe72avM11ZVCG+mD8S6rIVESRieGS6W2fWgLbyEOM7cFUyKGKODteAdMQo5HdHFnjpyA9fDClW/3FH9VGX4sxeqRLAtjTQygGnZIxRpEAD76pOYQAC8HxJGHlF3rPvs6Vd3XgLEOGIavtPCSrOFdF13+0H0mUmN2N68tw==
PublicExponent: AQAB
PrivateExponent: NqhXxMcDsYCMyG/sogcHWT9pW6Uut8EcmOJ8y2H3n+DSQaxHlQH41wRwjBv3wvw+wmZgBuaVd2Z/fZXEZHE0I2aTfuv3f8TN3nH3WPtbqbr+uAPoVjaVnNTvdkaeXaFdVdSgQQj425dMKkmmA5/fkZIy7DaoAPQZrr+UB7VNOsI5AQWFFM1CNNy7yg5bXCg2st5OTIITmZp4kH9mDXdejWFAxdf0gMZBbhBxSVTOAcXD8h93zCSFRCtZcU3Uu+Rn29KD4XOraQm+21R4crvxjrXOBGvjcRSVDgFMIhf/rofUvszek+Wnxb1DGd0o4APD5p3HrvQyqtie7b2CAiGYGQ==
Prime1: /yFWuBqgjWuPiZco2VUBubV/SX1XgkTR0OrGrxHdVu0cmemKOe5GCF6+XOmgjnCOd+vWp3FgtGWvgscR9O5DrLXwTYUpdIHb3k581F8i6jjuyZlGsFT9CK4ruNzn4gH+KNr1cbLek4Of7eBYFORiWIbsnFZ/Mds2L71kHjvAnM=
Prime2: wXtFAkD0bwuNoDBssEQveiof4RTzXY1Xl7L+d9F7dHBw2gGa/Y4VgKarF23Wx+VpPUw55qjO+/KQ3nUuf8Sr5cRfqBbO40E2b1JQ37yj2UHrYY1A4AgUIlzxQqQBS2TyJtjsTdxG5dKviGJkTs4HQbyRnnFiE2E1JehZwOInV60=
Exponent1: SpWde27VVuKF8MxO9dIjEZyGnF33cEko6KGAqO032rg3dWaVrcmoU8Sd5cUIfXOTM0YQRmZvMkJBVkd7OghMRl7EMki0GpHe+Jiw90/wIAf8o16jGgJAn9NyuDXoPFARPH/R64oVPCkLlgy4dseXeVlEDZOTohFO4cJZmaWxAb8=
Exponent2: cyxR8/l+h+u0rrqkuHieWnZg67dw9yuADMl8OQ72EmYsh8JZpL3DhwWvqw6zX+LsNpT9kpTCQbAvFH1k5KHKQcgXuRN6rETRhorVoZnFXzqiRzuydqnYcmwpIaZHLv40N3PBlsedXImB/Am19EMohrUdadfMrgSbgqlBZFQ7XzE=
Coefficient: 57pMrCanfFcXBvn5AE5GB9IJDt8TTiFQx9KiEbpw/4Zvk0xXb255O0ZKUu67NG62IDCtDPtoX00yfNbKDh1mxYR99R4T7F1fXJWbt8w43SOljTbfAqk4BtlnjxF7V8nTbcXb0vEt2qNre8fnFEVczXTMNu9zbN9i3wykkClVyHo=
Created: 20150416123544
Publish: 20150416123544
Activate: 20150416123544",
"zoneSigningKey": "Private-key-format: v1.3
Algorithm: 7 (NSEC3RSASHA1)
Modulus: lyHj1Y9D7jcYHyEET53K4VBl4E5dh5a2wSQGpBpJz/w/hyCxqaseil3uyyBakZ9HyHfc+3xt0dTJHTDpmDImIbvsFqzTHDYgqVhlFk13k++EVuHo6a6VHlUf+tWl2wbdlo5VdEXSzksXRyMRUp/bbqhBIfRYwZQyXmQlCpcAt79NBRxK/ENXpkq5jjbCFNXkyTrX6KE/SH4BnF9c8ENl0ENXVJB0Y6eJOv7jFPXvG6Y68RZEfV9o3ZfJ68STHFyqC9HP8DRkl4p2mttTrL2I06SuIxwisOTk9EKFJ/cVY+e5G3Yk3BgcpLebL2VX7rjMNCh3ptYgVr1/x58LIH6umw==
PublicExponent: AQAB
PrivateExponent: FGNNAf1Os68ZAPIKS9dEjDq1U5oewfDR/KIohzDIrlcgFtGRRgtAlnfvg9V8glKTc3bAB+kUQ49KBjcX/CEfxcM9KR3taMvgghfbozOWIw3Xs4TMT+HuWeYv5z21HyQA9pOC8amNs6irnjwb1SKdjoMCLltxMcQVO2iVGqWeQitGXQ0JFY61Qg4eDNKXCKq83JXKJsJlagzKnvvUX+kKCKybVinn2IDSf+/pT9+5yCqWRKqh5cX6g2AHJ4OXbAojD88lRgnzl/6f+RYSZtGrPwhfegaSlX8JGRE/lYmmwmjbOaDqADhMt0JTUIx7JL8vpt8iDEa5tJ7K0X7pOWjPqQ==
Prime1: xpREAckGPHfBsoyMp9DCl56aR79alNy5u0+anE5tOuMEVJwLhnjAkGPl8Amkbv5HT3Hq++CDgq1C6/ciXH1Y4RL4g56QdUbMcbNJFgWuHTeF0ZEFPtN/IC1AlIh3VQDC97ofDnU4eK8smUDC++uNBMdXsQsZOoOimWgArPezixc=
Prime2: wtVlwtO/cUZa7SaJLwyD9DRPAG/MCDJP4coc//7UzvEbkXOY0mXFrCv0oaBLv4gQHjhnSwiFXs8rIEcxztqA0GpSRh3yiDRjVHR/seKXe5K/9UIyyTkrjMYDVwSFCrcvXSZEEvstcnUI+n5+WNl+aGszQeuMFBYYR/nRMZY3mx0=
Exponent1: kOe6ZI8bhN5isvbK4N5+UQOEU1y4La6PvSpzSSIVpQXpsBAafOr6oaK0NJ/kpLXatYdMULZ5YM8r6WJyaYlyZPNh8zGu+lVKdKG+cFp+voU4mj8306ujtYgv+vNGGPowS3M+nF8/cRlq8v4GCqzNP7JzNBcENuW9rjHtZEpwcss=
Exponent2: IG/kzEXypoo/EyKKTmH4Cg03Zew2/NpbgGI0Z85mYbm0jEfBlq3I9jwvM0V7tvyRKmbbk5tskPdOx8Xyney06334CqJrwY9vRh1LMTN3YuRwvwVxbRzuijZhUfh3qewLn6eCR+K3k0m23/V1VZeIOxw14XC01pdDHaCS2n2W7mU=
Coefficient: cKML9rxRc76SKNrfe26l2NlOoVAvoG/HELO+dyWjb5hQ1ZBxCf4PmGqkZfS7qklZudZhkyEaH1h0eZJOpkIYg7+uUGObZyC66OIknv+/MNIHCFqwg+g/+PcrNea1mJX9kjAV030XAzwgBzrLX1Prp3tWSnAMyOkVeYvTC/iTQGo=
Created: 20150416123544
Publish: 20150416123544
Activate: 20150416123544",
"combinedSigningKey": "",
"records": [
{ // Populate relevant properties based on record type
"type": "AAAA", // [A, AAAA, NS, MX, SRV, CNAME, TXT, SSHFP, TLSA, CAA, NAPTR, WEBFORWARD],
"name": "record.domain.no",
"address": "", // Relevant for A, AAAA
"target": "", // Relevant for NS, MX, SRV
"url": "", // Relevant for WEBFORWARD
"weight": "", // Relevant for SRV
"port": "", // Relevant for SRV
"algorithm":, "", // Relevant for SSHFP
"digest": "", // Relevant for SSHFP
"fingerprint": "", // Relevant for SSHFP
"certificateUsage": "", // Relevant for TLSA
"selector": "", // Relevant for TLSA
"matchingType": "", // Relevant for TLSA
"data": "", // Relevant for TLSA
"flags": "", // Relevant for CAA, NAPTR
"tag": "", // Relevant for CAA
"value": "", // Relevant for CAA
"order": "", // Relevant for NAPTR
"preference": "", // Relevant for NAPTR
"service": "", // Relevant for NAPTR
"regexp": "", // Relevant for NAPTR
"replacement": "", // Relevant for NAPTR
"ttl": 10800, // Relevant for all record types
"priority":, 10, // Relevant for MX, SRV
"alias": "alias", // Relevant for CNAME
"strings": ["Strings", "for", "TXT", "records"], // Relevant for TXT
"drop": false // Set to true if you are using AXFR and want us to remove a record which matches the type and name for this record
},
{
"type": "WEBFORWARD",
"forwardType": "WEBFORWARD_FRAME", // WEBFORWARD_FRAME, WEBFORWARD_30{1,2,7,8}
"name": "www.domain.no",
"url": "https://domain.no"
}
]
}
],
"mailAccounts": [
{
"renew": true,
"suspend": false,
"period": {
"from": "2020-01-01",
"to": "2021-01-01"
},
"name": "Full Name", // Optional
"localPart": "somename",
"password": "secret",
"metadata": {},
"keep": true, // Keep incoming email, defaults to true
"migrate": true, // Migrate mail from existing mailstore, defaults to true
"forwards": [
"some@other.address",
"another@address"
],
"aliases": [
"alias1",
"alias2"
],
"blocklist": [
"badman1@domain.no"
],
"whitelist": [
"bestfriend@family.no"
],
"contacts": [
"vcard1",
"vcard2"
],
"vacationMessage": "Talk to you later",
"vacationFrom": "2020-07-06",
"vacationTo": "2020-14-06",
"url": "sftp://username:password@host/path/to/files"
}
],
]
}
]
}
List open migrations
GET /migrate/list
List currently open customer migrations for the authenticated Partner. Returns a JSONArray where each item represents each scheduled task. Should be used to control migration throttling.
Create domain
POST /domains
Create a new domain subscription
{
"customer": 1234,
"domain": "domain.no",
"createDNS": true,
"mute": true, // Default false - disables mail notification of new service
"zoneFile": "", // Optional zone content to import, bind format
"axfrHost": "", // Optional host to do axfr for zone record import
"poll", false // Poll until all nameservers have propagated the domain
}
Create DNS Record
POST /domain/{idnName}/dns/record
Create a new dns record. Format is the same as for migration DNS records. WEBFORWARD is also supported here. The domain must be a valid domain subscription on a customer reciding under the authenticated partner.
List DNS Records
GET /domain/{idnName}/dns/record
List DNS Records. Only available for clustered domains.
Delete DNS Record
DELETE /domain/{idnName}/dns/record/{oneId}
Delete DNS Record. ID from list-dns-records.
Create mail account
POST /mail/accounts
Create a new mail account. If the customer doesn't have a valid mail bundle, one will automatically be created.
{
"customer": 1234,
"domain": "domain.no",
"mute": true, // Default false - disables mail notification of new service
"localpart": "john_doe", // Prefix before @ in mail address
"name": "John Doe",
"aliases": []
"poll", false // Poll until all nameservers have propagated the domain
}
Create mail bundle
POST /mail/bundle
Create a new mail bundle.
{
"customer": 1234,
"productType": "Essential" // Options ["Essential, "Unlimited"], defaults to "Essential"
"domainName": "foo.bar",
"mute": true, // Default false - disables mail notification of new service or changed product
}
Create web account
POST /web
Create a new web account.
{
"customer": 1234,
"product": 12345,
"mute": true, // Default false - disables mail notification of new service
"platform", "Linux" // Options ["Linux"]
}
Create webroot
POST /web/webroot
Create a new webroot for an existing web account.
{
"account": 1234, // Id of account subscription
"name": "www2", // Name of webroot, only appliccable for TWS accounts
}
Add domain to webroot
POST /web/webroot/domain
Add domain to a web root
{
"account": 1234, // Id of account subscription,
"webroot": "www2" // Name of the webroot. For Cluster services, retrieve the webroot name from the webroot subscription username property
"domain": "domain.no", // Must reference a valid domain subscription on the customer owning the account. www.$domain is automatically added
"removeConflictingCustomRecords", true // Should we remove any potentially conflicting custom records to make sure sysapi manages the domain?
}
Set DNSSEC Keys for Domain
POST /domain/{domain}/dnssec
Add domain to a web root
"keySigningKey": "Private-key-format: v1.3
Algorithm: 7 (NSEC3RSASHA1)
Modulus: wNL8K7HmEn8rkt5LPaKrhAOCMuKOXYMSLSjo6ni7G/d8SwAySfesq1Yp0UqQfNnrx3Xl3Lr6h2gRlcUTCKKB5zR5gmW0rBhGtgmy16WNxln+I8hjBzhKdjBfoCvw5mfrCuZbDocaNFck96H3VfmRMoCUJVbcgoe4DM4/2VKgfQQM6uqNwTe72avM11ZVCG+mD8S6rIVESRieGS6W2fWgLbyEOM7cFUyKGKODteAdMQo5HdHFnjpyA9fDClW/3FH9VGX4sxeqRLAtjTQygGnZIxRpEAD76pOYQAC8HxJGHlF3rPvs6Vd3XgLEOGIavtPCSrOFdF13+0H0mUmN2N68tw==
PublicExponent: AQAB
PrivateExponent: NqhXxMcDsYCMyG/sogcHWT9pW6Uut8EcmOJ8y2H3n+DSQaxHlQH41wRwjBv3wvw+wmZgBuaVd2Z/fZXEZHE0I2aTfuv3f8TN3nH3WPtbqbr+uAPoVjaVnNTvdkaeXaFdVdSgQQj425dMKkmmA5/fkZIy7DaoAPQZrr+UB7VNOsI5AQWFFM1CNNy7yg5bXCg2st5OTIITmZp4kH9mDXdejWFAxdf0gMZBbhBxSVTOAcXD8h93zCSFRCtZcU3Uu+Rn29KD4XOraQm+21R4crvxjrXOBGvjcRSVDgFMIhf/rofUvszek+Wnxb1DGd0o4APD5p3HrvQyqtie7b2CAiGYGQ==
Prime1: /yFWuBqgjWuPiZco2VUBubV/SX1XgkTR0OrGrxHdVu0cmemKOe5GCF6+XOmgjnCOd+vWp3FgtGWvgscR9O5DrLXwTYUpdIHb3k581F8i6jjuyZlGsFT9CK4ruNzn4gH+KNr1cbLek4Of7eBYFORiWIbsnFZ/Mds2L71kHjvAnM=
Prime2: wXtFAkD0bwuNoDBssEQveiof4RTzXY1Xl7L+d9F7dHBw2gGa/Y4VgKarF23Wx+VpPUw55qjO+/KQ3nUuf8Sr5cRfqBbO40E2b1JQ37yj2UHrYY1A4AgUIlzxQqQBS2TyJtjsTdxG5dKviGJkTs4HQbyRnnFiE2E1JehZwOInV60=
Exponent1: SpWde27VVuKF8MxO9dIjEZyGnF33cEko6KGAqO032rg3dWaVrcmoU8Sd5cUIfXOTM0YQRmZvMkJBVkd7OghMRl7EMki0GpHe+Jiw90/wIAf8o16jGgJAn9NyuDXoPFARPH/R64oVPCkLlgy4dseXeVlEDZOTohFO4cJZmaWxAb8=
Exponent2: cyxR8/l+h+u0rrqkuHieWnZg67dw9yuADMl8OQ72EmYsh8JZpL3DhwWvqw6zX+LsNpT9kpTCQbAvFH1k5KHKQcgXuRN6rETRhorVoZnFXzqiRzuydqnYcmwpIaZHLv40N3PBlsedXImB/Am19EMohrUdadfMrgSbgqlBZFQ7XzE=
Coefficient: 57pMrCanfFcXBvn5AE5GB9IJDt8TTiFQx9KiEbpw/4Zvk0xXb255O0ZKUu67NG62IDCtDPtoX00yfNbKDh1mxYR99R4T7F1fXJWbt8w43SOljTbfAqk4BtlnjxF7V8nTbcXb0vEt2qNre8fnFEVczXTMNu9zbN9i3wykkClVyHo=
Created: 20150416123544
Publish: 20150416123544
Activate: 20150416123544",
"zoneSigningKey": "Private-key-format: v1.3
Algorithm: 7 (NSEC3RSASHA1)
Modulus: lyHj1Y9D7jcYHyEET53K4VBl4E5dh5a2wSQGpBpJz/w/hyCxqaseil3uyyBakZ9HyHfc+3xt0dTJHTDpmDImIbvsFqzTHDYgqVhlFk13k++EVuHo6a6VHlUf+tWl2wbdlo5VdEXSzksXRyMRUp/bbqhBIfRYwZQyXmQlCpcAt79NBRxK/ENXpkq5jjbCFNXkyTrX6KE/SH4BnF9c8ENl0ENXVJB0Y6eJOv7jFPXvG6Y68RZEfV9o3ZfJ68STHFyqC9HP8DRkl4p2mttTrL2I06SuIxwisOTk9EKFJ/cVY+e5G3Yk3BgcpLebL2VX7rjMNCh3ptYgVr1/x58LIH6umw==
PublicExponent: AQAB
PrivateExponent: FGNNAf1Os68ZAPIKS9dEjDq1U5oewfDR/KIohzDIrlcgFtGRRgtAlnfvg9V8glKTc3bAB+kUQ49KBjcX/CEfxcM9KR3taMvgghfbozOWIw3Xs4TMT+HuWeYv5z21HyQA9pOC8amNs6irnjwb1SKdjoMCLltxMcQVO2iVGqWeQitGXQ0JFY61Qg4eDNKXCKq83JXKJsJlagzKnvvUX+kKCKybVinn2IDSf+/pT9+5yCqWRKqh5cX6g2AHJ4OXbAojD88lRgnzl/6f+RYSZtGrPwhfegaSlX8JGRE/lYmmwmjbOaDqADhMt0JTUIx7JL8vpt8iDEa5tJ7K0X7pOWjPqQ==
Prime1: xpREAckGPHfBsoyMp9DCl56aR79alNy5u0+anE5tOuMEVJwLhnjAkGPl8Amkbv5HT3Hq++CDgq1C6/ciXH1Y4RL4g56QdUbMcbNJFgWuHTeF0ZEFPtN/IC1AlIh3VQDC97ofDnU4eK8smUDC++uNBMdXsQsZOoOimWgArPezixc=
Prime2: wtVlwtO/cUZa7SaJLwyD9DRPAG/MCDJP4coc//7UzvEbkXOY0mXFrCv0oaBLv4gQHjhnSwiFXs8rIEcxztqA0GpSRh3yiDRjVHR/seKXe5K/9UIyyTkrjMYDVwSFCrcvXSZEEvstcnUI+n5+WNl+aGszQeuMFBYYR/nRMZY3mx0=
Exponent1: kOe6ZI8bhN5isvbK4N5+UQOEU1y4La6PvSpzSSIVpQXpsBAafOr6oaK0NJ/kpLXatYdMULZ5YM8r6WJyaYlyZPNh8zGu+lVKdKG+cFp+voU4mj8306ujtYgv+vNGGPowS3M+nF8/cRlq8v4GCqzNP7JzNBcENuW9rjHtZEpwcss=
Exponent2: IG/kzEXypoo/EyKKTmH4Cg03Zew2/NpbgGI0Z85mYbm0jEfBlq3I9jwvM0V7tvyRKmbbk5tskPdOx8Xyney06334CqJrwY9vRh1LMTN3YuRwvwVxbRzuijZhUfh3qewLn6eCR+K3k0m23/V1VZeIOxw14XC01pdDHaCS2n2W7mU=
Coefficient: cKML9rxRc76SKNrfe26l2NlOoVAvoG/HELO+dyWjb5hQ1ZBxCf4PmGqkZfS7qklZudZhkyEaH1h0eZJOpkIYg7+uUGObZyC66OIknv+/MNIHCFqwg+g/+PcrNea1mJX9kjAV030XAzwgBzrLX1Prp3tWSnAMyOkVeYvTC/iTQGo=
Created: 20150416123544
Publish: 20150416123544
Activate: 20150416123544"