Sign inSign up

dalbodeule/dnsapi

By dalbodeule

•Updated over 1 year ago

Image
Networking
API management
0

433

dalbodeule/dnsapi repository overview

⁠Cloudflare compatible PowerDNS API Server

Discord Build Status

Version v1.0.0

⁠env Table

namevalue
DB_HOSTdatabase host (mysql/mariadb)
DB_PORTdatabase port (3306)
DB_NAMEdatabase name
DB_USERdatabase connect user
DB_PASSWORDdatabase connect password
PDNS_API_KEYPowerDNS Auth API Key
PDNS_API_URLPowerDNS HTTP API URL (contain host, port ex: http://pdns:8081⁠)
PDNS_NSNameserver addresses with comma splitted. (ns1.sh0rt.kr,ns2.sh0rt.kr)

⁠Path Table

MethodPathDescription
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"
}

Tag summary

Content type

Image

Digest

sha256:ebc4aa279…

Size

92.5 MB

Last updated

over 1 year ago

docker pull dalbodeule/dnsapi