clawd/skills/openprovider/SKILL.md

90 lines
2.8 KiB
Markdown

# OpenProvider Skill
Manage domains at OpenProvider via REST API.
## Credentials
File: `~/.config/openprovider.env`
```
OP_USERNAME=johan.jongsma@iasobackup.com
OP_PASSWORD=!!Helder06
```
## Authentication
Tokens are short-lived. Get a new one each session:
```bash
TOKEN=$(curl -s -X POST "https://api.openprovider.eu/v1beta/auth/login" \
-H "Content-Type: application/json" \
-d '{"username":"johan.jongsma@iasobackup.com","password":"!!Helder06"}' \
| python3 -c "import json,sys;print(json.load(sys.stdin)['data']['token'])")
```
## Common Operations
### List all domains
```bash
curl -s "https://api.openprovider.eu/v1beta/domains" \
-H "Authorization: Bearer $TOKEN" | python3 -c "
import json,sys
d=json.load(sys.stdin)
for dom in d['data']['results']:
name = dom['domain']['name'] + '.' + dom['domain']['extension']
print(f\"{name:30s} id={dom['id']} exp={dom.get('expiration_date','')} status={dom.get('status','')}\")
"
```
### Change nameservers
```bash
curl -s -X PUT "https://api.openprovider.eu/v1beta/domains/{DOMAIN_ID}" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name_servers":[{"name":"ns1.example.com"},{"name":"ns2.example.com"}]}'
```
### Check domain availability
```bash
curl -s "https://api.openprovider.eu/v1beta/domains/check" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"domains":[{"name":"example","extension":"com"}]}'
```
### Get TLD pricing
```bash
curl -s "https://api.openprovider.eu/v1beta/tlds/{EXT}?with_price=true" \
-H "Authorization: Bearer $TOKEN"
```
Prices returned as `reseller` (our cost, EUR) and `product` (retail, USD).
### Get domain details
```bash
curl -s "https://api.openprovider.eu/v1beta/domains/{DOMAIN_ID}" \
-H "Authorization: Bearer $TOKEN"
```
## Domain IDs (current)
| Domain | ID |
|---|---|
| busel.nl | 4144291 |
| e-consultants.nl | 4156002 |
| harryhaasjes.nl | 4167447 |
| johanjongsma.nl | 4177800 |
| muskepo.nl | 4191527 |
| zavtra.nl | 4237496 |
| 851brightwaters.com | 4376894 |
| inou.com | 4402885 |
| jongsma.me | 4404264 |
| muskepo.com | 4409213 |
| stpetersburgaquatics.com | 4418712 |
| unbelievable.club | 7303826 |
| x4.trading | 15826788 |
| localbackup.in | 25623799 |
| flourishevents.nl | 28736352 |
## Notes
- .ai domains require 2-year minimum registration
- Cloudflare does NOT support .nl or .in as registrar TLDs
- Strategy: DNS at Cloudflare, registrar stays at OpenProvider
- **DNS is managed at Cloudflare, NOT here.** OpenProvider = registration only. For DNS changes use `~/.config/cloudflare.env` + Cloudflare API. OpenProvider DNS API returns "success" but does nothing — authoritative NS are Cloudflare's.
- ~€80 credits remaining, use them as domains renew
- API base: `https://api.openprovider.eu/v1beta/`