Skip to content

Commit cedae74

Browse files
chore(internal): move custom custom json tags to api
1 parent 5093f28 commit cedae74

File tree

11 files changed

+105
-66
lines changed

11 files changed

+105
-66
lines changed

adminauthprovider.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func (r *AdminAuthProviderService) Patch(ctx context.Context, id string, body Ad
8787
}
8888

8989
type AuthProviderCreateRequestParam struct {
90-
ID param.Field[string] `json:"id,required"`
90+
ID param.Field[string] `json:"id" api:"required"`
9191
Description param.Field[string] `json:"description"`
9292
// The unique external ID for the auth provider
9393
ExternalID param.Field[string] `json:"external_id"`
@@ -102,7 +102,7 @@ func (r AuthProviderCreateRequestParam) MarshalJSON() (data []byte, err error) {
102102
}
103103

104104
type AuthProviderCreateRequestOauth2Param struct {
105-
ClientID param.Field[string] `json:"client_id,required"`
105+
ClientID param.Field[string] `json:"client_id" api:"required"`
106106
AuthorizeRequest param.Field[AuthProviderCreateRequestOauth2AuthorizeRequestParam] `json:"authorize_request"`
107107
ClientSecret param.Field[string] `json:"client_secret"`
108108
Pkce param.Field[AuthProviderCreateRequestOauth2PkceParam] `json:"pkce"`
@@ -118,7 +118,7 @@ func (r AuthProviderCreateRequestOauth2Param) MarshalJSON() (data []byte, err er
118118
}
119119

120120
type AuthProviderCreateRequestOauth2AuthorizeRequestParam struct {
121-
Endpoint param.Field[string] `json:"endpoint,required"`
121+
Endpoint param.Field[string] `json:"endpoint" api:"required"`
122122
AuthHeaderValueFormat param.Field[string] `json:"auth_header_value_format"`
123123
AuthMethod param.Field[string] `json:"auth_method"`
124124
Method param.Field[string] `json:"method"`
@@ -172,7 +172,7 @@ func (r AuthProviderCreateRequestOauth2PkceParam) MarshalJSON() (data []byte, er
172172
}
173173

174174
type AuthProviderCreateRequestOauth2RefreshRequestParam struct {
175-
Endpoint param.Field[string] `json:"endpoint,required"`
175+
Endpoint param.Field[string] `json:"endpoint" api:"required"`
176176
AuthHeaderValueFormat param.Field[string] `json:"auth_header_value_format"`
177177
AuthMethod param.Field[string] `json:"auth_method"`
178178
Method param.Field[string] `json:"method"`
@@ -232,8 +232,8 @@ func (r AuthProviderCreateRequestOauth2ScopeDelimiter) IsKnown() bool {
232232
}
233233

234234
type AuthProviderCreateRequestOauth2TokenIntrospectionRequestParam struct {
235-
Endpoint param.Field[string] `json:"endpoint,required"`
236-
Triggers param.Field[AuthProviderCreateRequestOauth2TokenIntrospectionRequestTriggersParam] `json:"triggers,required"`
235+
Endpoint param.Field[string] `json:"endpoint" api:"required"`
236+
Triggers param.Field[AuthProviderCreateRequestOauth2TokenIntrospectionRequestTriggersParam] `json:"triggers" api:"required"`
237237
AuthHeaderValueFormat param.Field[string] `json:"auth_header_value_format"`
238238
AuthMethod param.Field[string] `json:"auth_method"`
239239
Method param.Field[string] `json:"method"`
@@ -287,7 +287,7 @@ func (r AuthProviderCreateRequestOauth2TokenIntrospectionRequestResponseContentT
287287
}
288288

289289
type AuthProviderCreateRequestOauth2TokenRequestParam struct {
290-
Endpoint param.Field[string] `json:"endpoint,required"`
290+
Endpoint param.Field[string] `json:"endpoint" api:"required"`
291291
AuthHeaderValueFormat param.Field[string] `json:"auth_header_value_format"`
292292
AuthMethod param.Field[string] `json:"auth_method"`
293293
Method param.Field[string] `json:"method"`
@@ -332,8 +332,8 @@ func (r AuthProviderCreateRequestOauth2TokenRequestResponseContentType) IsKnown(
332332
}
333333

334334
type AuthProviderCreateRequestOauth2UserInfoRequestParam struct {
335-
Endpoint param.Field[string] `json:"endpoint,required"`
336-
Triggers param.Field[AuthProviderCreateRequestOauth2UserInfoRequestTriggersParam] `json:"triggers,required"`
335+
Endpoint param.Field[string] `json:"endpoint" api:"required"`
336+
Triggers param.Field[AuthProviderCreateRequestOauth2UserInfoRequestTriggersParam] `json:"triggers" api:"required"`
337337
AuthHeaderValueFormat param.Field[string] `json:"auth_header_value_format"`
338338
AuthMethod param.Field[string] `json:"auth_method"`
339339
Method param.Field[string] `json:"method"`
@@ -1080,15 +1080,15 @@ func (r adminAuthProviderListResponseJSON) RawJSON() string {
10801080
}
10811081

10821082
type AdminAuthProviderNewParams struct {
1083-
AuthProviderCreateRequest AuthProviderCreateRequestParam `json:"auth_provider_create_request,required"`
1083+
AuthProviderCreateRequest AuthProviderCreateRequestParam `json:"auth_provider_create_request" api:"required"`
10841084
}
10851085

10861086
func (r AdminAuthProviderNewParams) MarshalJSON() (data []byte, err error) {
10871087
return apijson.MarshalRoot(r.AuthProviderCreateRequest)
10881088
}
10891089

10901090
type AdminAuthProviderPatchParams struct {
1091-
AuthProviderUpdateRequest AuthProviderUpdateRequestParam `json:"auth_provider_update_request,required"`
1091+
AuthProviderUpdateRequest AuthProviderUpdateRequestParam `json:"auth_provider_update_request" api:"required"`
10921092
}
10931093

10941094
func (r AdminAuthProviderPatchParams) MarshalJSON() (data []byte, err error) {

adminsecret.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ func (r adminSecretListResponseJSON) RawJSON() string {
169169
}
170170

171171
type AdminSecretNewParams struct {
172-
Value param.Field[string] `json:"value,required"`
172+
Value param.Field[string] `json:"value" api:"required"`
173173
Description param.Field[string] `json:"description"`
174174
}
175175

auth.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ func (r *AuthService) Status(ctx context.Context, query AuthStatusParams, opts .
6262
}
6363

6464
type AuthRequestParam struct {
65-
AuthRequirement param.Field[AuthRequestAuthRequirementParam] `json:"auth_requirement,required"`
66-
UserID param.Field[string] `json:"user_id,required"`
65+
AuthRequirement param.Field[AuthRequestAuthRequirementParam] `json:"auth_requirement" api:"required"`
66+
UserID param.Field[string] `json:"user_id" api:"required"`
6767
// Optional: if provided, the user will be redirected to this URI after
6868
// authorization
6969
NextUri param.Field[string] `json:"next_uri"`
@@ -95,16 +95,16 @@ func (r AuthRequestAuthRequirementOauth2Param) MarshalJSON() (data []byte, err e
9595
}
9696

9797
type ConfirmUserRequestParam struct {
98-
FlowID param.Field[string] `json:"flow_id,required"`
99-
UserID param.Field[string] `json:"user_id,required"`
98+
FlowID param.Field[string] `json:"flow_id" api:"required"`
99+
UserID param.Field[string] `json:"user_id" api:"required"`
100100
}
101101

102102
func (r ConfirmUserRequestParam) MarshalJSON() (data []byte, err error) {
103103
return apijson.MarshalRoot(r)
104104
}
105105

106106
type ConfirmUserResponse struct {
107-
AuthID string `json:"auth_id,required"`
107+
AuthID string `json:"auth_id" api:"required"`
108108
NextUri string `json:"next_uri"`
109109
JSON confirmUserResponseJSON `json:"-"`
110110
}
@@ -127,15 +127,15 @@ func (r confirmUserResponseJSON) RawJSON() string {
127127
}
128128

129129
type AuthAuthorizeParams struct {
130-
AuthRequest AuthRequestParam `json:"auth_request,required"`
130+
AuthRequest AuthRequestParam `json:"auth_request" api:"required"`
131131
}
132132

133133
func (r AuthAuthorizeParams) MarshalJSON() (data []byte, err error) {
134134
return apijson.MarshalRoot(r.AuthRequest)
135135
}
136136

137137
type AuthConfirmUserParams struct {
138-
ConfirmUserRequest ConfirmUserRequestParam `json:"confirm_user_request,required"`
138+
ConfirmUserRequest ConfirmUserRequestParam `json:"confirm_user_request" api:"required"`
139139
}
140140

141141
func (r AuthConfirmUserParams) MarshalJSON() (data []byte, err error) {
@@ -144,7 +144,7 @@ func (r AuthConfirmUserParams) MarshalJSON() (data []byte, err error) {
144144

145145
type AuthStatusParams struct {
146146
// Authorization ID
147-
ID param.Field[string] `query:"id,required"`
147+
ID param.Field[string] `query:"id" api:"required"`
148148
// Timeout in seconds (max 59)
149149
Wait param.Field[int64] `query:"wait"`
150150
}

chat.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ func NewChatService(opts ...option.RequestOption) (r *ChatService) {
3232

3333
type ChatMessage struct {
3434
// The content of the message.
35-
Content string `json:"content,required"`
35+
Content string `json:"content" api:"required"`
3636
// The role of the author of this message. One of system, user, tool, or assistant.
37-
Role string `json:"role,required"`
37+
Role string `json:"role" api:"required"`
3838
// tool Name
3939
Name string `json:"name"`
4040
// tool_call_id
@@ -127,9 +127,9 @@ func (r ChatMessageToolCallsType) IsKnown() bool {
127127

128128
type ChatMessageParam struct {
129129
// The content of the message.
130-
Content param.Field[string] `json:"content,required"`
130+
Content param.Field[string] `json:"content" api:"required"`
131131
// The role of the author of this message. One of system, user, tool, or assistant.
132-
Role param.Field[string] `json:"role,required"`
132+
Role param.Field[string] `json:"role" api:"required"`
133133
// tool Name
134134
Name param.Field[string] `json:"name"`
135135
// tool_call_id

chatcompletion.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func (r *ChatCompletionService) New(ctx context.Context, body ChatCompletionNewP
4040
}
4141

4242
type ChatCompletionNewParams struct {
43-
ChatRequest ChatRequestParam `json:"chat_request,required"`
43+
ChatRequest ChatRequestParam `json:"chat_request" api:"required"`
4444
}
4545

4646
func (r ChatCompletionNewParams) MarshalJSON() (data []byte, err error) {

internal/apiform/form_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,18 @@ type DateTime struct {
3939

4040
type AdditionalProperties struct {
4141
A bool `form:"a"`
42-
Extras map[string]interface{} `form:"-,extras"`
42+
Extras map[string]interface{} `form:"-" api:"extrafields"`
4343
}
4444

4545
type TypedAdditionalProperties struct {
4646
A bool `form:"a"`
47-
Extras map[string]int `form:"-,extras"`
47+
Extras map[string]int `form:"-" api:"extrafields"`
4848
}
4949

5050
type EmbeddedStructs struct {
5151
AdditionalProperties
5252
A *int `form:"number2"`
53-
Extras map[string]interface{} `form:"-,extras"`
53+
Extras map[string]interface{} `form:"-" api:"extrafields"`
5454
}
5555

5656
type Recursive struct {

internal/apiform/tag.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"strings"
66
)
77

8+
const apiStructTag = "api"
89
const jsonStructTag = "json"
910
const formStructTag = "form"
1011
const formatStructTag = "format"
@@ -39,9 +40,27 @@ func parseFormStructTag(field reflect.StructField) (tag parsedStructTag, ok bool
3940
tag.metadata = true
4041
}
4142
}
43+
44+
parseApiStructTag(field, &tag)
4245
return
4346
}
4447

48+
func parseApiStructTag(field reflect.StructField, tag *parsedStructTag) {
49+
raw, ok := field.Tag.Lookup(apiStructTag)
50+
if !ok {
51+
return
52+
}
53+
parts := strings.Split(raw, ",")
54+
for _, part := range parts {
55+
switch part {
56+
case "extrafields":
57+
tag.extras = true
58+
case "required":
59+
tag.required = true
60+
}
61+
}
62+
}
63+
4564
func parseFormatStructTag(field reflect.StructField) (format string, ok bool) {
4665
format, ok = field.Tag.Lookup(formatStructTag)
4766
return

internal/apijson/json_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ type DateTime struct {
4040

4141
type AdditionalProperties struct {
4242
A bool `json:"a"`
43-
ExtraFields map[string]interface{} `json:"-,extras"`
43+
ExtraFields map[string]interface{} `json:"-" api:"extrafields"`
4444
}
4545

4646
type TypedAdditionalProperties struct {
4747
A bool `json:"a"`
48-
ExtraFields map[string]int `json:"-,extras"`
48+
ExtraFields map[string]int `json:"-" api:"extrafields"`
4949
}
5050

5151
type EmbeddedStruct struct {
@@ -65,7 +65,7 @@ type EmbeddedStructJSON struct {
6565
type EmbeddedStructs struct {
6666
EmbeddedStruct
6767
A *int `json:"a"`
68-
ExtraFields map[string]interface{} `json:"-,extras"`
68+
ExtraFields map[string]interface{} `json:"-" api:"extrafields"`
6969

7070
JSON EmbeddedStructsJSON
7171
}
@@ -86,7 +86,7 @@ type JSONFieldStruct struct {
8686
B int64 `json:"b"`
8787
C string `json:"c"`
8888
D string `json:"d"`
89-
ExtraFields map[string]int64 `json:"-,extras"`
89+
ExtraFields map[string]int64 `json:"-" api:"extrafields"`
9090
JSON JSONFieldStructJSON `json:"-,metadata"`
9191
}
9292

internal/apijson/tag.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"strings"
66
)
77

8+
const apiStructTag = "api"
89
const jsonStructTag = "json"
910
const formatStructTag = "format"
1011

@@ -38,9 +39,28 @@ func parseJSONStructTag(field reflect.StructField) (tag parsedStructTag, ok bool
3839
tag.inline = true
3940
}
4041
}
42+
43+
// the `api` struct tag is only used alongside `json` for custom behaviour
44+
parseApiStructTag(field, &tag)
4145
return
4246
}
4347

48+
func parseApiStructTag(field reflect.StructField, tag *parsedStructTag) {
49+
raw, ok := field.Tag.Lookup(apiStructTag)
50+
if !ok {
51+
return
52+
}
53+
parts := strings.Split(raw, ",")
54+
for _, part := range parts {
55+
switch part {
56+
case "extrafields":
57+
tag.extras = true
58+
case "required":
59+
tag.required = true
60+
}
61+
}
62+
}
63+
4464
func parseFormatStructTag(field reflect.StructField) (format string, ok bool) {
4565
format, ok = field.Tag.Lookup(formatStructTag)
4666
return

0 commit comments

Comments
 (0)