mirror of
https://github.com/dalbodeule/sh0rt.kr-pdns.git
synced 2025-06-08 02:47:27 +00:00
Cloudflare compatible PowerDNS API Server
Version v1.0.0
env Table
name | value |
---|---|
DB_HOST | database host (mysql/mariadb) |
DB_PORT | database port (3306) |
DB_NAME | database name |
DB_USER | database connect user |
DB_PASSWORD | database connect password |
PDNS_API_KEY | PowerDNS Auth API Key |
PDNS_API_URL | PowerDNS HTTP API URL (contain host, port ex: http://pdns:8081) |
PDNS_NS | Nameserver addresses with comma splitted. (ns1.sh0rt.kr,ns2.sh0rt.kr) |
Path Table
Method | Path | Description |
---|---|---|
GET | /zones | Get all domains |
POST | /zones | Create domain |
GET | /zones/{zone_id}/dns_records | Get all records |
POST | /zones/{zone_id}/dns_records | Add Record by ID |
GET | /zones/{zone_id}/dns_records/{dns_record_id} | Get Record by ID |
DELETE | /zones/{zone_id}/dns_records/{dns_record_id} | Remove Record by ID |
PUT | /zones/{zone_id}/dns_records/{dns_record_id} | Update Record by ID |
GET | /zones/{cfid} | Get domain |
DELETE | /zones/{domain_id} | Delete domain |
Reference Table
Path Details
[GET]/zones
- Summary
Get all domains
Responses
- 200 Returns all domains
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
// Response DTO for Domain
result: {
// Domain CFID
id: string
// Domain name(TLD)
name: string
}[]
}
- 404 Returns not found
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
result: {
}
}
[POST]/zones
- Summary
Create domain
RequestBody
- application/json
// Request DTO for Domain
{
// Domain name(TLD)
name: string
}
Responses
- 200 Created domain
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
// Response DTO for Domain
result: {
// Domain CFID
id: string
// Domain name(TLD)
name: string
}
}
- 400 Bad request
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
result: {
}
}
[GET]/zones/{zone_id}/dns_records
- Summary
Get all records
Responses
- 200 Return All Records
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
// Response DTO for Record
result: {
// Record ID
id: string
// Record type
type: string
// Record name
name: string
// Record content
content: string
// Zone(TLD) ID
zoneId: string
// Zone name(TLD)
zoneName: string
// Record creation time
createdOn: string
// Record modification time
modifiedOn: string
// Record priority
priority?: integer
// is proxyable: must false
proxiable: boolean
// is proxied: must false
proxied: boolean
// Record TTL
ttl: integer
// Record is locked: must false
locked: boolean
// Record comments
comment?: string
}[]
}
- 400 Bad request
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
result: {
}
}
[POST]/zones/{zone_id}/dns_records
- Summary
Add Record by ID
RequestBody
- application/json
// Request DTO for Record
{
// Record type
type: string
// Host name
name: string
// Record data
content: string
// TTL (Time to Live)
ttl: integer
// Priority
priority?: integer
// Proxied: cloudflare api compatibility
proxied: boolean
// comment
comment: string
}
Responses
- 200 Return Record
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
// Response DTO for Record
result: {
// Record ID
id: string
// Record type
type: string
// Record name
name: string
// Record content
content: string
// Zone(TLD) ID
zoneId: string
// Zone name(TLD)
zoneName: string
// Record creation time
createdOn: string
// Record modification time
modifiedOn: string
// Record priority
priority?: integer
// is proxyable: must false
proxiable: boolean
// is proxied: must false
proxied: boolean
// Record TTL
ttl: integer
// Record is locked: must false
locked: boolean
// Record comments
comment?: string
}
}
- 400 Bad request
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
result: {
}
}
[GET]/zones/{zone_id}/dns_records/{dns_record_id}
- Summary
Get Record by ID
Responses
- 200 Return Record
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
// Response DTO for Record
result: {
// Record ID
id: string
// Record type
type: string
// Record name
name: string
// Record content
content: string
// Zone(TLD) ID
zoneId: string
// Zone name(TLD)
zoneName: string
// Record creation time
createdOn: string
// Record modification time
modifiedOn: string
// Record priority
priority?: integer
// is proxyable: must false
proxiable: boolean
// is proxied: must false
proxied: boolean
// Record TTL
ttl: integer
// Record is locked: must false
locked: boolean
// Record comments
comment?: string
}
}
- 400 Bad request
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
result: {
}
}
[DELETE]/zones/{zone_id}/dns_records/{dns_record_id}
- Summary
Remove Record by ID
Responses
- 200 Return Record
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
result: {
id: string
}
}
- 400 Bad request
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
result: {
}
}
[PUT]/zones/{zone_id}/dns_records/{dns_record_id}
- Summary
Update Record by ID
RequestBody
- application/json
// Request DTO for Record
{
// Record type
type: string
// Host name
name: string
// Record data
content: string
// TTL (Time to Live)
ttl: integer
// Priority
priority?: integer
// Proxied: cloudflare api compatibility
proxied: boolean
// comment
comment: string
}
Responses
- 200 Return Record
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
// Response DTO for Record
result: {
// Record ID
id: string
// Record type
type: string
// Record name
name: string
// Record content
content: string
// Zone(TLD) ID
zoneId: string
// Zone name(TLD)
zoneName: string
// Record creation time
createdOn: string
// Record modification time
modifiedOn: string
// Record priority
priority?: integer
// is proxyable: must false
proxiable: boolean
// is proxied: must false
proxied: boolean
// Record TTL
ttl: integer
// Record is locked: must false
locked: boolean
// Record comments
comment?: string
}
}
- 400 Bad request
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
result: {
}
}
[GET]/zones/{cfid}
- Summary
Get domain
Responses
- 200 Returns domain
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
// Response DTO for Domain
result: {
// Domain CFID
id: string
// Domain name(TLD)
name: string
}
}
- 404 Returns not found
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
result: {
}
}
[DELETE]/zones/{domain_id}
- Summary
Delete domain
Responses
- 200 Deleted domain
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
result: {
id: string
}
}
- 400 Bad request
application/json
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
result: {
}
}
References
#/components/schemas/DomainRequestDTO
// Request DTO for Domain
{
// Domain name(TLD)
name: string
}
#/components/schemas/ApiResponseDTO
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
result: {
}
}
#/components/schemas/ErrorOrMessage
{
code: integer
message: string
}
#/components/schemas/ApiResponseDTODomainResponseDTO
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
// Response DTO for Domain
result: {
// Domain CFID
id: string
// Domain name(TLD)
name: string
}
}
#/components/schemas/DomainResponseDTO
// Response DTO for Domain
{
// Domain CFID
id: string
// Domain name(TLD)
name: string
}
#/components/schemas/RecordRequestDTO
// Request DTO for Record
{
// Record type
type: string
// Host name
name: string
// Record data
content: string
// TTL (Time to Live)
ttl: integer
// Priority
priority?: integer
// Proxied: cloudflare api compatibility
proxied: boolean
// comment
comment: string
}
#/components/schemas/ApiResponseDTORecordResponseDTO
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
// Response DTO for Record
result: {
// Record ID
id: string
// Record type
type: string
// Record name
name: string
// Record content
content: string
// Zone(TLD) ID
zoneId: string
// Zone name(TLD)
zoneName: string
// Record creation time
createdOn: string
// Record modification time
modifiedOn: string
// Record priority
priority?: integer
// is proxyable: must false
proxiable: boolean
// is proxied: must false
proxied: boolean
// Record TTL
ttl: integer
// Record is locked: must false
locked: boolean
// Record comments
comment?: string
}
}
#/components/schemas/RecordResponseDTO
// Response DTO for Record
{
// Record ID
id: string
// Record type
type: string
// Record name
name: string
// Record content
content: string
// Zone(TLD) ID
zoneId: string
// Zone name(TLD)
zoneName: string
// Record creation time
createdOn: string
// Record modification time
modifiedOn: string
// Record priority
priority?: integer
// is proxyable: must false
proxiable: boolean
// is proxied: must false
proxied: boolean
// Record TTL
ttl: integer
// Record is locked: must false
locked: boolean
// Record comments
comment?: string
}
#/components/schemas/ApiResponseDTOListDomainResponseDTO
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
// Response DTO for Domain
result: {
// Domain CFID
id: string
// Domain name(TLD)
name: string
}[]
}
#/components/schemas/ApiResponseDTOListRecordResponseDTO
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
// Response DTO for Record
result: {
// Record ID
id: string
// Record type
type: string
// Record name
name: string
// Record content
content: string
// Zone(TLD) ID
zoneId: string
// Zone name(TLD)
zoneName: string
// Record creation time
createdOn: string
// Record modification time
modifiedOn: string
// Record priority
priority?: integer
// is proxyable: must false
proxiable: boolean
// is proxied: must false
proxied: boolean
// Record TTL
ttl: integer
// Record is locked: must false
locked: boolean
// Record comments
comment?: string
}[]
}
#/components/schemas/ApiResponseDTODeleteResponseWithId
{
success: boolean
errors: {
code: integer
message: string
}[]
messages:#/components/schemas/ErrorOrMessage[]
result: {
id: string
}
}
#/components/schemas/DeleteResponseWithId
{
id: string
}
#/components/securitySchemes/api token
{
"type": "http",
"scheme": "bearer"
}
Description
Languages
Kotlin
100%