mirror of
https://github.com/dalbodeule/sh0rt.kr-pdns.git
synced 2025-06-08 18:58:20 +00:00
885 lines
15 KiB
Markdown
885 lines
15 KiB
Markdown
# Cloudflare compatible PowerDNS API Server
|
|
|
|
> Version v1.0.0
|
|
|
|
## Path Table
|
|
|
|
| Method | Path | Description |
|
|
| --- | --- | --- |
|
|
| GET | [/zones](#getzones) | Get all domains |
|
|
| POST | [/zones](#postzones) | Create domain |
|
|
| GET | [/zones/{zone_id}/dns_records](#getzoneszone_iddns_records) | Get all records |
|
|
| POST | [/zones/{zone_id}/dns_records](#postzoneszone_iddns_records) | Add Record by ID |
|
|
| GET | [/zones/{zone_id}/dns_records/{dns_record_id}](#getzoneszone_iddns_recordsdns_record_id) | Get Record by ID |
|
|
| DELETE | [/zones/{zone_id}/dns_records/{dns_record_id}](#deletezoneszone_iddns_recordsdns_record_id) | Remove Record by ID |
|
|
| PUT | [/zones/{zone_id}/dns_records/{dns_record_id}](#putzoneszone_iddns_recordsdns_record_id) | Update Record by ID |
|
|
| GET | [/zones/{cfid}](#getzonescfid) | Get domain |
|
|
| DELETE | [/zones/{domain_id}](#deletezonesdomain_id) | Delete domain |
|
|
|
|
## Reference Table
|
|
|
|
| Name | Path | Description |
|
|
| --- | --- | --- |
|
|
| DomainRequestDTO | [#/components/schemas/DomainRequestDTO](#componentsschemasdomainrequestdto) | Request DTO for Domain |
|
|
| ApiResponseDTO | [#/components/schemas/ApiResponseDTO](#componentsschemasapiresponsedto) | |
|
|
| ErrorOrMessage | [#/components/schemas/ErrorOrMessage](#componentsschemaserrorormessage) | |
|
|
| ApiResponseDTODomainResponseDTO | [#/components/schemas/ApiResponseDTODomainResponseDTO](#componentsschemasapiresponsedtodomainresponsedto) | |
|
|
| DomainResponseDTO | [#/components/schemas/DomainResponseDTO](#componentsschemasdomainresponsedto) | Response DTO for Domain |
|
|
| RecordRequestDTO | [#/components/schemas/RecordRequestDTO](#componentsschemasrecordrequestdto) | Request DTO for Record |
|
|
| ApiResponseDTORecordResponseDTO | [#/components/schemas/ApiResponseDTORecordResponseDTO](#componentsschemasapiresponsedtorecordresponsedto) | |
|
|
| RecordResponseDTO | [#/components/schemas/RecordResponseDTO](#componentsschemasrecordresponsedto) | Response DTO for Record |
|
|
| ApiResponseDTOListDomainResponseDTO | [#/components/schemas/ApiResponseDTOListDomainResponseDTO](#componentsschemasapiresponsedtolistdomainresponsedto) | |
|
|
| ApiResponseDTOListRecordResponseDTO | [#/components/schemas/ApiResponseDTOListRecordResponseDTO](#componentsschemasapiresponsedtolistrecordresponsedto) | |
|
|
| ApiResponseDTODeleteResponseWithId | [#/components/schemas/ApiResponseDTODeleteResponseWithId](#componentsschemasapiresponsedtodeleteresponsewithid) | |
|
|
| DeleteResponseWithId | [#/components/schemas/DeleteResponseWithId](#componentsschemasdeleteresponsewithid) | |
|
|
| api token | [#/components/securitySchemes/api token](#componentssecurityschemesapi-token) | |
|
|
|
|
## Path Details
|
|
|
|
***
|
|
|
|
### [GET]/zones
|
|
|
|
- Summary
|
|
Get all domains
|
|
|
|
#### Responses
|
|
|
|
- 200 Returns all domains
|
|
|
|
`application/json`
|
|
|
|
```ts
|
|
{
|
|
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`
|
|
|
|
```ts
|
|
{
|
|
success: boolean
|
|
errors: {
|
|
code: integer
|
|
message: string
|
|
}[]
|
|
messages:#/components/schemas/ErrorOrMessage[]
|
|
result: {
|
|
}
|
|
}
|
|
```
|
|
|
|
***
|
|
|
|
### [POST]/zones
|
|
|
|
- Summary
|
|
Create domain
|
|
|
|
#### RequestBody
|
|
|
|
- application/json
|
|
|
|
```ts
|
|
// Request DTO for Domain
|
|
{
|
|
// Domain name(TLD)
|
|
name: string
|
|
}
|
|
```
|
|
|
|
#### Responses
|
|
|
|
- 200 Created domain
|
|
|
|
`application/json`
|
|
|
|
```ts
|
|
{
|
|
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`
|
|
|
|
```ts
|
|
{
|
|
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`
|
|
|
|
```ts
|
|
{
|
|
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`
|
|
|
|
```ts
|
|
{
|
|
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
|
|
|
|
```ts
|
|
// 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`
|
|
|
|
```ts
|
|
{
|
|
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`
|
|
|
|
```ts
|
|
{
|
|
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`
|
|
|
|
```ts
|
|
{
|
|
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`
|
|
|
|
```ts
|
|
{
|
|
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`
|
|
|
|
```ts
|
|
{
|
|
success: boolean
|
|
errors: {
|
|
code: integer
|
|
message: string
|
|
}[]
|
|
messages:#/components/schemas/ErrorOrMessage[]
|
|
result: {
|
|
id: string
|
|
}
|
|
}
|
|
```
|
|
|
|
- 400 Bad request
|
|
|
|
`application/json`
|
|
|
|
```ts
|
|
{
|
|
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
|
|
|
|
```ts
|
|
// 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`
|
|
|
|
```ts
|
|
{
|
|
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`
|
|
|
|
```ts
|
|
{
|
|
success: boolean
|
|
errors: {
|
|
code: integer
|
|
message: string
|
|
}[]
|
|
messages:#/components/schemas/ErrorOrMessage[]
|
|
result: {
|
|
}
|
|
}
|
|
```
|
|
|
|
***
|
|
|
|
### [GET]/zones/{cfid}
|
|
|
|
- Summary
|
|
Get domain
|
|
|
|
#### Responses
|
|
|
|
- 200 Returns domain
|
|
|
|
`application/json`
|
|
|
|
```ts
|
|
{
|
|
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`
|
|
|
|
```ts
|
|
{
|
|
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`
|
|
|
|
```ts
|
|
{
|
|
success: boolean
|
|
errors: {
|
|
code: integer
|
|
message: string
|
|
}[]
|
|
messages:#/components/schemas/ErrorOrMessage[]
|
|
result: {
|
|
id: string
|
|
}
|
|
}
|
|
```
|
|
|
|
- 400 Bad request
|
|
|
|
`application/json`
|
|
|
|
```ts
|
|
{
|
|
success: boolean
|
|
errors: {
|
|
code: integer
|
|
message: string
|
|
}[]
|
|
messages:#/components/schemas/ErrorOrMessage[]
|
|
result: {
|
|
}
|
|
}
|
|
```
|
|
|
|
## References
|
|
|
|
### #/components/schemas/DomainRequestDTO
|
|
|
|
```ts
|
|
// Request DTO for Domain
|
|
{
|
|
// Domain name(TLD)
|
|
name: string
|
|
}
|
|
```
|
|
|
|
### #/components/schemas/ApiResponseDTO
|
|
|
|
```ts
|
|
{
|
|
success: boolean
|
|
errors: {
|
|
code: integer
|
|
message: string
|
|
}[]
|
|
messages:#/components/schemas/ErrorOrMessage[]
|
|
result: {
|
|
}
|
|
}
|
|
```
|
|
|
|
### #/components/schemas/ErrorOrMessage
|
|
|
|
```ts
|
|
{
|
|
code: integer
|
|
message: string
|
|
}
|
|
```
|
|
|
|
### #/components/schemas/ApiResponseDTODomainResponseDTO
|
|
|
|
```ts
|
|
{
|
|
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
|
|
|
|
```ts
|
|
// Response DTO for Domain
|
|
{
|
|
// Domain CFID
|
|
id: string
|
|
// Domain name(TLD)
|
|
name: string
|
|
}
|
|
```
|
|
|
|
### #/components/schemas/RecordRequestDTO
|
|
|
|
```ts
|
|
// 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
|
|
|
|
```ts
|
|
{
|
|
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
|
|
|
|
```ts
|
|
// 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
|
|
|
|
```ts
|
|
{
|
|
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
|
|
|
|
```ts
|
|
{
|
|
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
|
|
|
|
```ts
|
|
{
|
|
success: boolean
|
|
errors: {
|
|
code: integer
|
|
message: string
|
|
}[]
|
|
messages:#/components/schemas/ErrorOrMessage[]
|
|
result: {
|
|
id: string
|
|
}
|
|
}
|
|
```
|
|
|
|
### #/components/schemas/DeleteResponseWithId
|
|
|
|
```ts
|
|
{
|
|
id: string
|
|
}
|
|
```
|
|
|
|
### #/components/securitySchemes/api token
|
|
|
|
```ts
|
|
{
|
|
"type": "http",
|
|
"scheme": "bearer"
|
|
}
|
|
```
|