components: responses: {} schemas: User: properties: email: type: string id: $ref: '#/components/schemas/FeltID' name: type: string title: User type: object SourcePermissions: oneOf: - additionalProperties: false properties: type: enum: - workspace_editors type: string required: - type title: SourcePermissions-WorkspaceEditors type: object - additionalProperties: false properties: type: enum: - source_owner type: string required: - type title: SourcePermissions-SourceOwner type: object - additionalProperties: false properties: project_ids: items: $ref: '#/components/schemas/FeltID' type: array type: enum: - project_editors type: string required: - type - project_ids title: SourcePermissions-ProjectEditors type: object title: SourcePermissions MoveMapFolderParams: properties: folder_id: $ref: '#/components/schemas/FeltID' required: - folder_id title: MoveMapFolderParams type: object SourceCredential-CustomHeaders: additionalProperties: false description: Authenticate to an API using headers properties: headers: items: properties: name: description: The header name type: string sensitive: description: Whether or not the header is sensitive. If it is marked as sensitive, then `felt:redacted` will be returned when viewing this header type: boolean value: description: The header value type: string required: - name - value - sensitive type: object type: array type: enum: - custom_headers type: string required: - type - headers title: SourceCredential-CustomHeaders type: object SourceCreateConnectionParams-WFS: additionalProperties: false description: Web Feature Server properties: type: enum: - wfs type: string url: description: WFS URL type: string required: - type - url title: SourceCreateConnectionParams-WFS type: object LayerGroupParams: additionalProperties: false properties: caption: example: A very interesting group type: string id: $ref: '#/components/schemas/FeltID' legend_visibility: description: Controls how the layer group is displayed in the legend enum: - hide - show type: string name: example: My Layer Group type: string ordering_key: type: integer subtitle: deprecated: true description: 'Deprecated: use `caption` instead.' type: string visibility_interaction: description: Controls how the layer group is displayed in the legend. Defaults to `"default"`. enum: - default - slider - select - multi_select nullable: true type: string required: - name title: LayerGroupParams type: object ElementGroupParamsList: items: $ref: '#/components/schemas/ElementGroupParams' title: ElementGroupParamsList type: array SourceConnection-Databricks: additionalProperties: false properties: catalog: nullable: true type: string credentials: items: properties: created_at: nullable: true type: integer credential: oneOf: - $ref: '#/components/schemas/SourceCredential-OAuthM2M' - $ref: '#/components/schemas/SourceCredential-DatabricksPAT' type: object id: $ref: '#/components/schemas/FeltID' name: type: string source_id: $ref: '#/components/schemas/FeltID' updated_at: nullable: true type: integer use_case: enum: - source_authentication type: string type: object type: array http_path: type: string schema: nullable: true type: string server_hostname: type: string type: enum: - databricks type: string title: SourceConnection-Databricks type: object UploadInterpretationHint-AttributeHint-Australian_ABS_Postal_Area_2021: description: A hint that the data contains a Australian ABS postal area (2021) attribute. https://www.abs.gov.au/statistics/standards/australian-statistical-geography-standard-asgs-edition-3/jul2021-jun2026/non-abs-structures/postal-areas properties: attribute: properties: aus_postal_area_2021: type: string required: - aus_postal_area_2021 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-Australian_ABS_Postal_Area_2021 type: object UploadLayerParams: properties: hints: description: A list of hints for interpreting the data in the upload. items: $ref: '#/components/schemas/UploadInterpretationHint' type: array import_url: description: A public URL containing geodata to import, in place of uploading a file. type: string lat: description: (Image uploads only) The latitude of the image center. type: number lng: description: (Image uploads only) The longitude of the image center. type: number metadata: $ref: '#/components/schemas/LayerMetadata' name: description: The display name for the new layer. type: string zoom: description: (Image uploads only) The zoom level of the image. type: number required: - name title: UploadLayerParams type: object SourceCreateConnectionParams-MicrosoftSQL: additionalProperties: false properties: database: description: MSSQL database name type: string host: description: MSSQL host type: string password: description: MSSQL password type: string port: description: MSSQL port nullable: true type: integer type: enum: - mssql type: string user: description: MSSQL user name type: string required: - type - host - database - user - password title: SourceCreateConnectionParams-MicrosoftSQL type: object ExportLink: additionalProperties: false properties: export_link: nullable: false type: string required: - export_link title: ExportLink type: object Map: additionalProperties: false properties: basemap: type: string created_at: example: '2024-05-25T15:51:34' format: date_time type: string element_groups: items: properties: elements: $ref: '#/components/schemas/GeoJSON' id: $ref: '#/components/schemas/FeltID' name: nullable: true type: string type: object type: array elements: $ref: '#/components/schemas/GeoJSON' folder_id: nullable: true type: string id: $ref: '#/components/schemas/FeltID' layer_groups: items: $ref: '#/components/schemas/LayerGroup' type: array layers: items: $ref: '#/components/schemas/Layer' type: array links: properties: self: example: https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC type: string type: object project_id: nullable: false type: string public_access: enum: - private - view_only - view_and_comment - view_comment_and_edit type: string table_settings: $ref: '#/components/schemas/MapTableSettings' thumbnail_url: description: A static thumbnail image of the map nullable: true type: string title: type: string type: enum: - map type: string url: type: string viewer_permissions: $ref: '#/components/schemas/MapViewerPermissions' visited_at: format: date_time nullable: true type: string required: - id - type - url - title - thumbnail_url - created_at - visited_at - layers - layer_groups - elements - element_groups - project_id - public_access title: Map type: object LayerList: items: $ref: '#/components/schemas/Layer' title: LayerList type: array SourceCredential-GcpServiceAccountJson: additionalProperties: false properties: service_account_filename: type: string service_account_json: oneOf: - type: object - type: string type: enum: - gcp_service_account_json type: string required: - type - service_account_filename - service_account_json title: SourceCredential-GcpServiceAccountJson type: object DuplicateLayersParams: items: oneOf: - properties: destination_map_id: $ref: '#/components/schemas/FeltID' source_layer_id: $ref: '#/components/schemas/FeltID' required: - source_layer_id - destination_map_id title: DuplicateLayersParams-Layer type: object - properties: destination_map_id: $ref: '#/components/schemas/FeltID' source_layer_group_id: $ref: '#/components/schemas/FeltID' required: - source_layer_group_id - destination_map_id title: DuplicateLayersParams-LayerGroup type: object title: DuplicateLayersParams type: array ProjectReferenceList: items: $ref: '#/components/schemas/ProjectReference' title: ProjectReferenceList type: array UploadInterpretationHint-AttributeHint-H3: description: A hint that the data contains H3 attribute. properties: attribute: properties: h3: type: string required: - h3 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-H3 type: object SourceUpdateConnectionParams-ABS: additionalProperties: false properties: blob_storage_url: description: ABS blob storage URL type: string type: enum: - abs_bucket type: string required: - type title: SourceUpdateConnectionParams-ABS type: object MapMoveParams: oneOf: - properties: project_id: $ref: '#/components/schemas/FeltID' required: - project_id title: MoveMapProjectParams type: object - properties: folder_id: $ref: '#/components/schemas/FeltID' required: - folder_id title: MoveMapFolderParams type: object title: MapMoveParams type: object LayerGroupList: items: $ref: '#/components/schemas/LayerGroup' title: LayerGroupList type: array AddSourceLayer-STAC-Params: properties: from: enum: - stac type: string source_id: $ref: '#/components/schemas/FeltID' stac_asset_url: type: string required: - from - source_id - stac_asset_url title: AddSourceLayer-STAC-Params type: object SourceUpdateConnectionParams-STAC: additionalProperties: false description: SpatioTemporal Asset Catalogs properties: token: description: STAC token nullable: true type: string type: enum: - stac type: string url: description: STAC server / asset URL type: string required: - type title: SourceUpdateConnectionParams-STAC type: object UploadInterpretationHint-AttributeHint-Locality: description: A hint that the data contains a Locality spread out over multiple attributes. properties: attributes: additionalProperties: false properties: country: description: 'ex: USA' type: string locality: description: 'ex: Oakland' type: string region: description: 'ex: California' type: string required: - locality type: object required: - attributes title: UploadInterpretationHint-AttributeHint-Locality type: object LayerLibrary: properties: layer_groups: items: $ref: '#/components/schemas/LayerGroup' type: array layers: items: $ref: '#/components/schemas/Layer' type: array type: enum: - layer_library type: string required: - type - layers - layer_groups title: LayerLibrary type: object LayerGroup: additionalProperties: false properties: caption: nullable: true type: string id: $ref: '#/components/schemas/FeltID' layers: items: $ref: '#/components/schemas/Layer' type: array legend_visibility: description: Controls how the layer group is displayed in the legend. Defaults to "show". enum: - hide - show nullable: true type: string links: properties: self: example: https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layer_groups/v13k4Ae9BRjCHHdPP5Fcm6D type: string type: object name: nullable: false type: string ordering_key: description: A sort order key used for ordering layers and layer groups in the legend nullable: false type: integer subtitle: deprecated: true description: 'Deprecated: use `caption` instead.' nullable: true type: string type: enum: - layer_group type: string visibility_interaction: description: Controls how the layer group is displayed in the legend. Defaults to `"default"`. enum: - default - slider - select - multi_select nullable: false type: string required: - id - type - name - caption - visibility_interaction - layers title: LayerGroup type: object MapCreateParams: additionalProperties: false properties: basemap: description: 'The basemap to use for the new map. Defaults to "default". Valid values are "default", "light", "dark", "satellite", a valid raster tile URL with {x}, {y}, and {z} parameters, or a hex color string like #ff0000.' type: string description: description: A description to display in the map legend type: string lat: description: If no data has been uploaded to the map, the initial latitude to center the map display on. type: number layer_urls: description: An array of urls to use to create layers in the map. Only tile URLs for raster layers are supported at the moment. items: type: string type: array lon: description: If no data has been uploaded to the map, the initial longitude to center the map display on. type: number public_access: description: The level of access to grant to the map. Defaults to "view_only". enum: - private - view_only - view_and_comment - view_comment_and_edit type: string title: description: The title to be used for the map. Defaults to "Untitled Map" type: string workspace_id: description: The workspace to create the map in. Defaults to the latest used workspace type: string zoom: description: If no data has been uploaded to the map, the initial zoom level for the map to display. type: number title: MapCreateParams type: object SourceConnection-Microsoft-SQL: additionalProperties: false properties: database: type: string host: type: string port: nullable: true type: integer type: enum: - mssql type: string user: type: string title: SourceConnection-Microsoft-SQL type: object SourceCredentialUpdate-GcpServiceAccountJson: additionalProperties: false properties: service_account_filename: type: string service_account_json: oneOf: - type: object - type: string type: enum: - gcp_service_account_json type: string required: - type title: SourceCredentialUpdate-GcpServiceAccountJson type: object SourceConnection-Google-BigQuery: additionalProperties: false properties: dataset: description: BigQuery dataset to index. If omitted all datasets will be indexed nullable: true type: string project: description: BigQuery project to index type: string type: enum: - bigquery type: string title: SourceConnection-Google-BigQuery type: object SourceCreateConnectionParams-Snowflake: additionalProperties: false properties: account_id: description: Snowflake account ID type: string credentials: items: properties: credential: oneOf: - $ref: '#/components/schemas/SourceCredential-KeyPair' - $ref: '#/components/schemas/SourceCredential-SnowflakePAT' type: object name: type: string use_case: enum: - source_authentication type: string required: - credential - use_case - name type: object maxItems: 1 type: array database: description: Snowflake database name type: string password: description: Snowflake password type: string role: description: Snowflake role nullable: true type: string schema: description: Snowflake database schema nullable: true type: string type: enum: - snowflake type: string user: description: Snowflake user name type: string warehouse: description: Snowflake warehouse nullable: true type: string required: - type - database - account_id - user title: SourceCreateConnectionParams-Snowflake type: object MoveMapProjectParams: properties: project_id: $ref: '#/components/schemas/FeltID' required: - project_id title: MoveMapProjectParams type: object SourceUpdateConnectionParams: oneOf: - additionalProperties: false properties: blob_storage_url: description: ABS blob storage URL type: string type: enum: - abs_bucket type: string required: - type title: SourceUpdateConnectionParams-ABS type: object - additionalProperties: false properties: base64_encoded_service_account: description: BigQuery credentials - Base 64 encoded Service account JSON nullable: true type: string dataset: description: BigQuery dataset nullable: true type: string project: description: BigQuery project type: string type: enum: - bigquery type: string required: - type title: SourceUpdateConnectionParams-GoogleBigQuery type: object - additionalProperties: false properties: catalog: description: Databricks catalog nullable: true type: string http_path: description: Databricks server HTTP path type: string schema: description: Databricks schema nullable: true type: string server_hostname: description: Databricks server hostname type: string type: enum: - databricks type: string required: - type title: SourceUpdateConnectionParams-Databricks type: object - additionalProperties: false properties: token: description: Feature Server token nullable: true type: string type: enum: - feature_server type: string url: description: Feature Server URL type: string required: - type title: SourceUpdateConnectionParams-ESRIFeatureServer type: object - additionalProperties: false properties: gs_uri: description: GCS URI type: string type: enum: - gcs_bucket type: string required: - type title: SourceUpdateConnectionParams-GCS type: object - additionalProperties: false properties: database: description: MSSQL database name type: string host: description: MSSQL host type: string password: description: MSSQL password type: string port: description: MSSQL port nullable: true type: integer type: enum: - mssql type: string user: description: MSSQL user name type: string required: - type title: SourceUpdateConnectionParams-MicrosoftSQL type: object - additionalProperties: false description: Postgres / PostGIS properties: database: description: Postgres database name type: string host: description: Postgres host type: string password: description: Postgres password type: string port: description: Postgres port nullable: true type: integer schema: description: Postgres schema type: string type: enum: - postgresql type: string user: description: Postgres user name type: string required: - type title: SourceUpdateConnectionParams-Postgres type: object - additionalProperties: false properties: database: description: Redshift database name type: string host: description: Redshift host type: string password: description: Redshift password type: string port: description: Redshift port nullable: true type: integer type: enum: - redshift type: string user: description: Redshift user name type: string required: - type title: SourceUpdateConnectionParams-AmazonRedshift type: object - additionalProperties: false properties: s3_uri: description: S3 URI type: string type: enum: - s3_bucket type: string required: - type title: SourceUpdateConnectionParams-S3 type: object - additionalProperties: false properties: account_id: description: Snowflake account ID type: string database: description: Snowflake database name type: string password: description: Snowflake password type: string role: description: Snowflake role nullable: true type: string schema: description: Snowflake database schema nullable: true type: string type: enum: - snowflake type: string user: description: Snowflake user name type: string warehouse: description: Snowflake warehouse nullable: true type: string required: - type title: SourceUpdateConnectionParams-Snowflake type: object - additionalProperties: false description: SpatioTemporal Asset Catalogs properties: token: description: STAC token nullable: true type: string type: enum: - stac type: string url: description: STAC server / asset URL type: string required: - type title: SourceUpdateConnectionParams-STAC type: object - additionalProperties: false description: Web Feature Server properties: type: enum: - wfs type: string url: description: WFS URL type: string required: - type title: SourceUpdateConnectionParams-WFS type: object - additionalProperties: false description: Web Map Service / Web Map Tile Service properties: type: enum: - wms_wmts type: string url: description: WMS/WMTS URL type: string required: - type title: SourceUpdateConnectionParams-WMS-WMTS type: object title: SourceUpdateConnectionParams SourceCreateConnectionParams-Postgres: additionalProperties: false description: Postgres / PostGIS properties: database: description: Postgres database name type: string host: description: Postgres host type: string password: description: Postgres password type: string port: description: Postgres port nullable: true type: integer schema: description: Postgres schema type: string type: enum: - postgresql type: string user: description: Postgres user name type: string required: - type - host - database - user - password title: SourceCreateConnectionParams-Postgres type: object UploadInterpretationHint-AttributeHint-European_Union_NUTS_1_2021: description: A hint that the data contains a Eurostat NUTS Level 1 (2021) attribute. https://ec.europa.eu/eurostat/web/gisco/geodata/statistical-units/territorial-units-statistics properties: attribute: properties: eu_nuts_1_2021: type: string required: - eu_nuts_1_2021 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-European_Union_NUTS_1_2021 type: object CustomExportResponse: additionalProperties: false properties: export_request_id: $ref: '#/components/schemas/FeltID' poll_endpoint: example: http://felt.com/api/v2/maps/vAbZ5eKqRoGe4sCH8nHW8D/layers/7kF9Cfz45TUWIiuuWV8uZ7A/custom_exports/auFxn9BO4RrGGiKrGfaS7ZB nullable: false type: string required: - export_request_id - poll_endpoint title: CustomExportResponse type: object LayerUpdateParamsList: items: $ref: '#/components/schemas/LayerUpdateParams' title: LayerUpdateParamsList type: array SourceCredential-DatabricksPAT: additionalProperties: false description: Authenticate to Databricks using a Personal Access Token (PAT) properties: token: type: string type: enum: - databricks_pat type: string required: - type - token title: SourceCredential-DatabricksPAT type: object SourceUpdateConnectionParams-WFS: additionalProperties: false description: Web Feature Server properties: type: enum: - wfs type: string url: description: WFS URL type: string required: - type title: SourceUpdateConnectionParams-WFS type: object DuplicateLayersParams-LayerGroup: properties: destination_map_id: $ref: '#/components/schemas/FeltID' source_layer_group_id: $ref: '#/components/schemas/FeltID' required: - source_layer_group_id - destination_map_id title: DuplicateLayersParams-LayerGroup type: object SourceConnection-Amazon-Redshift: additionalProperties: false properties: database: type: string host: type: string port: nullable: true type: integer type: enum: - redshift type: string user: type: string title: SourceConnection-Amazon-Redshift type: object EmbedToken: properties: expires_at: example: '2024-05-25T15:51:34' format: date_time type: string token: type: string title: EmbedToken type: object UnauthorizedError: properties: errors: items: properties: detail: type: string source: properties: header: enum: - authorization type: string type: object title: type: string type: object type: array title: UnauthorizedError type: object SourceUpdateConnectionParams-Snowflake: additionalProperties: false properties: account_id: description: Snowflake account ID type: string database: description: Snowflake database name type: string password: description: Snowflake password type: string role: description: Snowflake role nullable: true type: string schema: description: Snowflake database schema nullable: true type: string type: enum: - snowflake type: string user: description: Snowflake user name type: string warehouse: description: Snowflake warehouse nullable: true type: string required: - type title: SourceUpdateConnectionParams-Snowflake type: object LayerUpdateParams: additionalProperties: false properties: caption: example: A very interesting dataset type: string id: $ref: '#/components/schemas/FeltID' layer_group_id: example: luCHyMruTQ6ozGk3gPJfEB format: felt_id nullable: true type: string legend_display: description: Controls how the layer is displayed in the legend. enum: - default - name_only type: string legend_visibility: description: Controls whether or not the layer is displayed in the legend. enum: - hide - show type: string metadata: $ref: '#/components/schemas/LayerMetadata' name: example: My Layer type: string ordering_key: type: integer refresh_period: enum: - 15 min - 30 min - hour - 3 hours - 6 hours - 12 hours - day - week - month - disabled type: string subtitle: deprecated: true description: 'Deprecated: use `caption` instead.' type: string required: - id title: LayerUpdateParams type: object SourceCreateConnectionParams-AmazonRedshift: additionalProperties: false properties: database: description: Redshift database name type: string host: description: Redshift host type: string password: description: Redshift password type: string port: description: Redshift port nullable: true type: integer type: enum: - redshift type: string user: description: Redshift user name type: string required: - type - host - database - user - password title: SourceCreateConnectionParams-AmazonRedshift type: object SourceCreateConnectionParams-STAC: additionalProperties: false description: SpatioTemporal Asset Catalogs properties: credentials: items: properties: credential: oneOf: - $ref: '#/components/schemas/SourceCredential-AwsAssumeRole' - $ref: '#/components/schemas/SourceCredential-AzureStorageString' - $ref: '#/components/schemas/SourceCredential-GcpServiceAccountJson' - $ref: '#/components/schemas/SourceCredential-CustomHeaders' type: object name: type: string use_case: enum: - stac_api_authentication - stac_asset_fetching type: string required: - name - use_case - credential type: object type: array token: description: STAC token nullable: true type: string type: enum: - stac type: string url: description: STAC server / asset URL type: string required: - type - url title: SourceCreateConnectionParams-STAC type: object SourceUpdateConnectionParams-S3: additionalProperties: false properties: s3_uri: description: S3 URI type: string type: enum: - s3_bucket type: string required: - type title: SourceUpdateConnectionParams-S3 type: object DuplicateLayersParams-Layer: properties: destination_map_id: $ref: '#/components/schemas/FeltID' source_layer_id: $ref: '#/components/schemas/FeltID' required: - source_layer_id - destination_map_id title: DuplicateLayersParams-Layer type: object LayerMetadata: additionalProperties: false properties: attribution_text: nullable: true type: string attribution_url: nullable: true type: string description: nullable: true type: string license: nullable: true type: string source_abbreviation: nullable: true type: string source_name: nullable: true type: string source_url: nullable: true type: string updated_at: example: '2025-03-24' format: date nullable: true type: string title: LayerMetadata type: object SourceCreateParams: additionalProperties: false properties: connection: $ref: '#/components/schemas/SourceCreateConnectionParams' name: type: string permissions: $ref: '#/components/schemas/SourcePermissions' required: - name - connection title: SourceCreateParams type: object SourceCredential: additionalProperties: false properties: created_at: nullable: true type: integer credential: oneOf: - $ref: '#/components/schemas/SourceCredential-AwsAssumeRole' - $ref: '#/components/schemas/SourceCredential-AzureStorageString' - $ref: '#/components/schemas/SourceCredential-CustomHeaders' - $ref: '#/components/schemas/SourceCredential-GcpServiceAccountJson' - $ref: '#/components/schemas/SourceCredential-KeyPair' - $ref: '#/components/schemas/SourceCredential-SnowflakePAT' type: object id: $ref: '#/components/schemas/FeltID' name: type: string source_id: $ref: '#/components/schemas/FeltID' updated_at: nullable: true type: integer use_case: enum: - stac_api_authentication - stac_asset_fetching - source_authentication type: string required: - id - source_id - name - use_case - created_at - updated_at - credential title: SourceCredential type: object Layer: additionalProperties: false properties: attributes: description: List of the attributes on the layer items: properties: name: description: The name of the attribute type: string type: description: The type of the attribute enum: - INTEGER - REAL - TEXT - BOOLEAN - DATE - DATETIME - GEOMETRY type: string required: - name type: object nullable: true type: array caption: nullable: true type: string geometry_type: enum: - Line - Point - Polygon - Raster nullable: true type: string hide_from_legend: nullable: false type: boolean id: $ref: '#/components/schemas/FeltID' is_spreadsheet: nullable: true type: boolean last_refreshed_at: description: ISO 8601 timestamp of when the layer's data was last updated. This includes scheduled refreshes, manual refreshes, and direct feature edits. format: date-time nullable: true type: string legend_display: description: Controls how the layer is displayed in the legend. enum: - default - name_only nullable: true type: string legend_visibility: description: Controls whether or not the layer is displayed in the legend. Defaults to "show". enum: - hide - show nullable: true type: string links: properties: self: example: https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layers/k441enUxQUOnZqc1ZvNsDA type: string type: object metadata: $ref: '#/components/schemas/LayerMetadata' name: nullable: false type: string next_refresh_at: description: ISO 8601 timestamp of when the next scheduled refresh will occur. Null if refresh is disabled or paused. format: date-time nullable: true type: string ordering_key: description: A sort order key used for ordering layers and layer groups in the legend nullable: true type: integer paused_reason: description: Why the layer's refresh is paused. Null when not paused. enum: - consecutive_failures nullable: true type: string progress: format: float nullable: false type: number refresh_period: enum: - 15 min - 30 min - hour - 3 hours - 6 hours - 12 hours - day - week - month - disabled type: string refresh_status: description: Whether scheduled refresh is active, paused (due to failures), or disabled enum: - active - paused - disabled type: string status: enum: - uploading - processing - failed - completed nullable: false type: string style: description: The Felt Style Language style for the layer type: object subtitle: deprecated: true description: 'Deprecated: use `caption` instead.' nullable: true type: string tile_url: description: The tile URL for this layer nullable: true type: string type: enum: - layer type: string required: - id - type - hide_from_legend - status - caption - name - progress - geometry_type - style - refresh_period - refresh_status title: Layer type: object ProjectReference: additionalProperties: false properties: id: $ref: '#/components/schemas/FeltID' links: properties: self: example: https://felt.com/api/v2/projects/V0dnOMOuTd9B9BOsL9C0UjmqC type: string type: object max_inherited_permission: description: The maximum permission level workspace members inherit on team-visible projects. enum: - view_only - view_and_contribute - view_and_edit example: view_only nullable: false type: string name: type: string type: enum: - project_reference type: string visibility: enum: - workspace - private type: string required: - id - type - name - visibility - max_inherited_permission title: ProjectReference type: object JsonErrorResponse: properties: errors: items: properties: detail: example: null value where string expected type: string source: properties: pointer: example: /data/attributes/petName type: string required: - pointer type: object title: example: Invalid value type: string required: - title - source - detail type: object type: array required: - errors title: JsonErrorResponse type: object SourceUpdateConnectionParams-AmazonRedshift: additionalProperties: false properties: database: description: Redshift database name type: string host: description: Redshift host type: string password: description: Redshift password type: string port: description: Redshift port nullable: true type: integer type: enum: - redshift type: string user: description: Redshift user name type: string required: - type title: SourceUpdateConnectionParams-AmazonRedshift type: object SourcePermissions-ProjectEditors: additionalProperties: false properties: project_ids: items: $ref: '#/components/schemas/FeltID' type: array type: enum: - project_editors type: string required: - type - project_ids title: SourcePermissions-ProjectEditors type: object SourceCredential-AzureStorageString: additionalProperties: false description: Authenticate to Azure Blob Storage properties: connection_string: type: string type: enum: - azure_storage_connection_string type: string required: - type - connection_string title: SourceCredential-AzureStorageString type: object SourceCreateConnectionParams-S3: additionalProperties: false properties: credentials: items: properties: credential: $ref: '#/components/schemas/SourceCredential-AwsAssumeRole' name: type: string use_case: enum: - source_authentication type: string required: - credential - use_case - name type: object maxItems: 1 type: array s3_uri: description: S3 URI type: string type: enum: - s3_bucket type: string required: - type - s3_uri title: SourceCreateConnectionParams-S3 type: object SourceConnection-S3Bucket: additionalProperties: false description: AWS S3 properties: credentials: items: properties: created_at: nullable: true type: integer credential: oneOf: - $ref: '#/components/schemas/SourceCredential-AwsAssumeRole' type: object id: $ref: '#/components/schemas/FeltID' name: type: string source_id: $ref: '#/components/schemas/FeltID' updated_at: nullable: true type: integer use_case: enum: - source_authentication type: string type: object type: array s3_uri: type: string type: enum: - s3_bucket type: string title: SourceConnection-S3Bucket type: object ProjectCreateParams: additionalProperties: false properties: max_inherited_permission: description: The maximum permission level workspace members inherit on team-visible projects. Only applicable when visibility is "workspace". enum: - view_only - view_and_contribute - view_and_edit example: view_only nullable: false type: string name: description: The name to be used for the Project type: string visibility: description: Either viewable by all members of the workspace, or private to users who are invited. enum: - workspace - private type: string required: - name - visibility title: ProjectCreateParams type: object AddSourceLayer-SQL-Params: properties: from: enum: - sql type: string query: type: string source_id: $ref: '#/components/schemas/FeltID' required: - from - source_id - query title: AddSourceLayer-SQL-Params type: object SourceCredentialUpdate-KeyPair: additionalProperties: false description: Authenticate using key pair authentication properties: private_key: type: string private_key_name: type: string private_key_passphrase: type: string type: enum: - key_pair type: string required: - type title: SourceCredentialUpdate-KeyPair type: object UploadInterpretationHint-AttributeHint-European_Union_NUTS_3_2021: description: A hint that the data contains a Eurostat NUTS 3 (2021) attribute. https://ec.europa.eu/eurostat/web/gisco/geodata/statistical-units/territorial-units-statistics properties: attribute: properties: eu_nuts_3_2021: type: string required: - eu_nuts_3_2021 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-European_Union_NUTS_3_2021 type: object SourceCreateConnectionParams-GCS: additionalProperties: false properties: credentials: items: properties: credential: $ref: '#/components/schemas/SourceCredential-GcpServiceAccountJson' name: type: string use_case: enum: - source_authentication type: string required: - credential - use_case - name type: object maxItems: 1 type: array gs_uri: description: GCS URI type: string type: enum: - gcs_bucket type: string required: - type - gs_uri title: SourceCreateConnectionParams-GCS type: object SourceUpdateConnectionParams-MicrosoftSQL: additionalProperties: false properties: database: description: MSSQL database name type: string host: description: MSSQL host type: string password: description: MSSQL password type: string port: description: MSSQL port nullable: true type: integer type: enum: - mssql type: string user: description: MSSQL user name type: string required: - type title: SourceUpdateConnectionParams-MicrosoftSQL type: object GeoJSON: properties: features: items: properties: geometry: properties: felt:id: $ref: '#/components/schemas/FeltID' felt:parentId: example: luCHyMruTQ6ozGk3gPJfEB format: felt_id nullable: true type: string type: object properties: type: object type: enum: - Feature type: string type: object type: array type: enum: - FeatureCollection type: string required: - type - features title: GeoJSON type: object SourceUpdateConnectionParams-Databricks: additionalProperties: false properties: catalog: description: Databricks catalog nullable: true type: string http_path: description: Databricks server HTTP path type: string schema: description: Databricks schema nullable: true type: string server_hostname: description: Databricks server hostname type: string type: enum: - databricks type: string required: - type title: SourceUpdateConnectionParams-Databricks type: object SourceUpdateConnectionParams-GoogleBigQuery: additionalProperties: false properties: base64_encoded_service_account: description: BigQuery credentials - Base 64 encoded Service account JSON nullable: true type: string dataset: description: BigQuery dataset nullable: true type: string project: description: BigQuery project type: string type: enum: - bigquery type: string required: - type title: SourceUpdateConnectionParams-GoogleBigQuery type: object ElementGroupParams: additionalProperties: false properties: color: default: '#C93535' type: string id: $ref: '#/components/schemas/FeltID' name: example: My Element Group type: string symbol: default: dot type: string required: - name title: ElementGroupParams type: object SourceCredentialUpdateParams: additionalProperties: false properties: credential: oneOf: - $ref: '#/components/schemas/SourceCredentialUpdate-AwsAssumeRole' - $ref: '#/components/schemas/SourceCredentialUpdate-AzureStorageString' - $ref: '#/components/schemas/SourceCredentialUpdate-CustomHeaders' - $ref: '#/components/schemas/SourceCredentialUpdate-GcpServiceAccountJson' - $ref: '#/components/schemas/SourceCredentialUpdate-KeyPair' - $ref: '#/components/schemas/SourceCredentialUpdate-SnowflakePAT' type: object name: type: string use_case: enum: - stac_api_authentication - stac_asset_fetching - source_authentication type: string title: SourceCredentialUpdateParams type: object DuplicateLayersResponse: properties: layer_groups: items: $ref: '#/components/schemas/LayerGroup' type: array layers: items: $ref: '#/components/schemas/Layer' type: array required: - layers - layer_groups title: DuplicateLayersResponse type: object SourceConnection-Postgres: additionalProperties: false description: Postgres / PostGIS properties: database: type: string host: type: string port: nullable: true type: integer schema: nullable: true type: string type: enum: - postgresql type: string user: type: string title: SourceConnection-Postgres type: object InternalServerError: properties: errors: items: properties: detail: type: string source: properties: parameter: type: string type: object title: type: string type: object type: array title: InternalServerError type: object UploadInterpretationHint-AttributeHint-LatitudeAndLongitudeCombined: description: A hint that the data contains Latitude and Longitude combined in a single attribute. properties: attribute: additionalProperties: false properties: lat_lng: type: string required: - lat_lng type: object required: - attribute title: UploadInterpretationHint-AttributeHint-LatitudeAndLongitudeCombined type: object MapViewerPermissions: additionalProperties: false properties: can_duplicate_map: description: Whether viewers can duplicate the map and data type: boolean can_export_data: description: Whether viewers can export map data type: boolean can_see_map_presence: description: Whether viewers can see who else is viewing the map type: boolean title: MapViewerPermissions type: object FeltID: example: luCHyMruTQ6ozGk3gPJfEB format: felt_id nullable: false title: FeltID type: string SourceCredential-KeyPair: additionalProperties: false description: Authenticate using key pair authentication properties: private_key: type: string private_key_name: type: string private_key_passphrase: type: string type: enum: - key_pair type: string required: - type - private_key - private_key_name title: SourceCredential-KeyPair type: object SourceCreateConnectionParams-GoogleBigQuery: additionalProperties: false properties: base64_encoded_service_account: description: BigQuery credentials - Base 64 encoded Service account JSON nullable: true type: string dataset: description: BigQuery dataset nullable: true type: string project: description: BigQuery project type: string type: enum: - bigquery type: string required: - type - project title: SourceCreateConnectionParams-GoogleBigQuery type: object SourceConnection-GCSBucket: additionalProperties: false description: Google Cloud Storage properties: credentials: items: properties: created_at: nullable: true type: integer credential: oneOf: - $ref: '#/components/schemas/SourceCredential-GcpServiceAccountJson' type: object id: $ref: '#/components/schemas/FeltID' name: type: string source_id: $ref: '#/components/schemas/FeltID' updated_at: nullable: true type: integer use_case: enum: - source_authentication type: string type: object type: array gs_uri: type: string type: enum: - gcs_bucket type: string title: SourceConnection-GCSBucket type: object CustomExportRequestStatus: additionalProperties: false properties: download_url: example: https://us1.data-pipeline.felt.com/fcdfd96c-06fa-40b9-9ae9-ad034b5a66df/Felt-Export.zip nullable: true type: string export_id: example: FZWQjWZJSZWvW3yn9BeV9AyA nullable: false type: string filters: items: {} nullable: false type: array status: enum: - completed - failed - in_progress example: completed nullable: false type: string required: - export_id - status - download_url - filters title: CustomExportRequestStatus type: object AddSourceLayerAccepted: additionalProperties: false properties: links: additionalProperties: false properties: layer_group: example: https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC/layer_groups/KFFhKAbvS4anD3wxtwNEpD type: string self: example: https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC type: string type: object status: enum: - accepted type: string title: AddSourceLayerAccepted type: object ElementGroup: additionalProperties: false properties: color: description: The color of the element group symbol. nullable: false type: string elements: $ref: '#/components/schemas/GeoJSON' id: description: The ID of the element group. type: string name: description: The name of the element group. nullable: true type: string symbol: description: The symbol used to represent the element group. nullable: true type: string required: - id - color - name - symbol - elements title: ElementGroup type: object UploadInterpretationHint-AttributeHint-US_CBSA_2020: description: 'A hint that the data contains a US Core-based statistical area (Census 2020) attribute: https://www.census.gov/geographies/reference-maps/2020/geo/cbsa.html' properties: attribute: additionalProperties: false properties: us_cbsa_2020: type: string required: - us_cbsa_2020 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-US_CBSA_2020 type: object AddSourceLayer-Dataset-Params: properties: dataset_id: $ref: '#/components/schemas/FeltID' from: enum: - dataset type: string required: - from - dataset_id title: AddSourceLayer-Dataset-Params type: object SourceConnection-ESRI-FeatureServer: additionalProperties: false properties: type: enum: - feature_server type: string url: type: string title: SourceConnection-ESRI-FeatureServer type: object UploadInterpretationHint-AttributeHint-US_State_2020: description: A hint that the data contains a US State (Census 2020) attribute. properties: attribute: properties: us_state_2020: type: string required: - us_state_2020 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-US_State_2020 type: object SourceUpdateConnectionParams-GCS: additionalProperties: false properties: gs_uri: description: GCS URI type: string type: enum: - gcs_bucket type: string required: - type title: SourceUpdateConnectionParams-GCS type: object UploadInterpretationHint-AttributeHint-European_Union_NUTS_2_2021: description: A hint that the data contains a Eurostat NUTS 2 (2021) attribute. https://ec.europa.eu/eurostat/web/gisco/geodata/statistical-units/territorial-units-statistics properties: attribute: properties: eu_nuts_2_2021: type: string required: - eu_nuts_2_2021 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-European_Union_NUTS_2_2021 type: object SourcePermissions-SourceOwner: additionalProperties: false properties: type: enum: - source_owner type: string required: - type title: SourcePermissions-SourceOwner type: object SourceConnection-Snowflake: additionalProperties: false properties: account_id: type: string credentials: items: properties: created_at: nullable: true type: integer credential: oneOf: - $ref: '#/components/schemas/SourceCredential-SnowflakePAT' - $ref: '#/components/schemas/SourceCredential-KeyPair' type: object id: $ref: '#/components/schemas/FeltID' name: type: string source_id: $ref: '#/components/schemas/FeltID' updated_at: nullable: true type: integer use_case: enum: - source_authentication type: string type: object type: array database: type: string role: nullable: true type: string schema: nullable: true type: string type: enum: - snowflake type: string user: type: string warehouse: nullable: true type: string title: SourceConnection-Snowflake type: object SourceUpdateConnectionParams-Postgres: additionalProperties: false description: Postgres / PostGIS properties: database: description: Postgres database name type: string host: description: Postgres host type: string password: description: Postgres password type: string port: description: Postgres port nullable: true type: integer schema: description: Postgres schema type: string type: enum: - postgresql type: string user: description: Postgres user name type: string required: - type title: SourceUpdateConnectionParams-Postgres type: object SourcePermissions-WorkspaceEditors: additionalProperties: false properties: type: enum: - workspace_editors type: string required: - type title: SourcePermissions-WorkspaceEditors type: object UploadInterpretationHint-AttributeHint-FullAddress: description: A hint that the data contains a full Address contained in a single attribute. properties: attribute: properties: full_address: type: string required: - full_address type: object required: - attribute title: UploadInterpretationHint-AttributeHint-FullAddress type: object UploadInterpretationHint-AttributeHint-Admin1: description: A hint that the data contains an Administrative Level 1 (Region) attribute. https://en.wikipedia.org/wiki/List_of_administrative_divisions_by_country properties: attribute: properties: admin_1: type: string required: - admin_1 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-Admin1 type: object SourceCreateConnectionParams-Databricks: additionalProperties: false properties: catalog: description: Databricks catalog nullable: true type: string credentials: items: properties: credential: oneOf: - $ref: '#/components/schemas/SourceCredential-DatabricksPAT' - $ref: '#/components/schemas/SourceCredential-OAuthM2M' type: object name: type: string use_case: enum: - source_authentication type: string required: - credential - use_case - name type: object maxItems: 1 type: array http_path: description: Databricks server HTTP path type: string schema: description: Databricks schema nullable: true type: string server_hostname: description: Databricks server hostname type: string type: enum: - databricks type: string required: - type - server_hostname - http_path title: SourceCreateConnectionParams-Databricks type: object SourceCreateConnectionParams: oneOf: - additionalProperties: false properties: blob_storage_url: description: ABS blob storage URL type: string credentials: items: properties: credential: $ref: '#/components/schemas/SourceCredential-AzureStorageString' name: type: string use_case: enum: - source_authentication type: string required: - credential - use_case - name type: object maxItems: 1 type: array type: enum: - abs_bucket type: string required: - type - blob_storage_url title: SourceCreateConnectionParams-ABS type: object - additionalProperties: false properties: base64_encoded_service_account: description: BigQuery credentials - Base 64 encoded Service account JSON nullable: true type: string dataset: description: BigQuery dataset nullable: true type: string project: description: BigQuery project type: string type: enum: - bigquery type: string required: - type - project title: SourceCreateConnectionParams-GoogleBigQuery type: object - additionalProperties: false properties: catalog: description: Databricks catalog nullable: true type: string credentials: items: properties: credential: oneOf: - $ref: '#/components/schemas/SourceCredential-DatabricksPAT' - $ref: '#/components/schemas/SourceCredential-OAuthM2M' type: object name: type: string use_case: enum: - source_authentication type: string required: - credential - use_case - name type: object maxItems: 1 type: array http_path: description: Databricks server HTTP path type: string schema: description: Databricks schema nullable: true type: string server_hostname: description: Databricks server hostname type: string type: enum: - databricks type: string required: - type - server_hostname - http_path title: SourceCreateConnectionParams-Databricks type: object - additionalProperties: false properties: token: description: Feature Server token nullable: true type: string type: enum: - feature_server type: string url: description: Feature Server URL type: string required: - type - url title: SourceCreateConnectionParams-ESRIFeatureServer type: object - additionalProperties: false properties: credentials: items: properties: credential: $ref: '#/components/schemas/SourceCredential-GcpServiceAccountJson' name: type: string use_case: enum: - source_authentication type: string required: - credential - use_case - name type: object maxItems: 1 type: array gs_uri: description: GCS URI type: string type: enum: - gcs_bucket type: string required: - type - gs_uri title: SourceCreateConnectionParams-GCS type: object - additionalProperties: false properties: database: description: MSSQL database name type: string host: description: MSSQL host type: string password: description: MSSQL password type: string port: description: MSSQL port nullable: true type: integer type: enum: - mssql type: string user: description: MSSQL user name type: string required: - type - host - database - user - password title: SourceCreateConnectionParams-MicrosoftSQL type: object - additionalProperties: false description: Postgres / PostGIS properties: database: description: Postgres database name type: string host: description: Postgres host type: string password: description: Postgres password type: string port: description: Postgres port nullable: true type: integer schema: description: Postgres schema type: string type: enum: - postgresql type: string user: description: Postgres user name type: string required: - type - host - database - user - password title: SourceCreateConnectionParams-Postgres type: object - additionalProperties: false properties: database: description: Redshift database name type: string host: description: Redshift host type: string password: description: Redshift password type: string port: description: Redshift port nullable: true type: integer type: enum: - redshift type: string user: description: Redshift user name type: string required: - type - host - database - user - password title: SourceCreateConnectionParams-AmazonRedshift type: object - additionalProperties: false properties: credentials: items: properties: credential: $ref: '#/components/schemas/SourceCredential-AwsAssumeRole' name: type: string use_case: enum: - source_authentication type: string required: - credential - use_case - name type: object maxItems: 1 type: array s3_uri: description: S3 URI type: string type: enum: - s3_bucket type: string required: - type - s3_uri title: SourceCreateConnectionParams-S3 type: object - additionalProperties: false properties: account_id: description: Snowflake account ID type: string credentials: items: properties: credential: oneOf: - $ref: '#/components/schemas/SourceCredential-KeyPair' - $ref: '#/components/schemas/SourceCredential-SnowflakePAT' type: object name: type: string use_case: enum: - source_authentication type: string required: - credential - use_case - name type: object maxItems: 1 type: array database: description: Snowflake database name type: string password: description: Snowflake password type: string role: description: Snowflake role nullable: true type: string schema: description: Snowflake database schema nullable: true type: string type: enum: - snowflake type: string user: description: Snowflake user name type: string warehouse: description: Snowflake warehouse nullable: true type: string required: - type - database - account_id - user title: SourceCreateConnectionParams-Snowflake type: object - additionalProperties: false description: SpatioTemporal Asset Catalogs properties: credentials: items: properties: credential: oneOf: - $ref: '#/components/schemas/SourceCredential-AwsAssumeRole' - $ref: '#/components/schemas/SourceCredential-AzureStorageString' - $ref: '#/components/schemas/SourceCredential-GcpServiceAccountJson' - $ref: '#/components/schemas/SourceCredential-CustomHeaders' type: object name: type: string use_case: enum: - stac_api_authentication - stac_asset_fetching type: string required: - name - use_case - credential type: object type: array token: description: STAC token nullable: true type: string type: enum: - stac type: string url: description: STAC server / asset URL type: string required: - type - url title: SourceCreateConnectionParams-STAC type: object - additionalProperties: false description: Web Feature Server properties: type: enum: - wfs type: string url: description: WFS URL type: string required: - type - url title: SourceCreateConnectionParams-WFS type: object - additionalProperties: false description: Web Map Service / Web Map Tile Service properties: type: enum: - wms_wmts type: string url: description: WMS/WMTS URL type: string required: - type - url title: SourceCreateConnectionParams-WMSWMTS type: object title: SourceCreateConnectionParams SourceUpdateParams: additionalProperties: false properties: connection: $ref: '#/components/schemas/SourceUpdateConnectionParams' name: type: string permissions: $ref: '#/components/schemas/SourcePermissions' title: SourceUpdateParams type: object UploadResponse: properties: layer_group_id: $ref: '#/components/schemas/FeltID' layer_id: description: The ID of the layer created by this upload. If multiple layers are included in the upload, this is the ID of the first layer in the layer group. example: luCHyMruTQ6ozGk3gPJfEB format: felt_id nullable: false type: string presigned_attributes: description: If provided, the presigned attributes to attach to the post request nullable: true type: object type: enum: - upload_response type: string url: description: If provided, the URL to post the file to nullable: true type: string title: UploadResponse type: object CustomExportParams: additionalProperties: false properties: email_on_completion: description: Send an email to the requesting user when the export completes. Defaults to `true` type: boolean filters: description: Filters for the layer in Felt Style Language filter format items: {} type: array output_format: enum: - csv - gpkg - geojson - geotiff - pmtiles example: csv nullable: false type: string required: - output_format title: CustomExportParams type: object ElementGroupList: items: $ref: '#/components/schemas/ElementGroup' title: ElementGroupList type: array SourceConnection-STAC: additionalProperties: false description: SpatioTemporal Asset Catalogs properties: credentials: items: properties: created_at: nullable: true type: integer credential: oneOf: - $ref: '#/components/schemas/SourceCredential-GcpServiceAccountJson' - $ref: '#/components/schemas/SourceCredential-AzureStorageString' - $ref: '#/components/schemas/SourceCredential-AwsAssumeRole' - $ref: '#/components/schemas/SourceCredential-CustomHeaders' type: object id: $ref: '#/components/schemas/FeltID' name: type: string source_id: $ref: '#/components/schemas/FeltID' updated_at: nullable: true type: integer use_case: enum: - stac_api_authentication - stac_asset_fetching type: string type: object type: array type: enum: - stac type: string url: type: string title: SourceConnection-STAC type: object AddSourceLayerParams: oneOf: - properties: dataset_id: $ref: '#/components/schemas/FeltID' from: enum: - dataset type: string required: - from - dataset_id title: AddSourceLayer-Dataset-Params type: object - properties: from: enum: - sql type: string query: type: string source_id: $ref: '#/components/schemas/FeltID' required: - from - source_id - query title: AddSourceLayer-SQL-Params type: object - properties: from: enum: - stac type: string source_id: $ref: '#/components/schemas/FeltID' stac_asset_url: type: string required: - from - source_id - stac_asset_url title: AddSourceLayer-STAC-Params type: object title: AddSourceLayerParams type: object PublishLayerGroupParams: additionalProperties: false properties: name: description: The name to publish the layer group under example: My Layer type: string title: PublishLayerGroupParams type: object SourceCredentialUpdate-SnowflakePAT: additionalProperties: false description: Authenticate to Snowflake with a programmatic access token (PAT) properties: token: type: string type: enum: - snowflake_pat type: string required: - type title: SourceCredentialUpdate-SnowflakePAT type: object SourceConnection-WMS-WMTS: additionalProperties: false description: Web Map Service / Web Map Tile Service properties: type: enum: - wms_wmts type: string url: type: string title: SourceConnection-WMS-WMTS type: object SourceCredentialUpdate-AzureStorageString: additionalProperties: false description: Authenticate to Azure Blob Storage properties: connection_string: type: string type: enum: - azure_storage_connection_string type: string required: - type title: SourceCredentialUpdate-AzureStorageString type: object Project: additionalProperties: false properties: id: $ref: '#/components/schemas/FeltID' maps: items: $ref: '#/components/schemas/MapReference' type: array max_inherited_permission: description: The maximum permission level workspace members inherit on team-visible projects. enum: - view_only - view_and_contribute - view_and_edit example: view_only nullable: false type: string name: type: string type: enum: - project type: string visibility: enum: - workspace - private type: string required: - id - type - name - visibility - max_inherited_permission - maps title: Project type: object SourceCredentialCreateParams: additionalProperties: false properties: credential: oneOf: - $ref: '#/components/schemas/SourceCredential-AwsAssumeRole' - $ref: '#/components/schemas/SourceCredential-AzureStorageString' - $ref: '#/components/schemas/SourceCredential-CustomHeaders' - $ref: '#/components/schemas/SourceCredential-GcpServiceAccountJson' - $ref: '#/components/schemas/SourceCredential-KeyPair' - $ref: '#/components/schemas/SourceCredential-SnowflakePAT' type: object name: type: string use_case: enum: - stac_api_authentication - stac_asset_fetching - source_authentication type: string required: - name - use_case - credential title: SourceCredentialCreateParams type: object UploadInterpretationHint-AttributeHint-WKT_WKB_Literal: description: A hint that the data contains a WKT/WKB Literal attribute properties: attribute: additionalProperties: false properties: wkt_wkb_literal: type: string required: - wkt_wkb_literal type: object required: - attribute title: UploadInterpretationHint-AttributeHint-WKT_WKB_Literal type: object UploadInterpretationHint-AttributeHint-Admin0: description: A hint that the data contains an Administrative Level 0 (Country) attribute. https://en.wikipedia.org/wiki/List_of_administrative_divisions_by_country properties: attribute: properties: admin_0: type: string required: - admin_0 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-Admin0 type: object UploadInterpretationHint-AttributeHint-LatitudeAndLongitude: description: A hint that the data contains Latitude and Longitude in two individual attributes. properties: attributes: additionalProperties: false properties: lat: type: string lng: type: string required: - lat - lng type: object required: - attributes title: UploadInterpretationHint-AttributeHint-LatitudeAndLongitude type: object SourceCreateConnectionParams-WMSWMTS: additionalProperties: false description: Web Map Service / Web Map Tile Service properties: type: enum: - wms_wmts type: string url: description: WMS/WMTS URL type: string required: - type - url title: SourceCreateConnectionParams-WMSWMTS type: object LayerGroupUpdateParams: additionalProperties: false properties: caption: example: A very interesting group type: string id: $ref: '#/components/schemas/FeltID' legend_visibility: description: Controls how the layer group is displayed in the legend enum: - hide - show type: string name: example: My Layer Group type: string ordering_key: type: integer subtitle: deprecated: true description: 'Deprecated: use `caption` instead.' type: string visibility_interaction: description: Controls how the layer group is displayed in the legend. Defaults to `"default"`. enum: - default - slider - select - multi_select nullable: true type: string title: LayerGroupUpdateParams type: object SourceUpdateConnectionParams-ESRIFeatureServer: additionalProperties: false properties: token: description: Feature Server token nullable: true type: string type: enum: - feature_server type: string url: description: Feature Server URL type: string required: - type title: SourceUpdateConnectionParams-ESRIFeatureServer type: object MapTableSettings: additionalProperties: false properties: default_table_layer_id: example: luCHyMruTQ6ozGk3gPJfEB format: felt_id nullable: true type: string viewers_can_open_table: description: Whether viewers can open the data table type: boolean title: MapTableSettings type: object UploadInterpretationHint-AttributeHint-US_County_2020: description: A hint that the data contains a US County (Census 2020) attribute. properties: attribute: properties: us_county_2020: type: string required: - us_county_2020 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-US_County_2020 type: object CommentExport: items: description: Comment Thread title: CommentExport type: array NotFoundError: properties: errors: items: properties: detail: type: string source: properties: parameter: type: string type: object title: type: string type: object type: array title: NotFoundError type: object SourceUpdateConnectionParams-WMS-WMTS: additionalProperties: false description: Web Map Service / Web Map Tile Service properties: type: enum: - wms_wmts type: string url: description: WMS/WMTS URL type: string required: - type title: SourceUpdateConnectionParams-WMS-WMTS type: object SourceDataset: additionalProperties: false description: A Dataset found when inspecting a Source, e.g. a database table. properties: created_at: type: integer description: nullable: true type: string geometry_type: enum: - polygon - line - point - raster - none type: string id: $ref: '#/components/schemas/FeltID' inspection_status: enum: - completed - failed type: string name: type: string type: enum: - dataset type: string updated_at: type: integer title: SourceDataset type: object UploadInterpretationHint-AttributeHint-Timezone: description: A hint that the data contains a Timezone attribute. properties: attribute: properties: timezone: type: string required: - timezone type: object required: - attribute title: UploadInterpretationHint-AttributeHint-Timezone type: object MapUpdateParams: additionalProperties: false properties: basemap: description: 'The basemap to use for the map. Defaults to "default". Valid values are "default", "light", "dark", "satellite", a valid raster tile URL with {x}, {y}, and {z} parameters, or a hex color string like #ff0000.' type: string description: description: A description to display in the map legend type: string public_access: description: The level of access to grant to the map. Defaults to "view_only". enum: - private - view_only - view_and_comment - view_comment_and_edit type: string table_settings: $ref: '#/components/schemas/MapTableSettings' title: description: The new title for the map type: string viewer_permissions: $ref: '#/components/schemas/MapViewerPermissions' title: MapUpdateParams type: object MapReference: additionalProperties: false properties: created_at: example: '2024-05-25T15:51:34' format: date_time type: string folder_id: nullable: true type: string id: $ref: '#/components/schemas/FeltID' links: properties: self: example: https://felt.com/api/v2/maps/V0dnOMOuTd9B9BOsL9C0UjmqC type: string type: object project_id: nullable: false type: string public_access: enum: - private - view_only - view_and_comment - view_comment_and_edit type: string thumbnail_url: description: A static thumbnail image of the map nullable: true type: string title: type: string type: enum: - map_reference type: string url: type: string visited_at: format: date_time nullable: true type: string required: - id - type - url - title - thumbnail_url - created_at - visited_at - project_id - folder_id - public_access title: MapReference type: object MapDuplicateParams: additionalProperties: false properties: destination: oneOf: - additionalProperties: false properties: project_id: $ref: '#/components/schemas/FeltID' required: - project_id type: object - additionalProperties: false properties: folder_id: $ref: '#/components/schemas/FeltID' required: - folder_id type: object type: object title: description: Title for the duplicated map. If not provided, will default to '[Original Title] (copy)' type: string title: MapDuplicateParams type: object UploadInterpretationHint-AttributeHint-EuropeanUnion_LAU_2021: description: A hint that the data contains a Eurostat LAU (2021) attribute. https://ec.europa.eu/eurostat/web/nuts/local-administrative-units properties: attribute: properties: eu_lau_2021: type: string required: - eu_lau_2021 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-EuropeanUnion_LAU_2021 type: object PublishLayerParams: additionalProperties: false properties: name: description: The name to publish the layer under example: My Layer type: string title: PublishLayerParams type: object UploadInterpretationHint-AttributeHint-US_Zip_Code_2022: description: A hint that the data contains US Zip Code (2022) attribute. properties: attribute: properties: us_zip_code_2022: type: string required: - us_zip_code_2022 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-US_Zip_Code_2022 type: object SourceConnection-ABSBucket: additionalProperties: false description: Microsoft Azure Blob Storage properties: blob_storage_url: type: string credentials: items: properties: created_at: nullable: true type: integer credential: oneOf: - $ref: '#/components/schemas/SourceCredential-AzureStorageString' type: object id: $ref: '#/components/schemas/FeltID' name: type: string source_id: $ref: '#/components/schemas/FeltID' updated_at: nullable: true type: integer use_case: enum: - source_authentication type: string type: object type: array type: enum: - abs_bucket type: string title: SourceConnection-ABSBucket type: object SourceConnection-WFS: additionalProperties: false description: Web Feature Server properties: type: enum: - wfs type: string url: type: string title: SourceConnection-WFS type: object UploadInterpretationHint-AttributeHint-PartialAddress: description: A hint that the data contains an Address spread out over multiple attributes. properties: attributes: additionalProperties: false properties: country: description: 'ex: USA' type: string locality: description: 'ex: Oakland' type: string postal_code: description: 'ex: 94612' type: string region: description: 'ex: California' type: string street_address: description: 'ex: 1904 Franklin St' type: string required: - street_address type: object required: - attributes title: UploadInterpretationHint-AttributeHint-PartialAddress type: object Source: additionalProperties: false properties: automatic_sync: enum: - enabled - paused type: string connection: nullable: true oneOf: - $ref: '#/components/schemas/SourceConnection-ABSBucket' - $ref: '#/components/schemas/SourceConnection-Google-BigQuery' - $ref: '#/components/schemas/SourceConnection-Databricks' - $ref: '#/components/schemas/SourceConnection-ESRI-FeatureServer' - $ref: '#/components/schemas/SourceConnection-GCSBucket' - $ref: '#/components/schemas/SourceConnection-Microsoft-SQL' - $ref: '#/components/schemas/SourceConnection-Postgres' - $ref: '#/components/schemas/SourceConnection-Amazon-Redshift' - $ref: '#/components/schemas/SourceConnection-S3Bucket' - $ref: '#/components/schemas/SourceConnection-Snowflake' - $ref: '#/components/schemas/SourceConnection-STAC' - $ref: '#/components/schemas/SourceConnection-WFS' - $ref: '#/components/schemas/SourceConnection-WMS-WMTS' created_at: nullable: true type: integer datasets: items: $ref: '#/components/schemas/SourceDataset' type: array id: $ref: '#/components/schemas/FeltID' last_synced_at: nullable: true type: integer name: type: string owner_id: $ref: '#/components/schemas/FeltID' permissions: $ref: '#/components/schemas/SourcePermissions' sync_status: enum: - syncing - completed - failed type: string type: enum: - source type: string updated_at: nullable: true type: integer workspace_id: $ref: '#/components/schemas/FeltID' title: Source type: object SourceCredential-OAuthM2M: additionalProperties: false description: Authenticate to your source using Machine-to-Machine (M2M) OAuth properties: client_id: type: string client_secret: type: string type: enum: - oauth_m2m type: string required: - type - client_id - client_secret title: SourceCredential-OAuthM2M type: object SourceCredentialUpdate-CustomHeaders: additionalProperties: false description: Authenticate to an API using headers properties: headers: items: properties: name: description: The header name type: string sensitive: description: Whether or not the header is sensitive. If it is marked as sensitive, then `felt:redacted` will be returned when viewing this header type: boolean value: description: The header value type: string required: - name - value - sensitive type: object type: array type: enum: - custom_headers type: string required: - type title: SourceCredentialUpdate-CustomHeaders type: object UploadInterpretationHint-AttributeHint-US_Census_Tract2020: description: A hint that the data contains a US Census Tract (Census 2020) attribute. https://www.census.gov/geographies/reference-maps/2020/geo/2020pl-maps/2020-census-tract.html properties: attribute: additionalProperties: false properties: us_census_tract_2020: type: string required: - us_census_tract_2020 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-US_Census_Tract2020 type: object ProjectUpdateParams: additionalProperties: false properties: max_inherited_permission: description: The maximum permission level workspace members inherit on team-visible projects. Only applicable when visibility is "workspace". enum: - view_only - view_and_contribute - view_and_edit example: view_only nullable: false type: string name: description: The name to be used for the Project type: string visibility: description: Either viewable by all members of the workspace, or private to users who are invited. enum: - workspace - private type: string title: ProjectUpdateParams type: object SourceCreateConnectionParams-ABS: additionalProperties: false properties: blob_storage_url: description: ABS blob storage URL type: string credentials: items: properties: credential: $ref: '#/components/schemas/SourceCredential-AzureStorageString' name: type: string use_case: enum: - source_authentication type: string required: - credential - use_case - name type: object maxItems: 1 type: array type: enum: - abs_bucket type: string required: - type - blob_storage_url title: SourceCreateConnectionParams-ABS type: object UploadInterpretationHint: oneOf: - description: A hint that the data contains Latitude and Longitude in two individual attributes. properties: attributes: additionalProperties: false properties: lat: type: string lng: type: string required: - lat - lng type: object required: - attributes title: UploadInterpretationHint-AttributeHint-LatitudeAndLongitude type: object - description: A hint that the data contains Latitude and Longitude combined in a single attribute. properties: attribute: additionalProperties: false properties: lat_lng: type: string required: - lat_lng type: object required: - attribute title: UploadInterpretationHint-AttributeHint-LatitudeAndLongitudeCombined type: object - description: A hint that the data contains a full Address contained in a single attribute. properties: attribute: properties: full_address: type: string required: - full_address type: object required: - attribute title: UploadInterpretationHint-AttributeHint-FullAddress type: object - description: A hint that the data contains an Address spread out over multiple attributes. properties: attributes: additionalProperties: false properties: country: description: 'ex: USA' type: string locality: description: 'ex: Oakland' type: string postal_code: description: 'ex: 94612' type: string region: description: 'ex: California' type: string street_address: description: 'ex: 1904 Franklin St' type: string required: - street_address type: object required: - attributes title: UploadInterpretationHint-AttributeHint-PartialAddress type: object - description: A hint that the data contains a Locality spread out over multiple attributes. properties: attributes: additionalProperties: false properties: country: description: 'ex: USA' type: string locality: description: 'ex: Oakland' type: string region: description: 'ex: California' type: string required: - locality type: object required: - attributes title: UploadInterpretationHint-AttributeHint-Locality type: object - description: A hint that the data contains a WKT/WKB Literal attribute properties: attribute: additionalProperties: false properties: wkt_wkb_literal: type: string required: - wkt_wkb_literal type: object required: - attribute title: UploadInterpretationHint-AttributeHint-WKT_WKB_Literal type: object - description: A hint that the data contains a US Census Tract (Census 2020) attribute. https://www.census.gov/geographies/reference-maps/2020/geo/2020pl-maps/2020-census-tract.html properties: attribute: additionalProperties: false properties: us_census_tract_2020: type: string required: - us_census_tract_2020 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-US_Census_Tract2020 type: object - description: 'A hint that the data contains a US Core-based statistical area (Census 2020) attribute: https://www.census.gov/geographies/reference-maps/2020/geo/cbsa.html' properties: attribute: additionalProperties: false properties: us_cbsa_2020: type: string required: - us_cbsa_2020 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-US_CBSA_2020 type: object - description: A hint that the data contains a US State (Census 2020) attribute. properties: attribute: properties: us_state_2020: type: string required: - us_state_2020 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-US_State_2020 type: object - description: A hint that the data contains a US County (Census 2020) attribute. properties: attribute: properties: us_county_2020: type: string required: - us_county_2020 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-US_County_2020 type: object - description: A hint that the data contains US Zip Code (2022) attribute. properties: attribute: properties: us_zip_code_2022: type: string required: - us_zip_code_2022 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-US_Zip_Code_2022 type: object - description: A hint that the data contains a Eurostat LAU (2021) attribute. https://ec.europa.eu/eurostat/web/nuts/local-administrative-units properties: attribute: properties: eu_lau_2021: type: string required: - eu_lau_2021 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-EuropeanUnion_LAU_2021 type: object - description: A hint that the data contains a Eurostat NUTS Level 1 (2021) attribute. https://ec.europa.eu/eurostat/web/gisco/geodata/statistical-units/territorial-units-statistics properties: attribute: properties: eu_nuts_1_2021: type: string required: - eu_nuts_1_2021 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-European_Union_NUTS_1_2021 type: object - description: A hint that the data contains a Eurostat NUTS 2 (2021) attribute. https://ec.europa.eu/eurostat/web/gisco/geodata/statistical-units/territorial-units-statistics properties: attribute: properties: eu_nuts_2_2021: type: string required: - eu_nuts_2_2021 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-European_Union_NUTS_2_2021 type: object - description: A hint that the data contains a Eurostat NUTS 3 (2021) attribute. https://ec.europa.eu/eurostat/web/gisco/geodata/statistical-units/territorial-units-statistics properties: attribute: properties: eu_nuts_3_2021: type: string required: - eu_nuts_3_2021 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-European_Union_NUTS_3_2021 type: object - description: A hint that the data contains a Australian ABS postal area (2021) attribute. https://www.abs.gov.au/statistics/standards/australian-statistical-geography-standard-asgs-edition-3/jul2021-jun2026/non-abs-structures/postal-areas properties: attribute: properties: aus_postal_area_2021: type: string required: - aus_postal_area_2021 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-Australian_ABS_Postal_Area_2021 type: object - description: A hint that the data contains an Administrative Level 0 (Country) attribute. https://en.wikipedia.org/wiki/List_of_administrative_divisions_by_country properties: attribute: properties: admin_0: type: string required: - admin_0 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-Admin0 type: object - description: A hint that the data contains an Administrative Level 1 (Region) attribute. https://en.wikipedia.org/wiki/List_of_administrative_divisions_by_country properties: attribute: properties: admin_1: type: string required: - admin_1 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-Admin1 type: object - description: A hint that the data contains a Timezone attribute. properties: attribute: properties: timezone: type: string required: - timezone type: object required: - attribute title: UploadInterpretationHint-AttributeHint-Timezone type: object - description: A hint that the data contains H3 attribute. properties: attribute: properties: h3: type: string required: - h3 type: object required: - attribute title: UploadInterpretationHint-AttributeHint-H3 type: object title: UploadInterpretationHint SourceCredential-SnowflakePAT: additionalProperties: false description: Authenticate to Snowflake with a programmatic access token (PAT) properties: token: type: string type: enum: - snowflake_pat type: string required: - type - token title: SourceCredential-SnowflakePAT type: object SourceReferenceList: items: $ref: '#/components/schemas/SourceReference' title: SourceReferenceList type: array SourceReference: additionalProperties: false properties: automatic_sync: enum: - enabled - paused type: string connection_type: enum: - abs_bucket - bigquery - databricks - feature_server - gcs_bucket - lightning_server - mssql - postgresql - redshift - s3_bucket - snowflake - stac - wfs - wherobots - wms_wmts type: string created_at: nullable: true type: integer id: $ref: '#/components/schemas/FeltID' last_synced_at: nullable: true type: integer links: properties: self: example: https://felt.com/api/v2/sources/V0dnOMOuTd9B9BOsL9C0UjmqC type: string type: object name: type: string owner_id: $ref: '#/components/schemas/FeltID' permissions: $ref: '#/components/schemas/SourcePermissions' sync_status: enum: - syncing - completed - failed type: string type: enum: - source_reference type: string updated_at: nullable: true type: integer workspace_id: $ref: '#/components/schemas/FeltID' title: SourceReference type: object CommentResolved: properties: comment_id: $ref: '#/components/schemas/FeltID' title: CommentResolved type: object LayerGroupParamsList: items: $ref: '#/components/schemas/LayerGroupParams' title: LayerGroupParamsList type: array SourceCredentialUpdate-AwsAssumeRole: additionalProperties: false description: Authenticate to AWS S3 properties: role_arn: type: string role_session_name: type: string type: enum: - aws_assume_role type: string required: - type title: SourceCredentialUpdate-AwsAssumeRole type: object SourceCredential-AwsAssumeRole: additionalProperties: false description: Authenticate to AWS S3 properties: role_arn: type: string role_session_name: type: string type: enum: - aws_assume_role type: string required: - type - role_arn - role_session_name title: SourceCredential-AwsAssumeRole type: object SourceCreateConnectionParams-ESRIFeatureServer: additionalProperties: false properties: token: description: Feature Server token nullable: true type: string type: enum: - feature_server type: string url: description: Feature Server URL type: string required: - type - url title: SourceCreateConnectionParams-ESRIFeatureServer type: object ServiceUnavailableError: properties: errors: items: properties: detail: type: string source: properties: parameter: type: string type: object title: type: string type: object type: array title: ServiceUnavailableError type: object LayerUpdateStyleParams: properties: style: description: The new layer style, specified in Felt Style Language format type: object required: - style title: LayerUpdateStyleParams type: object securitySchemes: bearerAuth: bearerFormat: YOUR_API_KEY scheme: bearer type: http info: description: Felt REST API v2.0 title: Felt version: '2.0' openapi: 3.0.0 paths: /api/v2/maps/{map_id}/layer_groups/{layer_group_id}: delete: callbacks: {} description: 'Permanently remove a layer group and all its contained layers from a map. {% hint style="warning" %} This action cannot be undone. The layer group and all its contained layers will be permanently removed from the map. {% endhint %} ' operationId: delete_map_layer_group parameters: - description: The ID of the map to delete the layer group from in: path name: map_id required: true schema: type: string - description: The ID of the layer group to delete in: path name: layer_group_id required: true schema: type: string responses: '204': description: No Content '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Delete map layer group tags: - Layers get: callbacks: {} description: Retrieve detailed information about a specific layer group including its layers and configuration. operationId: show_map_layer_group parameters: - description: '' in: path name: map_id required: true schema: type: string - description: '' in: path name: layer_group_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/LayerGroup' description: Layer Group '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Get map layer group tags: - Layers post: callbacks: {} description: Update layer group properties including name, visibility, and organization settings. operationId: update_map_layer_group parameters: - description: '' in: path name: map_id required: true schema: type: string - description: '' in: path name: layer_group_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/LayerGroupUpdateParams' description: LayerGroup parameters required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/LayerGroup' description: LayerGroup '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Update map layer group tags: - Layers /api/v2/maps/{map_id}/layers/{layer_id}/publish: post: callbacks: {} description: Make a layer available in the workspace library for reuse by team members. operationId: publish_map_layer parameters: - description: The ID of the map where the layer is located in: path name: map_id required: true schema: type: string - description: The ID of the layer to publish in: path name: layer_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PublishLayerParams' description: Publish layer params required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/Layer' description: Publish layer response '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Publish map layer tags: - Layer Library /api/v2/sources/{source_id}/update: post: callbacks: {} description: 'Update data source connection settings, access permissions, or configuration details. Connecting the Source and inspecting its datasets will happen asynchronously after the API response is returned. To determine when the inspection process has completed, poll the Show Source endpoint and check for `sync_status: completed`. ' operationId: update_source parameters: - description: The ID of the source to update in: path name: source_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SourceUpdateParams' description: Source update params required: false responses: '202': content: application/json: schema: $ref: '#/components/schemas/SourceReference' description: Source reference '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Update source tags: - Sources /api/v2/maps/{map_id}/elements/{element_id}: delete: callbacks: {} description: 'Permanently delete an element from a map. {% hint style="warning" %} This action cannot be undone. The element will be permanently removed from the map. {% endhint %} ' operationId: delete_map_element parameters: - description: The ID of the map to delete the element from. in: path name: map_id required: true schema: type: string - description: The ID of the element to delete. in: path name: element_id required: true schema: type: string responses: '204': description: No Content '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Delete map element tags: - Elements /api/v2/projects: get: callbacks: {} description: Retrieve all projects accessible to the authenticated user within the workspace. operationId: list_projects parameters: - description: Only needed when using the API as part of a plugin in: query name: workspace_id required: false schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/ProjectReferenceList' description: Projects '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: List projects tags: - Projects post: callbacks: {} description: Create a new project with specified name and visibility settings within the workspace. operationId: create_project parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/ProjectCreateParams' description: Project create params required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/Project' description: Project '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Create project tags: - Projects /api/v2/maps/{map_id}/comments/export: get: callbacks: {} description: Export all comments and replies from a map in `CSV`, `JSON`, or `GeoJSON` format. operationId: export_map_comments parameters: - description: The ID of the map to export comments from. in: path name: map_id required: true schema: type: string - description: 'The format to export the comments in: ''csv'', ''json'' (default), or ''geojson''' in: query name: format required: false schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/CommentExport' description: Comment export response '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Export map comments tags: - Comments /api/v2/sources: get: callbacks: {} description: Retrieve all data sources accessible to the authenticated user within the workspace. operationId: list_sources parameters: - description: Only needed when using the API as part of a plugin in: query name: workspace_id required: false schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/SourceReferenceList' description: Source references '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: List sources tags: - Sources x-sort-order: 0 post: callbacks: {} description: 'Create a new data source connection with authentication credentials and access permissions. Connecting the Source and inspecting its datasets will happen asynchronously after the API response is returned. To determine when the inspection process has completed, poll the Show Source endpoint and check for `sync_status: completed`. ' operationId: create_source parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/SourceCreateParams' description: Source create params required: false responses: '202': content: application/json: schema: $ref: '#/components/schemas/SourceReference' description: Source reference '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Create source tags: - Sources /api/v2/maps/{map_id}/add_source_layer: post: callbacks: {} description: Create a new layer from an existing data source connection (database, API, or file). operationId: add_map_layer_from_source parameters: - description: '' in: path name: map_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AddSourceLayerParams' description: AddSourceLayerParams required: false responses: '202': content: application/json: schema: $ref: '#/components/schemas/AddSourceLayerAccepted' description: AddSourceLayerAccepted '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Add layer from data source tags: - Layer Uploads /api/v2/sources/{source_id}/sync: post: callbacks: {} description: 'Trigger a full data synchronization from the source to update all connected layers with latest data. Syncing will happen asynchronously after the API response is returned. To determine when the inspection process has completed, poll the Show Source endpoint and check for `sync_status: completed`. ' operationId: sync_source parameters: - description: The ID of the source to sync in: path name: source_id required: true schema: type: string responses: '202': content: application/json: schema: $ref: '#/components/schemas/SourceReference' description: Source reference '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Sync source tags: - Sources /api/v2/maps/{map_id}/layers/{layer_id}/refresh: post: callbacks: {} description: 'Trigger a data refresh for a layer from its original data source to pull in the latest updates. After uploading a file or URL, you may want to update the resulting layer with new data. The process is quite similar to the upload: * For URL uploads, simply making a single `POST` request to the refresh endpoint is enough * For file refreshes, the response of the initial `POST` request will include a URL and some pre-signed attributes, which will be used to upload the new file to Amazon S3. {% hint style="info" %} With the `felt_python` library, you can refresh a layer with a simple function call: {% endhint %} ```python from felt_python import (refresh_file_layer, refresh_url_layer) refresh_file_layer(map_id, layer_id, file_name="features.geojson") refresh_url_layer(map_id, layer_id) ``` ' operationId: refresh_map_layer parameters: - description: The ID of the map hosting the layer to refresh in: path name: map_id required: true schema: type: string - description: The ID of the layer to refresh in: path name: layer_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/UploadResponse' description: Refresh response '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Refresh map layer tags: - Layer Uploads /api/v2/sources/{source_id}: delete: callbacks: {} description: 'Permanently delete a data source connection and all its associated layers and data. {% hint style="warning" %} Any layers created from the Source will remain after it is deleted, but they will no longer be refreshed. {% endhint %} ' operationId: delete_source parameters: - description: The ID of the source to delete in: path name: source_id required: true schema: type: string responses: '204': description: No Content '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Delete source tags: - Sources get: callbacks: {} description: Retrieve detailed configuration and connection information for a specific data source. operationId: show_source parameters: - description: The ID of the source to show in: path name: source_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/Source' description: Source '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Get source tags: - Sources /api/v2/maps/{map_id}/layers: get: callbacks: {} description: Retrieve all layers from a map, including uploaded files and connected data sources. operationId: list_map_layers parameters: - description: '' in: path name: map_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/LayerList' description: Layers list '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: List map layers tags: - Layers post: callbacks: {} description: Update layer properties including styling, visibility, grouping, and other configuration options. operationId: update_map_layer parameters: - description: '' in: path name: map_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/LayerUpdateParamsList' description: Layer params list required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/LayerList' description: Layer list '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Update map layer tags: - Layers /api/v2/maps/{map_id}/upload: post: callbacks: {} description: 'Upload a file or import data from a URL to create a new layer on the map. The `/upload` endpoint can be used for both URL and file uploads: * For URL uploads, simply making a single `POST` request to the upload endpoint is enough * For file uploads, the response of the initial `POST` request contain information you will use to upload the file to Amazon S3 Check our [Upload Anything](https://help.felt.com/upload-anything) docs to see what URLs are supported. #### **Uploading the file to Amazon S3** Layer files aren''t uploaded directly to the Felt API. Instead, they are uploaded to an S3 bucket. The response to this API request will include a URL and pre-signed params for you to use to upload your file. Only a single file may be uploaded — if you wish to upload several files at once, consider wrapping them in a zip file. To upload the file, you must perform a multipart upload, and include the file contents in the `file` field. {% hint style="info" %} With the `felt_python` library, you can upload a file with a simple function call: {% endhint %} ```python from felt_python import upload_file upload_file(map_id, file_name="features.geojson", layer_name="My new layer") ``` ' operationId: upload_map_layer parameters: - description: The ID of the map to upload the layer to. in: path name: map_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UploadLayerParams' description: Upload layer params required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/UploadResponse' description: Upload layer response '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Upload map layer tags: - Layer Uploads x-sort-order: 0 /api/v2/maps/{map_id}/layers/{layer_id}/get_export_link: get: callbacks: {} description: 'Generate a direct download link for layer data export. Get a link to export a layer as a GeoPackage (vector layers) or GeoTIFF (raster layers). ' operationId: create_map_layer_export_link parameters: - description: The ID of the map where the layer is located in: path name: map_id required: true schema: type: string - description: The ID of the layer to export in: path name: layer_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExportLink' description: Export link '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError '503': content: application/json: schema: $ref: '#/components/schemas/ServiceUnavailableError' description: ServiceUnavailableError security: - bearerAuth: [] summary: Create layer export link tags: - Layer Exports /api/v2/maps/{map_id}/layers/{layer_id}/custom_exports/{export_id}: get: callbacks: {} description: 'Check the processing status and download availability of a custom export request. If the export is successful, the response will include a `download_url` for accessing the exported data. ' operationId: poll_map_layer_custom_export parameters: - description: The ID of the map where the layer is located in: path name: map_id required: true schema: type: string - description: The ID of the layer to export in: path name: layer_id required: true schema: type: string - description: The ID of the export in: path name: export_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/CustomExportRequestStatus' description: Custom export request status '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Check custom export status tags: - Layer Exports /api/v2/maps/{map_id}/layer_groups: get: callbacks: {} description: Retrieve all layer groups from a map to see how layers are organized. operationId: list_map_layer_groups parameters: - description: '' in: path name: map_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/LayerGroupList' description: Layers Groups '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: List map layer groups tags: - Layers post: callbacks: {} description: Update properties for multiple layer groups in a single request for efficient bulk operations. operationId: update_map_layer_groups parameters: - description: '' in: path name: map_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/LayerGroupParamsList' description: LayerGroup parameters list required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/LayerGroupList' description: LayerGroup list '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Update map layer groups tags: - Layers /api/v2/maps/{map_id}/comments/{comment_id}/resolve: post: callbacks: {} description: Mark a comment thread as resolved. operationId: resolve_map_comment parameters: - description: The ID of the map that contains the comment. in: path name: map_id required: true schema: type: string - description: The ID of the comment to resolve. in: path name: comment_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/CommentResolved' description: Comment resolved response '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Resolve map comment tags: - Comments /api/v2/maps/{map_id}/layers/{layer_id}/update_style: post: callbacks: {} description: Update the visual styling properties of a layer including colors, symbols, and rendering options. operationId: update_map_layer_style parameters: - description: The ID of the map where the layer is located in: path name: map_id required: true schema: type: string - description: The ID of the layer to update the style of in: path name: layer_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/LayerUpdateStyleParams' description: Layer style parameters required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/Layer' description: Layer '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Update layer style tags: - Layers /api/v2/sources/{source_id}/credentials: post: callbacks: {} description: 'Add authentication credentials to an existing data source for secure access. Some sources may need to be configured with additional credentials to work with Felt. Access to S3 Buckets, for example, may be protected by IAM policies. Adding a `SourceCredential-AwsAssumeRole` credential to your S3 Bucket source allows Felt to connect to a private source. Sensitive fields in credentials, like `SourceCredential-KeyPair.private_key`, will be returned as `felt:redacted`. ' operationId: create_source_credential parameters: - description: The ID of the source to attach the credential in: path name: source_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SourceCredentialCreateParams' description: Source create credential params required: false responses: '202': content: application/json: schema: $ref: '#/components/schemas/SourceCredential' description: Source credential created '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Create source credential tags: - Sources /api/v2/maps/{map_id}/move: post: callbacks: {} description: Move a map to a different project or folder within the same workspace. Project IDs and Folder IDs can be found inside map settings. operationId: move_map parameters: - description: '' in: path name: map_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/MapMoveParams' description: Map move params required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/Map' description: Map '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Move map tags: - Maps /api/v2/maps/{map_id}/duplicate: post: callbacks: {} description: Create a copy of a map with all its layers, elements, and configuration. operationId: duplicate_map parameters: - description: The ID of the map to duplicate in: path name: map_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/MapDuplicateParams' description: Map duplicate params required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/Map' description: Duplicated Map '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Duplicate map tags: - Maps /api/v2/maps: post: callbacks: {} description: 'Create a new map with optional customization options. Several aspects can be customized when creating a new map, including: * Title * Initial location (latitude, longitude and zoom level) * Sharing permissions (defaults to viewing and commenting for users with the map URL) * An array of URLs to import on map creation ' operationId: create_map parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/MapCreateParams' description: Map create params required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/Map' description: Map '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Create map tags: - Maps x-sort-order: 0 /api/v2/maps/{map_id}/elements: get: callbacks: {} description: Returns a GeoJSON `FeatureCollection` containing all the elements in a map that are not in an element group. operationId: list_map_elements parameters: - description: The ID of the map to list elements from. in: path name: map_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/GeoJSON' description: GeoJSON '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: List map elements tags: - Elements x-sort-order: 0 post: callbacks: {} description: 'Create new elements or update existing ones on a map using GeoJSON data. Each element is represented by a feature in the `POST`''ed GeoJSON Feature Collection. For each feature, including an existing element `id` will result in the element being updated on the map. If no element `id` is provided (or a non-existent one), a new element will be created. {% hint style="info" %} The maximum payload size for any `POST` to the Felt API is 1MB. Additionally, complex element geometry may be automatically simplified. If you require large, complex geometries, consider uploading your data as a Data Layer. {% endhint %} ' operationId: upsert_map_elements parameters: - description: The ID of the map to create the elements in in: path name: map_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/GeoJSON' description: Upsert element parameters required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/GeoJSON' description: GeoJSON '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Create or update map elements tags: - Elements /api/v2/maps/{map_id}/embed_token: post: callbacks: {} description: 'Creates a short-lived (15 minutes) token for authenticating a visitor to view a private embedded map view without being logged into Felt. You must provide a `user_email` to associate the token with the end user that will be viewing the map. Each end user should be a member of your Felt workspace with a viewer, editor, or admin role assigned. ### Usage * Generate a token by making a call to this API from your server * Securely pass the token to your frontend client * Include the token as a query parameter on the Embed URL in an iframe ```html ``` #### Enabling Layer Export You can allow EmbedToken based page views to export layer data. * Turn on "Viewer permissions: Export data" in Map settings ' operationId: create_map_embed_token parameters: - description: '' in: path name: map_id required: true schema: type: string - description: Each token must be associated with the email address of the user who will use it. in: query name: user_email required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/EmbedToken' description: EmbedToken '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Create an Embed Token tags: - Embed Tokens /api/v2/maps/{map_id}/update: post: callbacks: {} description: Update map properties including title, description, and access permissions. operationId: update_map parameters: - description: The ID of the map to update in: path name: map_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/MapUpdateParams' description: Map update params required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/Map' description: Map '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Update map tags: - Maps /api/v2/maps/{map_id}/layer_groups/{layer_group_id}/publish: post: callbacks: {} description: Make a layer group available in the workspace library for reuse by team members. operationId: publish_map_layer_group parameters: - description: The ID of the map where the layer group is located in: path name: map_id required: true schema: type: string - description: The ID of the layer group to publish in: path name: layer_group_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PublishLayerGroupParams' description: Publish layer group params required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/LayerGroup' description: Publish layer group response '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Publish map layer group tags: - Layer Library /api/v2/projects/{project_id}: delete: callbacks: {} description: 'Permanently delete a project and all its contained maps and folders. {% hint style="danger" %} Caution: Deleting a project deletes all of the folders and maps inside! {% endhint %} ' operationId: delete_project parameters: - description: 'The ID of the Project to delete. Note: This will delete all Folders and Maps inside the project!' in: path name: project_id required: true schema: type: string responses: '204': description: No Content '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Delete project tags: - Projects get: callbacks: {} description: Retrieve detailed information about a specific project including metadata, permissions, and references to the maps in the project. operationId: show_project parameters: - description: '' in: path name: project_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/Project' description: Project '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Get project tags: - Projects /api/v2/maps/{map_id}/layers/{layer_id}: delete: callbacks: {} description: 'Permanently remove a layer from a map. {% hint style="warning" %} This action cannot be undone. The layer and all its data will be permanently removed from the map. {% endhint %} ' operationId: delete_map_layer parameters: - description: The ID of the map to delete the layer from in: path name: map_id required: true schema: type: string - description: The ID of the layer to delete in: path name: layer_id required: true schema: type: string responses: '204': description: No Content '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Delete map layer tags: - Layers get: callbacks: {} description: Retrieve detailed information about a specific layer including data source, styling, and configuration. operationId: show_map_layer parameters: - description: '' in: path name: map_id required: true schema: type: string - description: '' in: path name: layer_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/Layer' description: Layer '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Get map layer tags: - Layers x-sort-order: 0 /api/v2/projects/{project_id}/update: post: callbacks: {} description: Update project properties including name and visibility settings. operationId: update_project parameters: - description: The ID of the project to update in: path name: project_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ProjectUpdateParams' description: Project update params required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/Project' description: Project '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Update project tags: - Projects /api/v2/sources/{source_id}/credentials/{credential_id}/update: post: callbacks: {} description: 'Update existing authentication credentials for a data source connection. Sensitive fields in credentials, like `SourceCredential-KeyPair.private_key`, will be returned as `felt:redacted`. ' operationId: update_source_credential parameters: - description: The ID of the source that the credential belongs to in: path name: source_id required: true schema: type: string - description: The ID of the credential in: path name: credential_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SourceCredentialUpdateParams' description: Source credential update params required: false responses: '202': content: application/json: schema: $ref: '#/components/schemas/SourceCredential' description: Source credential updated '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Update source credential tags: - Sources /api/v2/sources/{source_id}/credentials/{credential_id}: delete: callbacks: {} description: Remove authentication credentials from a data source connection. operationId: delete_source_credential parameters: - description: The ID of the source that the credential belongs to in: path name: source_id required: true schema: type: string - description: The ID of the credential to delete in: path name: credential_id required: true schema: type: string responses: '204': description: No Content '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Delete source credential tags: - Sources /api/v2/maps/{map_id}/element_groups/{group_id}: get: callbacks: {} description: Retrieve all elements from a specific group as GeoJSON. operationId: show_map_element_group parameters: - description: The ID of the map. in: path name: map_id required: true schema: type: string - description: The ID of the element group. in: path name: group_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/GeoJSON' description: GeoJSON '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Get map element group tags: - Elements /api/v2/library: get: callbacks: {} description: 'List all layers in your workspace''s library, or the felt layer library. You can add a layer from the library to a map by using the "Duplicate layers" API endpoint (`POST /api/v2/duplicate_layers`) and the layer `id` provided by this endpoint. ' operationId: list_library_layers parameters: - description: '' in: query name: source required: false schema: default: workspace description: Defaults to listing library layers for your "workspace". Use "felt" to list layers from the Felt data library. Use "all" to list layers from both sources. enum: - workspace - felt - all type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/LayerLibrary' description: LayerLibrary '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: List library layers tags: - Layer Library /api/v2/maps/{map_id}: delete: callbacks: {} description: 'Permanently delete a map and all its associated data. {% hint style="warning" %} This action cannot be undone. The map and all its layers, elements, and comments will be permanently removed. {% endhint %} ' operationId: delete_map parameters: - description: The ID of the map to delete in: path name: map_id required: true schema: type: string responses: '204': description: No Content '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Delete map tags: - Maps get: callbacks: {} description: Retrieve a map with its metadata including title, URL, thumbnail, and timestamps. operationId: show_map parameters: - description: '' in: path name: map_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/Map' description: Map '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Get map tags: - Maps /api/v2/maps/{map_id}/element_groups: get: callbacks: {} description: Returns a list of GeoJSON `FeatureCollection`s, one for each element group in the map. operationId: list_map_element_groups parameters: - description: The ID of the map to list groups from. in: path name: map_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/ElementGroupList' description: ElementGroupList '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: List map element groups tags: - Elements post: callbacks: {} description: 'Create new element groups or update existing ones. For each Element Group, including an existing Element Group `id` will result in the Element Group being updated. If no `id` is provided, a new Element Group will be created. {% hint style="info" %} The maximum payload size for any `POST` to the Felt API is 1MB. Additionally, complex element geometry may be automatically simplified. If you require large, complex geometries, consider uploading your data as a Data Layer. {% endhint %} ' operationId: upsert_map_element_groups parameters: - description: The ID of the map to create the group in in: path name: map_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ElementGroupParamsList' description: Upsert element groups parameters required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/ElementGroupList' description: Element group list '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Create or update map element groups tags: - Elements /api/v2/maps/{map_id}/layers/{layer_id}/custom_export: post: callbacks: {} description: 'Start a custom export with specific format and filter options for layer data. Export requests are asynchronous. A successful response will return a `poll_endpoint` to check the status of the export using the poll custom export endpoint. ' operationId: create_map_layer_custom_export parameters: - description: The ID of the map where the layer is located in: path name: map_id required: true schema: type: string - description: The ID of the layer to export in: path name: layer_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomExportParams' description: Custom export params required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/CustomExportResponse' description: Custom export response '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError '503': content: application/json: schema: $ref: '#/components/schemas/ServiceUnavailableError' description: ServiceUnavailableError security: - bearerAuth: [] summary: Create custom layer export tags: - Layer Exports /api/v2/maps/{map_id}/comments/{comment_id}: delete: callbacks: {} description: 'Permanently delete a comment or reply from the map. {% hint style="warning" %} This action cannot be undone. The comment or reply will be permanently removed from the map. {% endhint %} ' operationId: delete_map_comment parameters: - description: The ID of the map that contains the comment. in: path name: map_id required: true schema: type: string - description: The ID of the comment to delete. in: path name: comment_id required: true schema: type: string responses: '204': description: No Content '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Delete map comment tags: - Comments /api/v2/user: get: callbacks: {} description: Retrieve profile information and settings for the authenticated user. operationId: show_current_user parameters: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/User' description: User '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Get current user tags: - Users /api/v2/duplicate_layers: post: callbacks: {} description: Copy layers or layer groups to other maps, preserving styling and configuration. operationId: duplicate_map_layers parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/DuplicateLayersParams' description: Duplicate Layers Params required: false responses: '200': content: application/json: schema: $ref: '#/components/schemas/DuplicateLayersResponse' description: Duplicate Layers Response '401': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '403': content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' description: UnauthorizedError '404': content: application/json: schema: $ref: '#/components/schemas/NotFoundError' description: NotFoundError '422': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '429': content: application/json: schema: $ref: '#/components/schemas/JsonErrorResponse' description: Unprocessable Entity '500': content: application/json: schema: $ref: '#/components/schemas/InternalServerError' description: InternalServerError security: - bearerAuth: [] summary: Duplicate map layers tags: - Layers security: [] servers: - url: https://felt.com variables: {} tags: - description: 'Maps are the centerpiece of Felt. With these APIs, you can create, retrieve, update, delete, move, and duplicate maps programmatically. ' name: Maps x-page-description: APIs for building maps x-page-icon: map-location - description: 'Layers enable you to visualize, style and interact with your spatial data. With these APIs, you can upload data, manage layer styling, publish and refresh live data layers. ' name: Layers x-page-description: APIs to visualize spatial data x-page-icon: layer-group - description: 'With these APIs, you can upload your data to create new layers. ' name: Layer Uploads x-page-description: APIs to upload data x-page-icon: layer-group x-parent: Layers - description: 'With these APIs, you can publish your layers to your workspace library. ' name: Layer Library x-page-description: APIs to publish layers x-page-icon: layer-group x-parent: Layers - description: 'With these APIs, you can export data to CSV, GeoJSON, and other formats. ' name: Layer Exports x-page-description: APIs to export layer data x-page-icon: layer-group x-parent: Layers - description: 'Elements enable you to annotate maps with custom shapes, text, and markers. With these APIs, you can create, update, and delete map elements. ' name: Elements x-page-description: APIs for drawing spatially x-page-icon: shapes - description: 'Users represent the people in your workspace. With these APIs, you can retrieve user profile information. ' name: Users x-page-description: APIs for user information x-page-icon: user - description: 'Comments bring conversations to mapping. With these APIs, you can export, resolve, and delete map comments and collaboration threads. ' name: Comments x-page-description: APIs for programatic collaboration x-page-icon: comment - description: 'Embed tokens enable safely sharing your private maps. With these APIs, you can generate secure tokens for embedding maps. ' name: Embed Tokens x-page-description: APIs to share maps securely x-page-icon: code - description: 'Sources connect your databases to Felt. With these APIs, you can configure data source connections, credentials, and sync settings to create live maps. ' name: Sources x-page-description: APIs to connect your data x-page-icon: database - description: 'Projects help you organize maps and manage team permissions. With these APIs, you can manage the projects in your workspace. ' name: Projects x-page-description: APIs to organize maps x-page-icon: folder