sh0rt.kr-pdns/README.md
2024-06-10 14:34:19 +09:00

15 KiB

Cloudflare compatible PowerDNS API Server

Version v1.0.0

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

Name Path Description
DomainRequestDTO #/components/schemas/DomainRequestDTO Request DTO for Domain
ApiResponseDTO #/components/schemas/ApiResponseDTO
ErrorOrMessage #/components/schemas/ErrorOrMessage
ApiResponseDTODomainResponseDTO #/components/schemas/ApiResponseDTODomainResponseDTO
DomainResponseDTO #/components/schemas/DomainResponseDTO Response DTO for Domain
RecordRequestDTO #/components/schemas/RecordRequestDTO Request DTO for Record
ApiResponseDTORecordResponseDTO #/components/schemas/ApiResponseDTORecordResponseDTO
RecordResponseDTO #/components/schemas/RecordResponseDTO Response DTO for Record
ApiResponseDTOListDomainResponseDTO #/components/schemas/ApiResponseDTOListDomainResponseDTO
ApiResponseDTOListRecordResponseDTO #/components/schemas/ApiResponseDTOListRecordResponseDTO
ApiResponseDTODeleteResponseWithId #/components/schemas/ApiResponseDTODeleteResponseWithId
DeleteResponseWithId #/components/schemas/DeleteResponseWithId
api token #/components/securitySchemes/api token

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