mirror of https://github.com/vernonkeenan/lib
fix: align Asset lifecycle contract
parent
a0cd40f1cf
commit
74bf8cf802
|
|
@ -72,10 +72,10 @@ type ClientService interface {
|
||||||
// GetAssetsContext get a list of assets.
|
// GetAssetsContext get a list of assets.
|
||||||
GetAssetsContext(ctx context.Context, params *GetAssetsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*GetAssetsOK, error)
|
GetAssetsContext(ctx context.Context, params *GetAssetsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*GetAssetsOK, error)
|
||||||
|
|
||||||
// PostAssets add a new asset to salesforce devops net.
|
// PostAssets add a new asset.
|
||||||
PostAssets(params *PostAssetsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*PostAssetsOK, error)
|
PostAssets(params *PostAssetsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*PostAssetsOK, error)
|
||||||
|
|
||||||
// PostAssetsContext add a new asset to salesforce devops net.
|
// PostAssetsContext add a new asset.
|
||||||
PostAssetsContext(ctx context.Context, params *PostAssetsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*PostAssetsOK, error)
|
PostAssetsContext(ctx context.Context, params *PostAssetsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*PostAssetsOK, error)
|
||||||
|
|
||||||
// PutAsset update a single asset.
|
// PutAsset update a single asset.
|
||||||
|
|
@ -156,7 +156,7 @@ func (a *Client) DeleteAssetContext(ctx context.Context, params *DeleteAssetPara
|
||||||
|
|
||||||
// GetAssets gets a list of assets.
|
// GetAssets gets a list of assets.
|
||||||
//
|
//
|
||||||
// Return a list of all available Assets.
|
// Return tenant-bound Asset records. Requires the exact crm:asset:read scope..
|
||||||
//
|
//
|
||||||
// This method does not support injected context.
|
// This method does not support injected context.
|
||||||
// However, timeout and opentracing contexts are honored whenever enabled.
|
// However, timeout and opentracing contexts are honored whenever enabled.
|
||||||
|
|
@ -175,7 +175,7 @@ func (a *Client) GetAssets(params *GetAssetsParams, authInfo runtime.ClientAuthI
|
||||||
|
|
||||||
// GetAssetsContext gets a list of assets.
|
// GetAssetsContext gets a list of assets.
|
||||||
//
|
//
|
||||||
// Return a list of all available Assets.
|
// Return tenant-bound Asset records. Requires the exact crm:asset:read scope..
|
||||||
//
|
//
|
||||||
// Do not use the deprecated [GetAssetsParams.Context] with this method: it would be ignored.
|
// Do not use the deprecated [GetAssetsParams.Context] with this method: it would be ignored.
|
||||||
func (a *Client) GetAssetsContext(ctx context.Context, params *GetAssetsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*GetAssetsOK, error) {
|
func (a *Client) GetAssetsContext(ctx context.Context, params *GetAssetsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*GetAssetsOK, error) {
|
||||||
|
|
@ -221,9 +221,9 @@ func (a *Client) GetAssetsContext(ctx context.Context, params *GetAssetsParams,
|
||||||
panic(msg)
|
panic(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// PostAssets adds a new asset to salesforce devops net.
|
// PostAssets adds a new asset.
|
||||||
//
|
//
|
||||||
// Asset record to be added.
|
// Create one tenant-bound Asset with server-owned identity and audit fields..
|
||||||
//
|
//
|
||||||
// This method does not support injected context.
|
// This method does not support injected context.
|
||||||
// However, timeout and opentracing contexts are honored whenever enabled.
|
// However, timeout and opentracing contexts are honored whenever enabled.
|
||||||
|
|
@ -240,9 +240,9 @@ func (a *Client) PostAssets(params *PostAssetsParams, authInfo runtime.ClientAut
|
||||||
return a.PostAssetsContext(ctx, params, authInfo, opts...)
|
return a.PostAssetsContext(ctx, params, authInfo, opts...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// PostAssetsContext adds a new asset to salesforce devops net.
|
// PostAssetsContext adds a new asset.
|
||||||
//
|
//
|
||||||
// Asset record to be added.
|
// Create one tenant-bound Asset with server-owned identity and audit fields..
|
||||||
//
|
//
|
||||||
// Do not use the deprecated [PostAssetsParams.Context] with this method: it would be ignored.
|
// Do not use the deprecated [PostAssetsParams.Context] with this method: it would be ignored.
|
||||||
func (a *Client) PostAssetsContext(ctx context.Context, params *PostAssetsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*PostAssetsOK, error) {
|
func (a *Client) PostAssetsContext(ctx context.Context, params *PostAssetsParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*PostAssetsOK, error) {
|
||||||
|
|
@ -290,7 +290,7 @@ func (a *Client) PostAssetsContext(ctx context.Context, params *PostAssetsParams
|
||||||
|
|
||||||
// PutAsset updates a single asset.
|
// PutAsset updates a single asset.
|
||||||
//
|
//
|
||||||
// Update a single asset specified by assetId.
|
// Optimistically update one tenant-bound Asset's authoritative business fields..
|
||||||
//
|
//
|
||||||
// This method does not support injected context.
|
// This method does not support injected context.
|
||||||
// However, timeout and opentracing contexts are honored whenever enabled.
|
// However, timeout and opentracing contexts are honored whenever enabled.
|
||||||
|
|
@ -309,7 +309,7 @@ func (a *Client) PutAsset(params *PutAssetParams, authInfo runtime.ClientAuthInf
|
||||||
|
|
||||||
// PutAssetContext updates a single asset.
|
// PutAssetContext updates a single asset.
|
||||||
//
|
//
|
||||||
// Update a single asset specified by assetId.
|
// Optimistically update one tenant-bound Asset's authoritative business fields..
|
||||||
//
|
//
|
||||||
// Do not use the deprecated [PutAssetParams.Context] with this method: it would be ignored.
|
// Do not use the deprecated [PutAssetParams.Context] with this method: it would be ignored.
|
||||||
func (a *Client) PutAssetContext(ctx context.Context, params *PutAssetParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*PutAssetOK, error) {
|
func (a *Client) PutAssetContext(ctx context.Context, params *PutAssetParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*PutAssetOK, error) {
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,12 @@ func (o *PutAssetReader) ReadResponse(response runtime.ClientResponse, consumer
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return nil, result
|
return nil, result
|
||||||
|
case 409:
|
||||||
|
result := NewPutAssetConflict()
|
||||||
|
if err := result.readResponse(response, consumer, o.formats); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, result
|
||||||
case 422:
|
case 422:
|
||||||
result := NewPutAssetUnprocessableEntity()
|
result := NewPutAssetUnprocessableEntity()
|
||||||
if err := result.readResponse(response, consumer, o.formats); err != nil {
|
if err := result.readResponse(response, consumer, o.formats); err != nil {
|
||||||
|
|
@ -382,6 +388,83 @@ func (o *PutAssetNotFound) readResponse(response runtime.ClientResponse, consume
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewPutAssetConflict creates a PutAssetConflict with default headers values
|
||||||
|
func NewPutAssetConflict() *PutAssetConflict {
|
||||||
|
return &PutAssetConflict{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// PutAssetConflict describes a response with status code 409, with default header values.
|
||||||
|
//
|
||||||
|
// Conflict
|
||||||
|
type PutAssetConflict struct {
|
||||||
|
AccessControlAllowOrigin string
|
||||||
|
|
||||||
|
Payload *crm_models.Error
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsSuccess returns true when this put asset conflict response has a 2xx status code
|
||||||
|
func (o *PutAssetConflict) IsSuccess() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsRedirect returns true when this put asset conflict response has a 3xx status code
|
||||||
|
func (o *PutAssetConflict) IsRedirect() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsClientError returns true when this put asset conflict response has a 4xx status code
|
||||||
|
func (o *PutAssetConflict) IsClientError() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsServerError returns true when this put asset conflict response has a 5xx status code
|
||||||
|
func (o *PutAssetConflict) IsServerError() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsCode returns true when this put asset conflict response a status code equal to that given
|
||||||
|
func (o *PutAssetConflict) IsCode(code int) bool {
|
||||||
|
return code == 409
|
||||||
|
}
|
||||||
|
|
||||||
|
// Code gets the status code for the put asset conflict response
|
||||||
|
func (o *PutAssetConflict) Code() int {
|
||||||
|
return 409
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *PutAssetConflict) Error() string {
|
||||||
|
payload, _ := json.Marshal(o.Payload)
|
||||||
|
return fmt.Sprintf("[PUT /assets][%d] putAssetConflict %s", 409, payload)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *PutAssetConflict) String() string {
|
||||||
|
payload, _ := json.Marshal(o.Payload)
|
||||||
|
return fmt.Sprintf("[PUT /assets][%d] putAssetConflict %s", 409, payload)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *PutAssetConflict) GetPayload() *crm_models.Error {
|
||||||
|
return o.Payload
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *PutAssetConflict) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
|
||||||
|
|
||||||
|
// hydrates response header Access-Control-Allow-Origin
|
||||||
|
hdrAccessControlAllowOrigin := response.GetHeader("Access-Control-Allow-Origin")
|
||||||
|
|
||||||
|
if hdrAccessControlAllowOrigin != "" {
|
||||||
|
o.AccessControlAllowOrigin = hdrAccessControlAllowOrigin
|
||||||
|
}
|
||||||
|
|
||||||
|
o.Payload = new(crm_models.Error)
|
||||||
|
|
||||||
|
// response payload
|
||||||
|
if err := consumer.Consume(response.Body(), o.Payload); err != nil && !stderrors.Is(err, io.EOF) {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// NewPutAssetUnprocessableEntity creates a PutAssetUnprocessableEntity with default headers values
|
// NewPutAssetUnprocessableEntity creates a PutAssetUnprocessableEntity with default headers values
|
||||||
func NewPutAssetUnprocessableEntity() *PutAssetUnprocessableEntity {
|
func NewPutAssetUnprocessableEntity() *PutAssetUnprocessableEntity {
|
||||||
return &PutAssetUnprocessableEntity{}
|
return &PutAssetUnprocessableEntity{}
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,9 @@ type Asset struct {
|
||||||
// Current Lifecycle End Date
|
// Current Lifecycle End Date
|
||||||
CurrentLifecycleEndDate *string `json:"CurrentLifecycleEndDate,omitempty"`
|
CurrentLifecycleEndDate *string `json:"CurrentLifecycleEndDate,omitempty"`
|
||||||
|
|
||||||
|
// Current Lifecycle Start Date
|
||||||
|
CurrentLifecycleStartDate *string `json:"CurrentLifecycleStartDate,omitempty"`
|
||||||
|
|
||||||
// Current Monthly Recurring Revenue
|
// Current Monthly Recurring Revenue
|
||||||
CurrentMrr *float64 `json:"CurrentMrr,omitempty"`
|
CurrentMrr *float64 `json:"CurrentMrr,omitempty"`
|
||||||
|
|
||||||
|
|
@ -135,7 +138,7 @@ type Asset struct {
|
||||||
// Serial Number
|
// Serial Number
|
||||||
SerialNumber *string `json:"SerialNumber,omitempty"`
|
SerialNumber *string `json:"SerialNumber,omitempty"`
|
||||||
|
|
||||||
// Status
|
// Compatibility-only legacy field. The authoritative CRM Asset table does not persist Status; native CRM mutations reject non-null values.
|
||||||
Status *string `json:"Status,omitempty"`
|
Status *string `json:"Status,omitempty"`
|
||||||
|
|
||||||
// Status Reason
|
// Status Reason
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
package crm_models
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAssetLifecycleStartDateIsInGeneratedJSONContract(t *testing.T) {
|
||||||
|
start := "2026-07-24T03:00:00Z"
|
||||||
|
body, err := json.Marshal(&Asset{CurrentLifecycleStartDate: &start})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
const want = `{"CurrentLifecycleStartDate":"2026-07-24T03:00:00Z"}`
|
||||||
|
if string(body) != want {
|
||||||
|
t.Fatalf("got %s, want %s", body, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -49,6 +49,10 @@ Asset:
|
||||||
description: Current Lifecycle End Date
|
description: Current Lifecycle End Date
|
||||||
type: string
|
type: string
|
||||||
x-nullable: true
|
x-nullable: true
|
||||||
|
CurrentLifecycleStartDate:
|
||||||
|
description: Current Lifecycle Start Date
|
||||||
|
type: string
|
||||||
|
x-nullable: true
|
||||||
CurrentMrr:
|
CurrentMrr:
|
||||||
description: Current Monthly Recurring Revenue
|
description: Current Monthly Recurring Revenue
|
||||||
type: number
|
type: number
|
||||||
|
|
@ -150,7 +154,7 @@ Asset:
|
||||||
type: string
|
type: string
|
||||||
x-nullable: true
|
x-nullable: true
|
||||||
Status:
|
Status:
|
||||||
description: Status
|
description: Compatibility-only legacy field. The authoritative CRM Asset table does not persist Status; native CRM mutations reject non-null values.
|
||||||
type: string
|
type: string
|
||||||
x-nullable: true
|
x-nullable: true
|
||||||
StatusReason:
|
StatusReason:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue