Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Jina
{
public sealed partial class SerpV1SerpPathGetResponse2
public sealed partial class SerpV1SerpPathPostResponse
{
/// <summary>
/// Serializes the current instance to a JSON string using the provided JsonSerializerContext.
Expand Down Expand Up @@ -34,14 +34,14 @@ public string ToJson(
/// <summary>
/// Deserializes a JSON string using the provided JsonSerializerContext.
/// </summary>
public static global::Jina.SerpV1SerpPathGetResponse2? FromJson(
public static global::Jina.SerpV1SerpPathPostResponse? FromJson(
string json,
global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext)
{
return global::System.Text.Json.JsonSerializer.Deserialize(
json,
typeof(global::Jina.SerpV1SerpPathGetResponse2),
jsonSerializerContext) as global::Jina.SerpV1SerpPathGetResponse2;
typeof(global::Jina.SerpV1SerpPathPostResponse),
jsonSerializerContext) as global::Jina.SerpV1SerpPathPostResponse;
}

/// <summary>
Expand All @@ -51,26 +51,26 @@ public string ToJson(
[global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")]
[global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")]
#endif
public static global::Jina.SerpV1SerpPathGetResponse2? FromJson(
public static global::Jina.SerpV1SerpPathPostResponse? FromJson(
string json,
global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null)
{
return global::System.Text.Json.JsonSerializer.Deserialize<global::Jina.SerpV1SerpPathGetResponse2>(
return global::System.Text.Json.JsonSerializer.Deserialize<global::Jina.SerpV1SerpPathPostResponse>(
json,
jsonSerializerOptions);
}

/// <summary>
/// Deserializes a JSON stream using the provided JsonSerializerContext.
/// </summary>
public static async global::System.Threading.Tasks.ValueTask<global::Jina.SerpV1SerpPathGetResponse2?> FromJsonStreamAsync(
public static async global::System.Threading.Tasks.ValueTask<global::Jina.SerpV1SerpPathPostResponse?> FromJsonStreamAsync(
global::System.IO.Stream jsonStream,
global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext)
{
return (await global::System.Text.Json.JsonSerializer.DeserializeAsync(
jsonStream,
typeof(global::Jina.SerpV1SerpPathGetResponse2),
jsonSerializerContext).ConfigureAwait(false)) as global::Jina.SerpV1SerpPathGetResponse2;
typeof(global::Jina.SerpV1SerpPathPostResponse),
jsonSerializerContext).ConfigureAwait(false)) as global::Jina.SerpV1SerpPathPostResponse;
}

/// <summary>
Expand All @@ -80,11 +80,11 @@ public string ToJson(
[global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")]
[global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")]
#endif
public static global::System.Threading.Tasks.ValueTask<global::Jina.SerpV1SerpPathGetResponse2?> FromJsonStreamAsync(
public static global::System.Threading.Tasks.ValueTask<global::Jina.SerpV1SerpPathPostResponse?> FromJsonStreamAsync(
global::System.IO.Stream jsonStream,
global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null)
{
return global::System.Text.Json.JsonSerializer.DeserializeAsync<global::Jina.SerpV1SerpPathGetResponse2?>(
return global::System.Text.Json.JsonSerializer.DeserializeAsync<global::Jina.SerpV1SerpPathPostResponse?>(
jsonStream,
jsonSerializerOptions);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace Jina
/// <summary>
///
/// </summary>
public sealed partial class SerpV1SerpPathGetResponse
public sealed partial class SerpV1SerpPathPostResponse
{

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Jina
{
public sealed partial class SerpV1SerpPathGetResponse
public sealed partial class SerpV1SerpPathPostResponse2
{
/// <summary>
/// Serializes the current instance to a JSON string using the provided JsonSerializerContext.
Expand Down Expand Up @@ -34,14 +34,14 @@ public string ToJson(
/// <summary>
/// Deserializes a JSON string using the provided JsonSerializerContext.
/// </summary>
public static global::Jina.SerpV1SerpPathGetResponse? FromJson(
public static global::Jina.SerpV1SerpPathPostResponse2? FromJson(
string json,
global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext)
{
return global::System.Text.Json.JsonSerializer.Deserialize(
json,
typeof(global::Jina.SerpV1SerpPathGetResponse),
jsonSerializerContext) as global::Jina.SerpV1SerpPathGetResponse;
typeof(global::Jina.SerpV1SerpPathPostResponse2),
jsonSerializerContext) as global::Jina.SerpV1SerpPathPostResponse2;
}

/// <summary>
Expand All @@ -51,26 +51,26 @@ public string ToJson(
[global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")]
[global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")]
#endif
public static global::Jina.SerpV1SerpPathGetResponse? FromJson(
public static global::Jina.SerpV1SerpPathPostResponse2? FromJson(
string json,
global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null)
{
return global::System.Text.Json.JsonSerializer.Deserialize<global::Jina.SerpV1SerpPathGetResponse>(
return global::System.Text.Json.JsonSerializer.Deserialize<global::Jina.SerpV1SerpPathPostResponse2>(
json,
jsonSerializerOptions);
}

/// <summary>
/// Deserializes a JSON stream using the provided JsonSerializerContext.
/// </summary>
public static async global::System.Threading.Tasks.ValueTask<global::Jina.SerpV1SerpPathGetResponse?> FromJsonStreamAsync(
public static async global::System.Threading.Tasks.ValueTask<global::Jina.SerpV1SerpPathPostResponse2?> FromJsonStreamAsync(
global::System.IO.Stream jsonStream,
global::System.Text.Json.Serialization.JsonSerializerContext jsonSerializerContext)
{
return (await global::System.Text.Json.JsonSerializer.DeserializeAsync(
jsonStream,
typeof(global::Jina.SerpV1SerpPathGetResponse),
jsonSerializerContext).ConfigureAwait(false)) as global::Jina.SerpV1SerpPathGetResponse;
typeof(global::Jina.SerpV1SerpPathPostResponse2),
jsonSerializerContext).ConfigureAwait(false)) as global::Jina.SerpV1SerpPathPostResponse2;
}

/// <summary>
Expand All @@ -80,11 +80,11 @@ public string ToJson(
[global::System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed. Use the overload that takes a JsonTypeInfo or JsonSerializerContext, or make sure all of the required types are preserved.")]
[global::System.Diagnostics.CodeAnalysis.RequiresDynamicCode("JSON serialization and deserialization might require types that cannot be statically analyzed and might need runtime code generation. Use System.Text.Json source generation for native AOT applications.")]
#endif
public static global::System.Threading.Tasks.ValueTask<global::Jina.SerpV1SerpPathGetResponse?> FromJsonStreamAsync(
public static global::System.Threading.Tasks.ValueTask<global::Jina.SerpV1SerpPathPostResponse2?> FromJsonStreamAsync(
global::System.IO.Stream jsonStream,
global::System.Text.Json.JsonSerializerOptions? jsonSerializerOptions = null)
{
return global::System.Text.Json.JsonSerializer.DeserializeAsync<global::Jina.SerpV1SerpPathGetResponse?>(
return global::System.Text.Json.JsonSerializer.DeserializeAsync<global::Jina.SerpV1SerpPathPostResponse2?>(
jsonStream,
jsonSerializerOptions);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace Jina
/// <summary>
///
/// </summary>
public sealed partial class SerpV1SerpPathGetResponse2
public sealed partial class SerpV1SerpPathPostResponse2
{

/// <summary>
Expand Down
4 changes: 2 additions & 2 deletions src/libs/Jina/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ paths:
tags:
- serp
summary: Serp
operationId: serp_v1_serp__path__get
operationId: serp_v1_serp__path__post
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

🧩 Analysis chain

operationId collision: GET must not reuse POST’s operationId

GET currently uses serp_v1_serp__path__post, duplicating POST. OpenAPI requires unique operationId per operation; this breaks many client generators and tooling. Rename GET’s operationId to serp_v1_serp__path__get to restore uniqueness and match the convention used elsewhere in the spec.

Apply this diff:

@@
-      operationId: serp_v1_serp__path__post
+      operationId: serp_v1_serp__path__get

Run to detect any remaining duplicates:

Also applies to: 330-330


🏁 Script executed:

#!/bin/bash
rg -n 'operationId:\s*' src/libs/Jina/openapi.yaml | awk 'match($0,/operationId:\s*([^\s]+)/,a){print a[1]}' | sort | uniq -cd

Length of output: 9


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file="src/libs/Jina/openapi.yaml"
if [ ! -f "$file" ]; then
  echo "File not found: $file" >&2
  exit 1
fi

echo "=== operationId occurrences (value : file:line) ==="
awk 'match($0,/operationId:[[:space:]]*([^[:space:]]+)/,a){print a[1] " : " FILENAME ":" FNR}' "$file" | sort

echo
echo "=== duplicate operationId counts ==="
awk 'match($0,/operationId:[[:space:]]*([^[:space:]]+)/,a){print a[1]}' "$file" | sort | uniq -cd

echo
echo "=== full lines where operationId appears ==="
awk 'match($0,/operationId:[[:space:]]*([^[:space:]]+)/,a){print FILENAME ":" FNR ":" $0}' "$file"

echo
echo "=== context for duplicated operationIds ==="
for id in $(awk 'match($0,/operationId:[[:space:]]*([^[:space:]]+)/,a){print a[1]}' "$file" | sort | uniq -d); do
  echo
  echo "----- DUPLICATE: $id -----"
  rg -n -C3 "operationId:\\s*$id" "$file" || true
done

Length of output: 2783


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file="src/libs/Jina/openapi.yaml"
if [ ! -f "$file" ]; then
  echo "File not found: $file" >&2
  exit 1
fi

awk 'match($0,/operationId:[[:space:]]*([^[:space:]]+)/,a){print FNR ":" a[1]}' "$file" | sort -n | while IFS=: read -r ln id; do
  start=$((ln-6)); if [ $start -lt 1 ]; then start=1; fi
  end=$((ln+6))
  echo "----- $file lines $start-$end (operationId: $id at line $ln) -----"
  sed -n "${start},${end}p" "$file"
  echo
done

Length of output: 6824


operationId collision — rename GET's operationId to serp_v1_serp__path__get

GET at '/v1/serp/{path}' (src/libs/Jina/openapi.yaml:306) reuses the POST operationId (line 330); rename the GET operationId to restore uniqueness.

Apply this diff:

@@
-      operationId: serp_v1_serp__path__post
+      operationId: serp_v1_serp__path__get
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
operationId: serp_v1_serp__path__post
operationId: serp_v1_serp__path__get
🤖 Prompt for AI Agents
In src/libs/Jina/openapi.yaml around line 306, the GET operationId currently
duplicates the POST operationId (serp_v1_serp__path__post); change the GET
operationId to a unique name such as serp_v1_serp__path__get to restore
uniqueness, and update any internal references or client generation mappings
that expect the old name so they point to the new operationId.

parameters:
- name: path
in: path
Expand All @@ -327,7 +327,7 @@ paths:
tags:
- serp
summary: Serp
operationId: serp_v1_serp__path__get
operationId: serp_v1_serp__path__post
parameters:
- name: path
in: path
Expand Down