Last active
October 27, 2023 16:25
-
-
Save Gattermeier/e4c3d71f8023eaacd79e126c42735ee3 to your computer and use it in GitHub Desktop.
go structs from oak schema
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// GO STRUCTS FROM OAK SCHEMA https://scoop.stg.nyt.net/oak/v1/spec/# | |
// OakAsset schema: https://scoop.stg.nyt.net/oak/v1/spec/#/schemas/OakAsset | |
type OakAsset struct { | |
ID string `json:"id"` | |
URI string `json:"uri"` | |
EditorLink string `json:"editorLink"` | |
Documents Documents `json:"documents"` | |
Metadata OakMetadata `json:"metadata"` | |
} | |
// CreateOakAssetBody Schema: https://scoop.stg.nyt.net/oak/v1/spec/#/schemas/CreateOakAssetBody | |
type CreateOakAssetBody struct { | |
Documents Documents `json:"documents"` | |
Metadata OakMetadata `json:"metadata"` | |
} | |
type Documents struct { | |
Body Body `json:"body"` | |
Scratchpads []Scratchpad `json:"scratchpads,omitempty"` | |
} | |
// Body Structs | |
type Body struct { | |
Type string `json:"type"` | |
Content []InnerContent `json:"content"` | |
} | |
type InnerContent struct { | |
Type string `json:"type"` | |
Content []Content `json:"content"` | |
Attributes Attributes `json:"attrs,omitempty"` // for instance for related links | |
} | |
// Main content structs | |
type Content struct { | |
Type string `json:"type"` | |
Text string `json:"text,omitempty"` | |
Marks []Marks `json:"marks,omitempty"` | |
} | |
type Marks struct { | |
Type string `json:"type"` | |
} | |
type Attributes struct { | |
DisplayStyle string `json:"display_style,omitempty"` | |
Related []string `json:"related,omitempty"` // related links: array of source ids | |
} | |
// Scratchpad Structs | |
type Scratchpad struct { | |
Name string `json:"name"` | |
Doc Doc `json:"doc"` | |
} | |
type Doc struct { | |
Type string `json:"type"` | |
Content []DocContent `json:"content"` | |
} | |
type DocContent struct { | |
Type string `json:"type"` | |
Content []Content `json:"content"` | |
} | |
// OakMetadata schema: https://scoop.stg.nyt.net/oak/v1/spec/#/schemas/OakMetadata | |
// Note: select 4th "object" in dropdown | |
type OakMetadata struct { | |
NewsletterMetaDataType | |
} | |
type NewsletterProductData struct { | |
DefaultTemplateID int `json:"default_template_id"` | |
SubjectPrefix string `json:"subjectPrefix"` | |
URI string `json:"uri"` | |
} | |
type NewsletterProduct struct { | |
Data NewsletterProductData `json:"data"` | |
Code string `json:"code"` | |
AudienceEnabled bool `json:"audienceEnabled"` | |
IsChangeInProgress bool `json:"isChangeInProgress"` | |
Label string `json:"label"` | |
Value string `json:"value"` | |
} | |
type NewsletterMetaDataType struct { | |
PublishAs string `json:"publishAs"` // allowed value: "Newsletter". required. | |
Template bool `json:"template,omitempty"` | |
TemplateID int `json:"templateId,omitempty"` // null or number | |
Slug string `json:"slug,omitempty"` | |
NewsletterPreviewText string `json:"newsletterPreviewText,omitempty"` // null or string | |
NewsletterSubject string `json:"newsletterSubject,omitempty"` // null or string | |
NewsletterProduct NewsletterProduct `json:"newsletterProduct"` // required | |
SubjectPrefix string `json:"subjectPrefix,omitempty"` // required | |
AudienceEnabled bool `json:"audienceEnabled,omitempty"` | |
AudienceType int `json:"audienceType,omitempty"` // null or number | |
Audience int `json:"audience,omitempty"` // null or number | |
NewsletterCancel bool `json:"newsletterCancel,omitempty"` | |
DedupeMemoAudience struct{} `json:"dedupeMemoAudience,omitempty"` | |
ExcludeNewsletter []string `json:"excludeNewsletter,omitempty"` | |
NewsletterSendTime string `json:"newsletterSendTime,omitempty"` // null or string | |
// See mappings for desk: | |
// https://scoop.stg.nyt.net/resources/app/content/common/bootstrap/application/map/desks | |
Desk int `json:"desk,omitempty"` // null or number | |
// ExcludeURI int `json:"excludeURI,omitempty"` // null or number | |
// // MemoAudience struct { | |
// // ID int `json:"id,omitempty"` // null or number | |
// // Name string `json:"name,omitempty"` // null or string | |
// // Body struct{} `json:"body,omitempty"` // null or object | |
// // } `json:"memoAudience"` // object | |
// ABTest struct { | |
// ID int `json:"id"` // required | |
// Name string `json:"name"` // required | |
// CreatedTime int `json:"createdTime"` // required | |
// DisplayName string `json:"displayName"` // required | |
// ProductID int `json:"productId"` // required | |
// Type int `json:"type"` // required | |
// VariantCopyNumber int `json:"variantCopyNumber"` // required | |
// Variants []struct { | |
// VariantID int `json:"variantId"` // required | |
// VariantName string `json:"variantName"` // required | |
// Weight int `json:"weight"` // required | |
// ContentID int `json:"contentId"` // required | |
// PreviewText string `json:"previewText"` | |
// Subject string `json:"subject"` | |
// } `json:"variants"` // required | |
// } `json:"abTest"` // object | |
// NewsletterSendTest struct { | |
// EmailsPerUser struct { | |
// // ?? => ^[0-9]+$ null or string (pattern property) | |
// } `json:"emailsPerUser"` // required | |
// LastStepIDTestSent int `json:"lastStepIdTestSent,omitempty"` // null or number | |
// } `json:"newsletterSendTest"` // object | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment