{"files":{"SKILL.md":"---\nname: hhs-media-services-api\ndescription: \"HHS Media Services API skill. Use when working with HHS Media Services for resources.json, resources. Covers 31 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# HHS Media Services API\nAPI version: 2\n\n## Auth\nNo authentication required.\n\n## Base URL\nNot specified.\n\n## Setup\n1. No auth setup needed\n2. GET /resources.json -- verify access\n\n## Endpoints\n\n31 endpoints across 2 groups. See references/api-spec.lap for full details.\n\n### resources.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /resources.json | Get Resources by search query |\n\n### resources\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /resources/campaigns.json | Get Campaigns |\n| GET | /resources/campaigns/{id}.json | Get Campaign by ID |\n| GET | /resources/campaigns/{id}/media.json | Get MediaItems by Campaign ID |\n| GET | /resources/campaigns/{id}/syndicate.{format} | Get MediaItems for Campaign |\n| GET | /resources/languages.json | Get Languages |\n| GET | /resources/languages/{id}.json | Get Language by ID |\n| GET | /resources/media.json | Get MediaItems |\n| GET | /resources/media/featured.json | Get the list of featured content in the syndication system |\n| GET | /resources/media/mostPopularMedia.{format} | Get MediaItems by popularity |\n| GET | /resources/media/searchResults.json | Get MediaItems by search query |\n| GET | /resources/media/{id}.json | Get MediaItem by ID |\n| GET | /resources/media/{id}/content | Get content for MediaItem |\n| GET | /resources/media/{id}/embed.json | Get embed code for MediaItem |\n| GET | /resources/media/{id}/preview.jpg | Get Tag by ID |\n| GET | /resources/media/{id}/relatedMedia.{format} | Get related MediaItems by ID |\n| GET | /resources/media/{id}/syndicate.{format} | Get syndicated content for MediaItem |\n| GET | /resources/media/{id}/thumbnail.jpg | Get JPG thumbnail for MediaItem |\n| GET | /resources/media/{id}/youtubeMetaData.json | Get Youtube metadata for MediaItem |\n| GET | /resources/mediaTypes.{format} | Get MediaTypes |\n| GET | /resources/sources.json | Get Sources |\n| GET | /resources/sources/{id}.json | Get Source by ID |\n| GET | /resources/sources/{id}/syndicate.{format} | Get MediaItems for Source |\n| GET | /resources/tags.{format} | Get Tags |\n| GET | /resources/tags/tagLanguages.{format} | Get TagLanguages |\n| GET | /resources/tags/tagTypes.{format} | Get MediaItems for Tag |\n| GET | /resources/tags/{id}.{format} | Get Tag by ID |\n| GET | /resources/tags/{id}/media.{format} | Get MediaItems for Tag |\n| GET | /resources/tags/{id}/related.{format} | Get related Tags by ID |\n| GET | /resources/tags/{id}/syndicate.{format} | Get MediaItems for Tag |\n| GET | /resources/userMediaLists/{id}.json | Get UserMediaList by ID |\n\n## Common Questions\n\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Search resources.json?\" -> GET /resources.json\n- \"List all campaigns.json?\" -> GET /resources/campaigns.json\n- \"Get campaign details?\" -> GET /resources/campaigns/{id}.json\n- \"List all media.json?\" -> GET /resources/campaigns/{id}/media.json\n- \"Get syndicate.{format} details?\" -> GET /resources/campaigns/{id}/syndicate.{format}\n- \"List all languages.json?\" -> GET /resources/languages.json\n- \"Get language details?\" -> GET /resources/languages/{id}.json\n- \"List all media.json?\" -> GET /resources/media.json\n- \"List all featured.json?\" -> GET /resources/media/featured.json\n- \"Get mostPopularMedia.{format} details?\" -> GET /resources/media/mostPopularMedia.{format}\n- \"Search searchResults.json?\" -> GET /resources/media/searchResults.json\n- \"Get media details?\" -> GET /resources/media/{id}.json\n- \"List all content?\" -> GET /resources/media/{id}/content\n- \"List all embed.json?\" -> GET /resources/media/{id}/embed.json\n- \"List all preview.jpg?\" -> GET /resources/media/{id}/preview.jpg\n- \"Get relatedMedia.{format} details?\" -> GET /resources/media/{id}/relatedMedia.{format}\n- \"Get syndicate.{format} details?\" -> GET /resources/media/{id}/syndicate.{format}\n- \"List all thumbnail.jpg?\" -> GET /resources/media/{id}/thumbnail.jpg\n- \"List all youtubeMetaData.json?\" -> GET /resources/media/{id}/youtubeMetaData.json\n- \"Get mediaTypes.{format} details?\" -> GET /resources/mediaTypes.{format}\n- \"List all sources.json?\" -> GET /resources/sources.json\n- \"Get source details?\" -> GET /resources/sources/{id}.json\n- \"Get syndicate.{format} details?\" -> GET /resources/sources/{id}/syndicate.{format}\n- \"Get tags.{format} details?\" -> GET /resources/tags.{format}\n- \"Get tagLanguages.{format} details?\" -> GET /resources/tags/tagLanguages.{format}\n- \"Get tagTypes.{format} details?\" -> GET /resources/tags/tagTypes.{format}\n- \"Get tag details?\" -> GET /resources/tags/{id}.{format}\n- \"Get media.{format} details?\" -> GET /resources/tags/{id}/media.{format}\n- \"Get related.{format} details?\" -> GET /resources/tags/{id}/related.{format}\n- \"Get syndicate.{format} details?\" -> GET /resources/tags/{id}/syndicate.{format}\n- \"Get userMediaList details?\" -> GET /resources/userMediaLists/{id}.json\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- List endpoints may support pagination; check for limit, offset, or cursor params\n\n## CLI\n\n```bash\n# Update this spec to the latest version\nnpx @lap-platform/lapsh get hhs-media-services-api -o references/api-spec.lap\n\n# Search for related APIs\nnpx @lap-platform/lapsh search hhs-media-services-api\n```\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api HHS Media Services API\n@version 2\n@endpoints 31\n@hint download_for_search\n@toc resources.json(1), resources(30)\n\n@group resources.json\n@endpoint GET /resources.json\n@desc Get Resources by search query\n@required {q: any # The search query supplied by the user}\n@returns(200) \"Returns the list of Resources matching the search query 'q'.<p>The search query 'q' is a Lucene query.<br>The syntax for a Lucene query can be found <a href=\"http://lucene.apache.org/core/2_9_4/queryparsersyntax.html\">here</a>.\"\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endgroup\n\n@group resources\n@endpoint GET /resources/campaigns.json\n@desc Get Campaigns\n@optional {max: any # The maximum number of records to return, offset: any # The offset of the records set to return for pagination, sort: any # * Set of fields to sort the records by.}\n@returns(200) Returns the list of Campaigns.\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endpoint GET /resources/campaigns/{id}.json\n@desc Get Campaign by ID\n@required {id: any # The id of the record to look up}\n@returns(200) Returns the Campaign identified by the 'id'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/campaigns/{id}/media.json\n@desc Get MediaItems by Campaign ID\n@required {id: any # The id of the campaign to find media items for}\n@optional {sort: any # The name of the property to which sorting will be applied, max: any # The maximum number of records to return, offset: any # The offset of the records set to return for pagination}\n@returns(200) Returns the list of MediaItems for the Campaign identified by the 'id'.\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endpoint GET /resources/campaigns/{id}/syndicate.{format}\n@desc Get MediaItems for Campaign\n@required {id: any # The id of the record to look up}\n@optional {displayMethod: any # Method used to render an html request. Accepts one: [mv, list, feed]}\n@returns(200) Renders the list of MediaItems associated with the Tag identified by the 'id'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/languages.json\n@desc Get Languages\n@optional {max: any # The maximum number of records to return, offset: any # Return records starting at the offset index., sort: any # The name of the property to which sorting will be applied}\n@returns(200) Returns the list Languages.\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endpoint GET /resources/languages/{id}.json\n@desc Get Language by ID\n@required {id: any # The id of the language to look up}\n@returns(200) Returns the Language identified by the 'id'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/media.json\n@desc Get MediaItems\n@optional {max: any # The maximum number of records to return, offset: any # The offset of the records set to return for pagination., sort: any # * Set of fields to sort the records by., order: any # * The ascending or descending order., mediaTypes: any # Find all media items belonging to the specified media type[s]., name: any # Find all media items containing the provided name, case insensitive., collectionId: any # Restrict filtering to media items in a specific collection., nameContains: any # Find all media items containing the partial name, case insensitive., descriptionContains: any # Find all media items containing the provided partial description, case insensitive., sourceUrl: any # Find all media items which have the provided sourceUrl, case insensitive., sourceUrlContains: any # Find all media items which contain the provided partial sourceUrl, case insensitive., customThumbnailUrl: any # Find all media items which have the provided customThumbnailUrl, case insensitive., customThumbnailUrlContains: any # Find all media items which contain the provided partial customThumbnailUrl, case insensitive., dateContentAuthored: any # Find all media items authored on the provided day (RFC 3339, time ignored)., dateContentUpdated: any # Find all media items updated on the provided day (RFC 3339, time ignored)., dateContentPublished: any # Find all media items published on the provided day (RFC 3339, time ignored)., dateContentReviewed: any # Find all media items reviewed on the provided day (RFC 3339, time ignored)., dateSyndicationCaptured: any # Find all media items syndicated on the provided day (RFC 3339, time ignored)., dateSyndicationUpdated: any # Find all media items updated through the syndication system on the provided day, (RFC 3339, time ignored)., contentAuthoredSinceDate: any # Find all media items authored since the provided day (RFC 3339, time ignored)., contentAuthoredBeforeDate: any # Find all media items authored before the provided day (RFC 3339, time ignored)., contentAuthoredInRange: any # Find all media items authored between the provided start and end days (RFC 3339, comma separated, time ignored)., contentUpdatedSinceDate: any # Find all media items updated since the provided day (RFC 3339, time ignored)., contentUpdatedBeforeDate: any # Find all media items updated before the provided day (RFC 3339, time ignored)., contentUpdatedInRange: any # Find all media items updated between the provided start and end days (RFC 3339, comma separated, time ignored)., contentPublishedSinceDate: any # Find all media items updated since the provided day (RFC 3339, time ignored)., contentPublishedBeforeDate: any # Find all media items published before the provided day (RFC 3339, time ignored)., contentPublishedInRange: any # Find all media items published between the provided start and end days (RFC 3339, comma separated, time ignored)., contentReviewedSinceDate: any # Find all media items reviewed since the provided day (RFC 3339, time ignored)., contentReviewedBeforeDate: any # Find all media items reviewed before the provided day (RFC 3339, time ignored)., contentReviewedInRange: any # Find all media items reviewed between the provided start and end days (RFC 3339, comma separated, time ignored)., syndicationCapturedSinceDate: any # Find all media items authored since the provided day (RFC 3339, time ignored)., syndicationCapturedBeforeDate: any # Find all media items authored before the provided day (RFC 3339, time ignored)., syndicationCapturedInRange: any # Find all media items authored between the provided start and end days (RFC 3339, comma separated, time ignored)., syndicationUpdatedSinceDate: any # Find all media items updated since the provided day, (RFC 3339, time ignored)., syndicationUpdatedBeforeDate: any # Find all media items updated before the provided day, (RFC 3339, time ignored)., syndicationUpdatedInRange: any # Find all media items updated between the provided start and end days, (RFC 3339, comma separated, time ignored)., syndicationVisibleSinceDate: any # Find all media items visible since the provided day, (RFC 3339, time ignored)., syndicationVisibleBeforeDate: any # Find all media items visible before the provided day, (RFC 3339, time ignored)., syndicationVisibleInRange: any # Find all media items visible between the provided start and end days, (RFC 3339, comma separated, time ignored)., languageId: any # Find all media items written in the language specified by Id., languageName: any # Find all media items written in the language specified by name, case insensitive., languageIsoCode: any # Find all media items written in the language specified by 639-2 isoCode , case insensitive., hash: any # Find all media items which match the provided hash, case insensitive., hashContains: any # Find all media items which match the provided partial hash, case insensitive., sourceId: any # Find all media items that belong to the source specified by Id., sourceName: any # Find all media items that belong to the source specified by name, case insensitive., sourceNameContains: any # Find all media items that belong to the source specified by partial name, case insensitive., sourceAcronym: any # Find all media items that belong to the source specified by acronym, case insensitive., sourceAcronymContains: any # Find all media items that belong to the source specified by partial acronym, case insensitive., tagIds: any # Find only media items tagged with the specified tag Ids., restrictToSet: any # Find only media from within the supplied list of Ids., createdBy: any # Find all media items containing the createdBy value.}\n@returns(200) Returns the list of MediaItems matching the specified query parameters.\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endpoint GET /resources/media/featured.json\n@desc Get the list of featured content in the syndication system\n@optional {sort: any # The name of the property to which sorting will be applied, max: any # The maximum number of records to return, offset: any # Return records starting at the offset index.}\n@returns(200) Get the list of featured content in the syndication system\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endpoint GET /resources/media/mostPopularMedia.{format}\n@desc Get MediaItems by popularity\n@optional {max: any # The maximum number of records to return, offset: any # The offset of the records set to return for pagination.}\n@returns(200) Returns the list of MediaItems with the highest ratings.\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endpoint GET /resources/media/searchResults.json\n@desc Get MediaItems by search query\n@required {q: any # The search query supplied by the user}\n@optional {max: any # The maximum number of records to return, offset: any # The offset of the records set to return for pagination.}\n@returns(200) Returns the list of MediaItems matching the search query 'q'.<p>Please enter keyword or URL in search query 'q'.\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endpoint GET /resources/media/{id}.json\n@desc Get MediaItem by ID\n@required {id: any # The id of the record to look up}\n@returns(200) Returns the MediaItem identified by the 'id'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/media/{id}/content\n@desc Get content for MediaItem\n@required {id: any # The id of the media to show content for.}\n@optional {calledByBuild: any # The method that called this method}\n@returns(200) Returns the raw content (html, image, etc...) for the MediaItem identified by the 'id'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/media/{id}/embed.json\n@desc Get embed code for MediaItem\n@required {id: any # The id of the media to get embed code for.}\n@optional {flavor: any # Currently supports 'iframe', defaults to 'javascript'., width: any # The width of the generated iframe., height: any # The height of the generated iframe., iframeName: any # The name of the iframe element, excludeJquery: any # Should a reference to the JQuery Library be omitted?, excludeDiv: any # Should the div to insert content into be omitted?, divId: any # Should the div to insert content into have a specific name?, displayMethod: any # Method used to render an html request. Accepts one: [mv, list, feed]}\n@returns(200) Returns the javascript or iframe embed code for the MediaItem identified by 'id'.\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endpoint GET /resources/media/{id}/preview.jpg\n@desc Get Tag by ID\n@required {id: any # The id of the media to get a preview for.}\n@returns(200) Returns the JPG preview, where applicable, for the MediaItem identified by the 'id'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/media/{id}/relatedMedia.{format}\n@desc Get related MediaItems by ID\n@required {id: any # The id of the media item to get related media for}\n@optional {max: any # The maximum number of records to return, offset: any # Return records starting at the offset index., sort: any # The name of the property to which sorting will be applied}\n@returns(200) Returns the list of MediaItems related to the MediaItem identified by the 'id'.\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endpoint GET /resources/media/{id}/syndicate.{format}\n@desc Get syndicated content for MediaItem\n@required {id: any # The id of the media to show embed code for.}\n@optional {cssClass: any # The css class to target for extraction., stripStyles: any # Remove in-line styles from content., stripScripts: any # Remove script tags from content., stripImages: any # Remove image tags from content., stripBreaks: any # Remove break tags from content., stripClasses: any # Remove class attributes from content (except 'syndicate')., font-size: any # Set font size (in points) of p, div, and span tags., imageFloat: any # Accepts valid CSS float options, such as 'left' or 'right'. Will inject a style into the content before rendering., imageMargin: any # Accepts 4 CSV values representing pixel sizes of margin similar to CSS. Default format is 'north,east,south,west' - for example '0,10,10,0' would put a 10 pixel margin on the right and bottom sides of an image. Will inject a style into the content before rendering., autoplay: any # If content is a video, the embeded video will auto play when loaded., rel: any # If content is a video, related items will be shown at the end of playback.}\n@returns(200) Returns the syndicated content for a given MediaItem in the specified 'format' (HTML or JSON).\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/media/{id}/thumbnail.jpg\n@desc Get JPG thumbnail for MediaItem\n@required {id: any # The id of the media to get a thumbnail for.}\n@returns(200) Returns the JPG thumbnail, where applicable, for the MediaItem identified by the 'id'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/media/{id}/youtubeMetaData.json\n@desc Get Youtube metadata for MediaItem\n@required {id: any # The id of the video to show meta data for.}\n@returns(200) Returns the Youtube metadata, where applicable, for the MediaItem identified by the 'id'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/mediaTypes.{format}\n@desc Get MediaTypes\n@returns(200) Returns the list of available MediaTypes.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/sources.json\n@desc Get Sources\n@optional {max: any # The maximum number of records to return, offset: any # Return records starting at the offset index., sort: any # The name of the property to which sorting will be applied}\n@returns(200) Returns the list of Sources.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/sources/{id}.json\n@desc Get Source by ID\n@required {id: any # The id of the source to look up}\n@returns(200) Returns the Source identified by the 'id'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/sources/{id}/syndicate.{format}\n@desc Get MediaItems for Source\n@required {id: any # The id of the record to look up}\n@optional {displayMethod: any # Method used to render an html request. Accepts one: [mv, list, feed]}\n@returns(200) Renders the list of MediaItems associated with the Source identified by the 'id'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/tags.{format}\n@desc Get Tags\n@optional {sort: any # The name of the property to which sorting will be applied, max: any # The maximum number of records to return, offset: any # Return records starting at the offset index., name: any # Return tags[s] matching the supplied name, nameContains: any # Return tags which contain the supplied partial name., mediaId: any # Return tags associated with the supplied media id., typeId: any # Return tags belonging to the supplied tag type id., typeName: any # Return tags belonging to the supplied tag type name.}\n@returns(200) Returns the list of Tags matching the specified query parameters in the specified 'format'.\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endpoint GET /resources/tags/tagLanguages.{format}\n@desc Get TagLanguages\n@returns(200) Returns the list of TagLanguages\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/tags/tagTypes.{format}\n@desc Get MediaItems for Tag\n@returns(200) Renders the list of MediaItems associated with the Tag identified by the 'id'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/tags/{id}.{format}\n@desc Get Tag by ID\n@required {id: any # The id of the record to look up}\n@returns(200) Returns the Tag identified by the 'id' in the specified 'format'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/tags/{id}/media.{format}\n@desc Get MediaItems for Tag\n@required {id: any # The id of the tag to look up}\n@optional {sort: any # The name of the property to which sorting will be applied, max: any # The maximum number of records to return, offset: any # Return records starting at the offset index.}\n@returns(200) Returns the list of MediaItems associated with the Tag identified by the 'id'.\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endpoint GET /resources/tags/{id}/related.{format}\n@desc Get related Tags by ID\n@required {id: any # The id of the tag to look up}\n@optional {sort: any # The name of the property to which sorting will be applied, max: any # The maximum number of records to return, offset: any # Return records starting at the offset index.}\n@returns(200) Returns the list of Tags related to the Tag identified by the 'id' in the specified format.\n@errors {400: Bad Request, 500: Internal Server Error}\n\n@endpoint GET /resources/tags/{id}/syndicate.{format}\n@desc Get MediaItems for Tag\n@required {id: any # The id of the record to look up}\n@optional {displayMethod: any # Method used to render an html request. Accepts one: [mv, list, feed]}\n@returns(200) Renders the list of MediaItems associated with the Tag identified by the 'id'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endpoint GET /resources/userMediaLists/{id}.json\n@desc Get UserMediaList by ID\n@required {id: any # The id of the record to look up}\n@optional {displayMethod: any # Method used to render an html request. Accepts one: [mv, list, feed]}\n@returns(200) Get a specific user media list by 'id'.\n@errors {400: Invalid ID, 500: Internal Server Error}\n\n@endgroup\n\n@end\n"}}