Skip to content

Commit 6f0fe00

Browse files
Add 8.18 documentation URLs to schema and OpenAPI (#4638)
* Add 8.18 documentation URLs to schema and OpenAPI * generated files * rename legacy -> previous_version
1 parent 07be12f commit 6f0fe00

File tree

12 files changed

+1956
-1167
lines changed

12 files changed

+1956
-1167
lines changed

compiler-rs/clients_schema/src/lib.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ pub trait Documented {
5858
pub trait ExternalDocument {
5959
fn ext_doc_id(&self) -> Option<&str>;
6060
fn ext_doc_url(&self) -> Option<&str>;
61+
fn ext_previous_version_doc_url(&self) -> Option<&str>;
6162
}
6263

6364
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
@@ -322,6 +323,9 @@ pub struct Property {
322323
#[serde(skip_serializing_if = "Option::is_none")]
323324
pub ext_doc_url: Option<String>,
324325

326+
#[serde(skip_serializing_if = "Option::is_none")]
327+
pub ext_previous_version_doc_url: Option<String>,
328+
325329
#[serde(skip_serializing_if = "Option::is_none")]
326330
pub ext_doc_id: Option<String>,
327331

@@ -371,6 +375,10 @@ impl ExternalDocument for Property {
371375
self.ext_doc_url.as_deref()
372376
}
373377

378+
fn ext_previous_version_doc_url(&self) -> Option<&str> {
379+
self.ext_previous_version_doc_url.as_deref()
380+
}
381+
374382
fn ext_doc_id(&self) -> Option<&str> {
375383
self.ext_doc_id.as_deref()
376384
}
@@ -528,6 +536,9 @@ pub struct BaseType {
528536
#[serde(skip_serializing_if = "Option::is_none")]
529537
pub ext_doc_url: Option<String>,
530538

539+
#[serde(skip_serializing_if = "Option::is_none")]
540+
pub ext_previous_version_doc_url: Option<String>,
541+
531542
#[serde(skip_serializing_if = "Option::is_none")]
532543
pub ext_doc_id: Option<String>,
533544

@@ -568,6 +579,7 @@ impl BaseType {
568579
spec_location: None,
569580
ext_doc_id: None,
570581
ext_doc_url: None,
582+
ext_previous_version_doc_url: None,
571583
}
572584
}
573585
}
@@ -591,6 +603,10 @@ impl ExternalDocument for BaseType {
591603
self.ext_doc_url.as_deref()
592604
}
593605

606+
fn ext_previous_version_doc_url(&self) -> Option<&str> {
607+
self.ext_previous_version_doc_url.as_deref()
608+
}
609+
594610
fn ext_doc_id(&self) -> Option<&str> {
595611
self.ext_doc_id.as_deref()
596612
}
@@ -619,6 +635,10 @@ impl<T: WithBaseType> ExternalDocument for T {
619635
self.base().doc_url()
620636
}
621637

638+
fn ext_previous_version_doc_url(&self) -> Option<&str> {
639+
self.base().ext_previous_version_doc_url()
640+
}
641+
622642
fn ext_doc_id(&self) -> Option<&str> {
623643
self.base().doc_id()
624644
}
@@ -895,6 +915,9 @@ pub struct Endpoint {
895915
#[serde(skip_serializing_if = "Option::is_none")]
896916
pub ext_doc_url: Option<String>,
897917

918+
#[serde(skip_serializing_if = "Option::is_none")]
919+
pub ext_previous_version_doc_url: Option<String>,
920+
898921
#[serde(skip_serializing_if = "Option::is_none")]
899922
pub deprecation: Option<Deprecation>,
900923

@@ -945,6 +968,10 @@ impl ExternalDocument for Endpoint {
945968
self.ext_doc_url.as_deref()
946969
}
947970

971+
fn ext_previous_version_doc_url(&self) -> Option<&str> {
972+
self.ext_previous_version_doc_url.as_deref()
973+
}
974+
948975
fn ext_doc_id(&self) -> Option<&str> {
949976
self.ext_doc_id.as_deref()
950977
}

compiler-rs/clients_schema_to_openapi/src/schemas.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,14 @@ impl<'a> TypesAndComponents<'a> {
215215
.as_ref()
216216
.and_then(|i| i.version.as_deref())
217217
.unwrap_or("current");
218+
let mut extensions: IndexMap<String,serde_json::Value> = Default::default();
219+
if let Some(previous_version_doc_url) = obj.ext_previous_version_doc_url() {
220+
extensions.insert("x-previousVersionUrl".to_string(), serde_json::json!(previous_version_doc_url));
221+
}
218222
ExternalDocumentation {
219223
description: None,
220224
url: url.trim().replace("{branch}", branch),
221-
extensions: Default::default(),
225+
extensions,
222226
}
223227
})
224228
}
Binary file not shown.

compiler-rs/openapi_to_clients_schema/src/types.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ fn generate_interface_def(
404404
doc_url: None,
405405
ext_doc_id: None,
406406
ext_doc_url: None,
407+
ext_previous_version_doc_url: None,
407408
codegen_name: None, // FIXME: extension in workplace search
408409
description: None,
409410
aliases: Vec::default(),

compiler/src/model/metamodel.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,7 @@ export class Endpoint {
443443
docId?: string
444444
extDocId?: string
445445
extDocUrl?: string
446+
extPreviousVersionDocUrl?: string
446447
deprecation?: Deprecation
447448
availability: Availabilities
448449
docTag?: string

compiler/src/model/utils.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,9 @@ export function hoistRequestAnnotations (
694694
const docUrl = docIds.find(entry => entry[0] === value.trim())
695695
assert(jsDocs, docUrl != null, `The @doc_id '${value.trim()}' is not present in _doc_ids/table.csv`)
696696
endpoint.docUrl = docUrl[1].replace(/\r/g, '')
697+
if (docUrl[2].replace(/\r/g, '') !== '') {
698+
endpoint.extPreviousVersionDocUrl = docUrl[2].replace(/\r/g, '')
699+
}
697700
} else if (tag === 'ext_doc_id') {
698701
assert(jsDocs, value.trim() !== '', `Request ${request.name.name}'s @ext_doc_id cannot be empty`)
699702
endpoint.extDocId = value.trim()

output/openapi/elasticsearch-openapi.json

Lines changed: 338 additions & 169 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

output/openapi/elasticsearch-serverless-openapi.json

Lines changed: 146 additions & 73 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)