{"files":{"SKILL.md":"---\nname: aws-ground-station\ndescription: \"AWS Ground Station API skill. Use when working with AWS Ground Station for contact, config, dataflowEndpointGroup. Covers 33 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# AWS Ground Station\nAPI version: 2019-05-23\n\n## Auth\nAWS SigV4\n\n## Base URL\nNot specified.\n\n## Setup\n1. Configure auth: AWS SigV4\n2. GET /config -- returns a list of config objects.\n3. POST /config -- create first config\n\n## Endpoints\n33 endpoints across 12 groups. See references/api-spec.lap for full details.\n\n### Contact\n| Method | Path | Description |\n|--------|------|-------------|\n| DELETE | /contact/{contactId} | Cancels a contact with a specified contact ID. |\n| GET | /contact/{contactId} | Describes an existing contact. |\n| POST | /contact | Reserves a contact using specified parameters. |\n\n### Config\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /config | Creates a Config with the specified configData parameters. Only one type of configData can be specified. |\n| DELETE | /config/{configType}/{configId} | Deletes a Config. |\n| GET | /config/{configType}/{configId} | Returns Config information. Only one Config response can be returned. |\n| GET | /config | Returns a list of Config objects. |\n| PUT | /config/{configType}/{configId} | Updates the Config used when scheduling contacts. Updating a Config will not update the execution parameters for existing future contacts scheduled with this Config. |\n\n### DataflowEndpointGroup\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /dataflowEndpointGroup | Creates a DataflowEndpoint group containing the specified list of DataflowEndpoint objects. The name field in each endpoint is used in your mission profile DataflowEndpointConfig to specify which endpoints to use during a contact. When a contact uses multiple DataflowEndpointConfig objects, each Config must match a DataflowEndpoint in the same group. |\n| DELETE | /dataflowEndpointGroup/{dataflowEndpointGroupId} | Deletes a dataflow endpoint group. |\n| GET | /dataflowEndpointGroup/{dataflowEndpointGroupId} | Returns the dataflow endpoint group. |\n| GET | /dataflowEndpointGroup | Returns a list of DataflowEndpoint groups. |\n\n### Ephemeris\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /ephemeris | Creates an Ephemeris with the specified EphemerisData. |\n| DELETE | /ephemeris/{ephemerisId} | Deletes an ephemeris |\n| GET | /ephemeris/{ephemerisId} | Describes an existing ephemeris. |\n| PUT | /ephemeris/{ephemerisId} | Updates an existing ephemeris |\n\n### Missionprofile\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /missionprofile | Creates a mission profile.  dataflowEdges is a list of lists of strings. Each lower level list of strings has two elements: a from ARN and a to ARN. |\n| DELETE | /missionprofile/{missionProfileId} | Deletes a mission profile. |\n| GET | /missionprofile/{missionProfileId} | Returns a mission profile. |\n| GET | /missionprofile | Returns a list of mission profiles. |\n| PUT | /missionprofile/{missionProfileId} | Updates a mission profile. Updating a mission profile will not update the execution parameters for existing future contacts. |\n\n### Agent\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /agent/{agentId}/configuration | For use by AWS Ground Station Agent and shouldn't be called directly.  Gets the latest configuration information for a registered agent. |\n| POST | /agent | For use by AWS Ground Station Agent and shouldn't be called directly.   Registers a new agent with AWS Ground Station. |\n| PUT | /agent/{agentId} | For use by AWS Ground Station Agent and shouldn't be called directly.  Update the status of the agent. |\n\n### Minute-usage\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /minute-usage | Returns the number of reserved minutes used by account. |\n\n### Satellite\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /satellite/{satelliteId} | Returns a satellite. |\n| GET | /satellite | Returns a list of satellites. |\n\n### Contacts\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /contacts | Returns a list of contacts. If statusList contains AVAILABLE, the request must include groundStation, missionprofileArn, and satelliteArn. |\n\n### Ephemerides\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /ephemerides | List existing ephemerides. |\n\n### Groundstation\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /groundstation | Returns a list of ground stations. |\n\n### Tags\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /tags/{resourceArn} | Returns a list of tags for a specified resource. |\n| POST | /tags/{resourceArn} | Assigns a tag to a resource. |\n| DELETE | /tags/{resourceArn} | Deassigns a resource tag. |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Delete a contact?\" -> DELETE /contact/{contactId}\n- \"Create a config?\" -> POST /config\n- \"Create a dataflowEndpointGroup?\" -> POST /dataflowEndpointGroup\n- \"Create a ephemeris?\" -> POST /ephemeris\n- \"Create a missionprofile?\" -> POST /missionprofile\n- \"Delete a config?\" -> DELETE /config/{configType}/{configId}\n- \"Delete a dataflowEndpointGroup?\" -> DELETE /dataflowEndpointGroup/{dataflowEndpointGroupId}\n- \"Delete a ephemeris?\" -> DELETE /ephemeris/{ephemerisId}\n- \"Delete a missionprofile?\" -> DELETE /missionprofile/{missionProfileId}\n- \"Get contact details?\" -> GET /contact/{contactId}\n- \"Get ephemeris details?\" -> GET /ephemeris/{ephemerisId}\n- \"List all configuration?\" -> GET /agent/{agentId}/configuration\n- \"Get config details?\" -> GET /config/{configType}/{configId}\n- \"Get dataflowEndpointGroup details?\" -> GET /dataflowEndpointGroup/{dataflowEndpointGroupId}\n- \"Create a minute-usage?\" -> POST /minute-usage\n- \"Get missionprofile details?\" -> GET /missionprofile/{missionProfileId}\n- \"Get satellite details?\" -> GET /satellite/{satelliteId}\n- \"List all config?\" -> GET /config\n- \"Create a contact?\" -> POST /contacts\n- \"List all dataflowEndpointGroup?\" -> GET /dataflowEndpointGroup\n- \"Create a ephemeride?\" -> POST /ephemerides\n- \"List all groundstation?\" -> GET /groundstation\n- \"List all missionprofile?\" -> GET /missionprofile\n- \"List all satellite?\" -> GET /satellite\n- \"Get tag details?\" -> GET /tags/{resourceArn}\n- \"Create a agent?\" -> POST /agent\n- \"Delete a tag?\" -> DELETE /tags/{resourceArn}\n- \"Update a agent?\" -> PUT /agent/{agentId}\n- \"Update a config?\" -> PUT /config/{configType}/{configId}\n- \"Update a ephemeris?\" -> PUT /ephemeris/{ephemerisId}\n- \"Update a missionprofile?\" -> PUT /missionprofile/{missionProfileId}\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Create/update endpoints return the modified resource on success\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 AWS Ground Station\n@version 2019-05-23\n@auth AWS SigV4\n@endpoints 33\n@hint download_for_search\n@toc contact(3), config(5), dataflowEndpointGroup(4), ephemeris(4), missionprofile(5), agent(3), minute-usage(1), satellite(2), contacts(1), ephemerides(1), groundstation(1), tags(3)\n\n@group contact\n@endpoint DELETE /contact/{contactId}\n@desc Cancels a contact with a specified contact ID.\n@required {contactId: str}\n@returns(200) {contactId: str?}\n\n@endgroup\n\n@group config\n@endpoint POST /config\n@desc Creates a Config with the specified configData parameters. Only one type of configData can be specified.\n@required {configData: ConfigTypeData, name: str}\n@optional {tags: map<str,str>}\n@returns(200) {configArn: str?, configId: str?, configType: str?}\n\n@endgroup\n\n@group dataflowEndpointGroup\n@endpoint POST /dataflowEndpointGroup\n@desc Creates a DataflowEndpoint group containing the specified list of DataflowEndpoint objects. The name field in each endpoint is used in your mission profile DataflowEndpointConfig to specify which endpoints to use during a contact. When a contact uses multiple DataflowEndpointConfig objects, each Config must match a DataflowEndpoint in the same group.\n@required {endpointDetails: [EndpointDetails]}\n@optional {contactPostPassDurationSeconds: int, contactPrePassDurationSeconds: int, tags: map<str,str>}\n@returns(200) {dataflowEndpointGroupId: str?}\n\n@endgroup\n\n@group ephemeris\n@endpoint POST /ephemeris\n@desc Creates an Ephemeris with the specified EphemerisData.\n@required {name: str, satelliteId: str}\n@optional {enabled: bool, ephemeris: EphemerisData, expirationTime: str(timestamp), kmsKeyArn: str, priority: int, tags: map<str,str>}\n@returns(200) {ephemerisId: str?}\n\n@endgroup\n\n@group missionprofile\n@endpoint POST /missionprofile\n@desc Creates a mission profile.  dataflowEdges is a list of lists of strings. Each lower level list of strings has two elements: a from ARN and a to ARN.\n@required {dataflowEdges: [[str]], minimumViableContactDurationSeconds: int, name: str, trackingConfigArn: str}\n@optional {contactPostPassDurationSeconds: int, contactPrePassDurationSeconds: int, streamsKmsKey: KmsKey, streamsKmsRole: str, tags: map<str,str>}\n@returns(200) {missionProfileId: str?}\n\n@endgroup\n\n@group config\n@endpoint DELETE /config/{configType}/{configId}\n@desc Deletes a Config.\n@required {configId: str, configType: str}\n@returns(200) {configArn: str?, configId: str?, configType: str?}\n\n@endgroup\n\n@group dataflowEndpointGroup\n@endpoint DELETE /dataflowEndpointGroup/{dataflowEndpointGroupId}\n@desc Deletes a dataflow endpoint group.\n@required {dataflowEndpointGroupId: str}\n@returns(200) {dataflowEndpointGroupId: str?}\n\n@endgroup\n\n@group ephemeris\n@endpoint DELETE /ephemeris/{ephemerisId}\n@desc Deletes an ephemeris\n@required {ephemerisId: str}\n@returns(200) {ephemerisId: str?}\n\n@endgroup\n\n@group missionprofile\n@endpoint DELETE /missionprofile/{missionProfileId}\n@desc Deletes a mission profile.\n@required {missionProfileId: str}\n@returns(200) {missionProfileId: str?}\n\n@endgroup\n\n@group contact\n@endpoint GET /contact/{contactId}\n@desc Describes an existing contact.\n@required {contactId: str}\n@returns(200) {contactId: str?, contactStatus: str?, dataflowList: [DataflowDetail]?, endTime: str(timestamp)?, errorMessage: str?, groundStation: str?, maximumElevation: Elevation?{unit: str, value: num(f64)}, missionProfileArn: str?, postPassEndTime: str(timestamp)?, prePassStartTime: str(timestamp)?, region: str?, satelliteArn: str?, startTime: str(timestamp)?, tags: map<str,str>?, visibilityEndTime: str(timestamp)?, visibilityStartTime: str(timestamp)?}\n\n@endgroup\n\n@group ephemeris\n@endpoint GET /ephemeris/{ephemerisId}\n@desc Describes an existing ephemeris.\n@required {ephemerisId: str}\n@returns(200) {creationTime: str(timestamp)?, enabled: bool?, ephemerisId: str?, invalidReason: str?, name: str?, priority: int?, satelliteId: str?, status: str?, suppliedData: EphemerisTypeDescription?{oem: EphemerisDescription?{ephemerisData: str?, sourceS3Object: S3Object?{bucket: str?, key: str?, version: str?}}, tle: EphemerisDescription?{ephemerisData: str?, sourceS3Object: S3Object?{bucket: str?, key: str?, version: str?}}}, tags: map<str,str>?}\n\n@endgroup\n\n@group agent\n@endpoint GET /agent/{agentId}/configuration\n@desc For use by AWS Ground Station Agent and shouldn't be called directly.  Gets the latest configuration information for a registered agent.\n@required {agentId: str}\n@returns(200) {agentId: str?, taskingDocument: str?}\n\n@endgroup\n\n@group config\n@endpoint GET /config/{configType}/{configId}\n@desc Returns Config information. Only one Config response can be returned.\n@required {configId: str, configType: str}\n@returns(200) {configArn: str, configData: ConfigTypeData{antennaDownlinkConfig: AntennaDownlinkConfig?{spectrumConfig: SpectrumConfig{bandwidth: FrequencyBandwidth, centerFrequency: Frequency, polarization: str?}}, antennaDownlinkDemodDecodeConfig: AntennaDownlinkDemodDecodeConfig?{decodeConfig: DecodeConfig{unvalidatedJSON: str}, demodulationConfig: DemodulationConfig{unvalidatedJSON: str}, spectrumConfig: SpectrumConfig{bandwidth: FrequencyBandwidth, centerFrequency: Frequency, polarization: str?}}, antennaUplinkConfig: AntennaUplinkConfig?{spectrumConfig: UplinkSpectrumConfig{centerFrequency: Frequency, polarization: str?}, targetEirp: Eirp{units: str, value: num(f64)}, transmitDisabled: bool?}, dataflowEndpointConfig: DataflowEndpointConfig?{dataflowEndpointName: str, dataflowEndpointRegion: str?}, s3RecordingConfig: S3RecordingConfig?{bucketArn: str, prefix: str?, roleArn: str}, trackingConfig: TrackingConfig?{autotrack: str}, uplinkEchoConfig: UplinkEchoConfig?{antennaUplinkConfigArn: str, enabled: bool}}, configId: str, configType: str?, name: str, tags: map<str,str>?}\n\n@endgroup\n\n@group dataflowEndpointGroup\n@endpoint GET /dataflowEndpointGroup/{dataflowEndpointGroupId}\n@desc Returns the dataflow endpoint group.\n@required {dataflowEndpointGroupId: str}\n@returns(200) {contactPostPassDurationSeconds: int?, contactPrePassDurationSeconds: int?, dataflowEndpointGroupArn: str?, dataflowEndpointGroupId: str?, endpointsDetails: [EndpointDetails]?, tags: map<str,str>?}\n\n@endgroup\n\n@group minute-usage\n@endpoint POST /minute-usage\n@desc Returns the number of reserved minutes used by account.\n@required {month: int, year: int}\n@returns(200) {estimatedMinutesRemaining: int?, isReservedMinutesCustomer: bool?, totalReservedMinuteAllocation: int?, totalScheduledMinutes: int?, upcomingMinutesScheduled: int?}\n\n@endgroup\n\n@group missionprofile\n@endpoint GET /missionprofile/{missionProfileId}\n@desc Returns a mission profile.\n@required {missionProfileId: str}\n@returns(200) {contactPostPassDurationSeconds: int?, contactPrePassDurationSeconds: int?, dataflowEdges: [[str]]?, minimumViableContactDurationSeconds: int?, missionProfileArn: str?, missionProfileId: str?, name: str?, region: str?, streamsKmsKey: KmsKey?{kmsAliasArn: str?, kmsAliasName: str?, kmsKeyArn: str?}, streamsKmsRole: str?, tags: map<str,str>?, trackingConfigArn: str?}\n\n@endgroup\n\n@group satellite\n@endpoint GET /satellite/{satelliteId}\n@desc Returns a satellite.\n@required {satelliteId: str}\n@returns(200) {currentEphemeris: EphemerisMetaData?{ephemerisId: str?, epoch: str(timestamp)?, name: str?, source: str}, groundStations: [str]?, noradSatelliteID: int?, satelliteArn: str?, satelliteId: str?}\n\n@endgroup\n\n@group config\n@endpoint GET /config\n@desc Returns a list of Config objects.\n@optional {maxResults: int, nextToken: str}\n@returns(200) {configList: [ConfigListItem]?, nextToken: str?}\n\n@endgroup\n\n@group contacts\n@endpoint POST /contacts\n@desc Returns a list of contacts. If statusList contains AVAILABLE, the request must include groundStation, missionprofileArn, and satelliteArn.\n@required {endTime: str(timestamp), startTime: str(timestamp), statusList: [str]}\n@optional {groundStation: str, maxResults: int, missionProfileArn: str, nextToken: str, satelliteArn: str}\n@returns(200) {contactList: [ContactData]?, nextToken: str?}\n\n@endgroup\n\n@group dataflowEndpointGroup\n@endpoint GET /dataflowEndpointGroup\n@desc Returns a list of DataflowEndpoint groups.\n@optional {maxResults: int, nextToken: str}\n@returns(200) {dataflowEndpointGroupList: [DataflowEndpointListItem]?, nextToken: str?}\n\n@endgroup\n\n@group ephemerides\n@endpoint POST /ephemerides\n@desc List existing ephemerides.\n@required {endTime: str(timestamp), satelliteId: str, startTime: str(timestamp)}\n@optional {maxResults: int, nextToken: str, statusList: [str]}\n@returns(200) {ephemerides: [EphemerisItem]?, nextToken: str?}\n\n@endgroup\n\n@group groundstation\n@endpoint GET /groundstation\n@desc Returns a list of ground stations.\n@optional {maxResults: int, nextToken: str, satelliteId: str}\n@returns(200) {groundStationList: [GroundStationData]?, nextToken: str?}\n\n@endgroup\n\n@group missionprofile\n@endpoint GET /missionprofile\n@desc Returns a list of mission profiles.\n@optional {maxResults: int, nextToken: str}\n@returns(200) {missionProfileList: [MissionProfileListItem]?, nextToken: str?}\n\n@endgroup\n\n@group satellite\n@endpoint GET /satellite\n@desc Returns a list of satellites.\n@optional {maxResults: int, nextToken: str}\n@returns(200) {nextToken: str?, satellites: [SatelliteListItem]?}\n\n@endgroup\n\n@group tags\n@endpoint GET /tags/{resourceArn}\n@desc Returns a list of tags for a specified resource.\n@required {resourceArn: str}\n@returns(200) {tags: map<str,str>?}\n\n@endgroup\n\n@group agent\n@endpoint POST /agent\n@desc For use by AWS Ground Station Agent and shouldn't be called directly.   Registers a new agent with AWS Ground Station.\n@required {agentDetails: AgentDetails, discoveryData: DiscoveryData}\n@returns(200) {agentId: str?}\n\n@endgroup\n\n@group contact\n@endpoint POST /contact\n@desc Reserves a contact using specified parameters.\n@required {endTime: str(timestamp), groundStation: str, missionProfileArn: str, satelliteArn: str, startTime: str(timestamp)}\n@optional {tags: map<str,str>}\n@returns(200) {contactId: str?}\n\n@endgroup\n\n@group tags\n@endpoint POST /tags/{resourceArn}\n@desc Assigns a tag to a resource.\n@required {resourceArn: str, tags: map<str,str>}\n\n@endpoint DELETE /tags/{resourceArn}\n@desc Deassigns a resource tag.\n@required {resourceArn: str, tagKeys: [str]}\n\n@endgroup\n\n@group agent\n@endpoint PUT /agent/{agentId}\n@desc For use by AWS Ground Station Agent and shouldn't be called directly.  Update the status of the agent.\n@required {agentId: str, aggregateStatus: AggregateStatus, componentStatuses: [ComponentStatusData], taskId: str}\n@returns(200) {agentId: str}\n\n@endgroup\n\n@group config\n@endpoint PUT /config/{configType}/{configId}\n@desc Updates the Config used when scheduling contacts. Updating a Config will not update the execution parameters for existing future contacts scheduled with this Config.\n@required {configId: str, configType: str, configData: ConfigTypeData, name: str}\n@returns(200) {configArn: str?, configId: str?, configType: str?}\n\n@endgroup\n\n@group ephemeris\n@endpoint PUT /ephemeris/{ephemerisId}\n@desc Updates an existing ephemeris\n@required {ephemerisId: str, enabled: bool}\n@optional {name: str, priority: int}\n@returns(200) {ephemerisId: str?}\n\n@endgroup\n\n@group missionprofile\n@endpoint PUT /missionprofile/{missionProfileId}\n@desc Updates a mission profile. Updating a mission profile will not update the execution parameters for existing future contacts.\n@required {missionProfileId: str}\n@optional {contactPostPassDurationSeconds: int, contactPrePassDurationSeconds: int, dataflowEdges: [[str]], minimumViableContactDurationSeconds: int, name: str, streamsKmsKey: KmsKey, streamsKmsRole: str, trackingConfigArn: str}\n@returns(200) {missionProfileId: str?}\n\n@endgroup\n\n@end\n"}}