From d70bb49a1410ac0d2a26c584cb6f16f8621f7976 Mon Sep 17 00:00:00 2001 From: dalbodeule <11470513+dalbodeule@users.noreply.github.com> Date: Mon, 10 Jun 2024 14:34:19 +0900 Subject: [PATCH] add openapi.json, readme.md --- README.md | 884 +++++++++++++++++++++++++++++++++++++++++++++++++++ openapi.json | 801 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1685 insertions(+) create mode 100644 README.md create mode 100644 openapi.json diff --git a/README.md b/README.md new file mode 100644 index 0000000..d609bcd --- /dev/null +++ b/README.md @@ -0,0 +1,884 @@ +# 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" +} +``` diff --git a/openapi.json b/openapi.json new file mode 100644 index 0000000..e8a5198 --- /dev/null +++ b/openapi.json @@ -0,0 +1,801 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "Cloudflare compatible PowerDNS API Server", + "version": "v1.0.0" + }, + "servers": [ + { + "url": "http://localhost:8080", + "description": "Generated server url" + } + ], + "security": [ + { + "api token": [] + } + ], + "paths": { + "/zones": { + "get": { + "tags": [ + "domain" + ], + "summary": "Get all domains", + "operationId": "allDomains", + "responses": { + "200": { + "description": "Returns all domains", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTOListDomainResponseDTO" + } + } + } + }, + "404": { + "description": "Returns not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTO" + } + } + } + } + } + }, + "post": { + "tags": [ + "domain" + ], + "summary": "Create domain", + "operationId": "createDomain", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DomainRequestDTO" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Created domain", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTODomainResponseDTO" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTO" + } + } + } + } + } + } + }, + "/zones/{zone_id}/dns_records": { + "get": { + "tags": [ + "record" + ], + "summary": "Get all records", + "operationId": "allRecords", + "parameters": [ + { + "name": "zone_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Return All Records", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTOListRecordResponseDTO" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTO" + } + } + } + } + } + }, + "post": { + "tags": [ + "record" + ], + "summary": "Add Record by ID", + "operationId": "createRecord", + "parameters": [ + { + "name": "zone_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecordRequestDTO" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Return Record", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTORecordResponseDTO" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTO" + } + } + } + } + } + } + }, + "/zones/{zone_id}/dns_records/{dns_record_id}": { + "get": { + "tags": [ + "record" + ], + "summary": "Get Record by ID", + "operationId": "getRecordByCfid", + "parameters": [ + { + "name": "zone_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dns_record_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Return Record", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTORecordResponseDTO" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTO" + } + } + } + } + } + }, + "delete": { + "tags": [ + "record" + ], + "summary": "Remove Record by ID", + "operationId": "deleteRecord", + "parameters": [ + { + "name": "zone_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dns_record_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Return Record", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTODeleteResponseWithId" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTO" + } + } + } + } + } + }, + "put": { + "tags": [ + "record" + ], + "summary": "Update Record by ID", + "operationId": "updateRecord", + "parameters": [ + { + "name": "zone_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "dns_record_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecordRequestDTO" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Return Record", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTORecordResponseDTO" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTO" + } + } + } + } + } + } + }, + "/zones/{cfid}": { + "get": { + "tags": [ + "domain" + ], + "summary": "Get domain", + "operationId": "getDomainByCfid", + "parameters": [ + { + "name": "cfid", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns domain", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTODomainResponseDTO" + } + } + } + }, + "404": { + "description": "Returns not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTO" + } + } + } + } + } + } + }, + "/zones/{domain_id}": { + "delete": { + "tags": [ + "domain" + ], + "summary": "Delete domain", + "operationId": "deleteDomain", + "parameters": [ + { + "name": "domain_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Deleted domain", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTODeleteResponseWithId" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseDTO" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "DomainRequestDTO": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Domain name(TLD)", + "example": "example.com" + } + }, + "description": "Request DTO for Domain" + }, + "ApiResponseDTO": { + "required": [ + "errors", + "messages", + "success" + ], + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "errors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ErrorOrMessage" + } + }, + "messages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ErrorOrMessage" + } + }, + "result": { + "type": "object" + } + } + }, + "ErrorOrMessage": { + "required": [ + "code", + "message" + ], + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + } + } + }, + "ApiResponseDTODomainResponseDTO": { + "required": [ + "errors", + "messages", + "success" + ], + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "errors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ErrorOrMessage" + } + }, + "messages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ErrorOrMessage" + } + }, + "result": { + "$ref": "#/components/schemas/DomainResponseDTO" + } + } + }, + "DomainResponseDTO": { + "required": [ + "id", + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Domain CFID", + "example": "123e4567e89b12d3a456426655440000" + }, + "name": { + "type": "string", + "description": "Domain name(TLD)", + "example": "example.com" + } + }, + "description": "Response DTO for Domain" + }, + "RecordRequestDTO": { + "required": [ + "comment", + "content", + "name", + "proxied", + "ttl", + "type" + ], + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Record type", + "example": "A" + }, + "name": { + "type": "string", + "description": "Host name", + "example": "www" + }, + "content": { + "type": "string", + "description": "Record data", + "example": "192.0.2.1" + }, + "ttl": { + "type": "integer", + "description": "TTL (Time to Live)", + "format": "int32", + "example": 3600 + }, + "priority": { + "type": "integer", + "description": "Priority", + "format": "int32", + "example": 0 + }, + "proxied": { + "type": "boolean", + "description": "Proxied: cloudflare api compatibility", + "example": false + }, + "comment": { + "type": "string", + "description": "comment" + } + }, + "description": "Request DTO for Record" + }, + "ApiResponseDTORecordResponseDTO": { + "required": [ + "errors", + "messages", + "success" + ], + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "errors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ErrorOrMessage" + } + }, + "messages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ErrorOrMessage" + } + }, + "result": { + "$ref": "#/components/schemas/RecordResponseDTO" + } + } + }, + "RecordResponseDTO": { + "required": [ + "content", + "createdOn", + "id", + "locked", + "modifiedOn", + "name", + "proxiable", + "proxied", + "ttl", + "type", + "zoneId", + "zoneName" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Record ID", + "example": "123e4567e89b12d3a456426655440001" + }, + "type": { + "type": "string", + "description": "Record type", + "example": "A" + }, + "name": { + "type": "string", + "description": "Record name", + "example": "test" + }, + "content": { + "type": "string", + "description": "Record content", + "example": "1.1.1.1" + }, + "zoneId": { + "type": "string", + "description": "Zone(TLD) ID", + "example": "123e4567e89b12d3a456426655440001" + }, + "zoneName": { + "type": "string", + "description": "Zone name(TLD)", + "example": "example.com" + }, + "createdOn": { + "type": "string", + "description": "Record creation time", + "example": "2014-01-01T05:20:00.12345Z" + }, + "modifiedOn": { + "type": "string", + "description": "Record modification time", + "example": "2014-01-01T05:20:00.12345Z" + }, + "priority": { + "type": "integer", + "description": "Record priority", + "format": "int32", + "example": 0 + }, + "proxiable": { + "type": "boolean", + "description": "is proxyable: must false", + "example": false + }, + "proxied": { + "type": "boolean", + "description": "is proxied: must false", + "example": false + }, + "ttl": { + "type": "integer", + "description": "Record TTL", + "format": "int32", + "example": 300 + }, + "locked": { + "type": "boolean", + "description": "Record is locked: must false", + "example": false + }, + "comment": { + "type": "string", + "description": "Record comments" + } + }, + "description": "Response DTO for Record" + }, + "ApiResponseDTOListDomainResponseDTO": { + "required": [ + "errors", + "messages", + "success" + ], + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "errors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ErrorOrMessage" + } + }, + "messages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ErrorOrMessage" + } + }, + "result": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DomainResponseDTO" + } + } + } + }, + "ApiResponseDTOListRecordResponseDTO": { + "required": [ + "errors", + "messages", + "success" + ], + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "errors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ErrorOrMessage" + } + }, + "messages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ErrorOrMessage" + } + }, + "result": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RecordResponseDTO" + } + } + } + }, + "ApiResponseDTODeleteResponseWithId": { + "required": [ + "errors", + "messages", + "success" + ], + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "errors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ErrorOrMessage" + } + }, + "messages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ErrorOrMessage" + } + }, + "result": { + "$ref": "#/components/schemas/DeleteResponseWithId" + } + } + }, + "DeleteResponseWithId": { + "required": [ + "id" + ], + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + } + }, + "securitySchemes": { + "api token": { + "type": "http", + "scheme": "bearer" + } + } + } +} \ No newline at end of file