{
    "openapi": "3.0.2",
    "info": {
        "title": "Planet Features API",
        "version": "1",
        "description": "An API to manage features on the Planet platform."
    },
    "servers": [
        {
            "url": "https://api.planet.com/features/v1/ogc/my",
            "description": "My Dataset"
        }
    ],
    "tags": [
        {
            "name": "Capabilities",
            "description": "API characteristics"
        },
        {
            "name": "Collections",
            "description": "access to feature collections"
        },
        {
            "name": "Features",
            "description": "access to features"
        },
        {
            "name": "Tiles",
            "description": "access to map vector tiles for web rendering"
        }
    ],
    "paths": {
        "/": {
            "get": {
                "tags": [
                    "Capabilities"
                ],
                "summary": "Get Landing Page",
                "description": "The landing page provides links to the API definition, the conformance\nstatements and to the feature collections in this dataset.",
                "responses": {
                    "200": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/LandingPage"
                    },
                    "500": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError"
                    }
                }
            }
        },
        "/conformance": {
            "get": {
                "tags": [
                    "Capabilities"
                ],
                "summary": "Get API Conformance",
                "description": "A list of all conformance classes specified in a standard that the\nserver conforms to.",
                "responses": {
                    "200": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ConformanceDeclaration"
                    },
                    "500": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError"
                    }
                }
            }
        },
        "/collections": {
            "get": {
                "tags": [
                    "Collections"
                ],
                "summary": "List Collections",
                "description": "List all feature collections available to the authenticated user in the dataset.\n\nCollections can be filtered using text filters (title, description, hashid) and\ncustom properties. All filters are combined with AND logic.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/limit"
                    },
                    {
                        "$ref": "#/components/parameters/offset"
                    },
                    {
                        "name": "title",
                        "in": "query",
                        "description": "Filter by collection title. Use prefix ~ for substring matching (e.g., ?title=~my)",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "description",
                        "in": "query",
                        "description": "Filter by collection description. Use prefix ~ for substring matching",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "hashid",
                        "in": "query",
                        "description": "Filter by collection hashid (immutable internal identifier). See identifiers documentation.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Sort results by field. Supported fields are created_date and title. Prefix '-' for descending (e.g., -created_date)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "created_date",
                                "-created_date",
                                "title",
                                "-title"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/Collections"
                    },
                    "500": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError"
                    }
                }
            },
            "post": {
                "tags": [
                    "Collections"
                ],
                "summary": "Create Collection",
                "description": "Create a new feature collection in the dataset.",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Collection"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/Collection"
                    },
                    "500": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError"
                    }
                }
            }
        },
        "/collections/alternates": {
            "post": {
                "tags": [
                    "Alternates"
                ],
                "summary": "Get Alternates",
                "description": "generate alternate geometries for features with vertex count that exceeds the vertex limit or may be invalid (e.g via de-duping, simpplification, bbox, convex hull, etc)",
                "parameters": [],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/schemas/featureGeoJSON"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/Features"
                    }
                }
            }
        },
        "/collections/validate": {
            "post": {
                "tags": [
                    "Validate"
                ],
                "summary": "Validate Feature",
                "description": "Validate a feature or feature collection against this dataset's lint rules.",
                "parameters": [],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "oneOf": [
                                    {
                                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/schemas/featureGeoJSON"
                                    },
                                    {
                                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/schemas/featureCollectionGeoJSON"
                                    }
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "The feature is valid"
                    },
                    "400": {
                        "description": "Feature geometry does not pass lint rules"
                    }
                }
            }
        },
        "/collections/{collectionId}": {
            "get": {
                "tags": [
                    "Collections"
                ],
                "summary": "Get Collection",
                "description": "Get a feature collection by `collectionId`",
                "parameters": [
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/collectionId"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/Collection"
                    },
                    "404": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError"
                    }
                }
            },
            "put": {
                "tags": [
                    "Collections"
                ],
                "summary": "Update Collection",
                "description": "Update the feature collection by `collectionId`",
                "parameters": [
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/collectionId"
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Collection"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/Collection"
                    },
                    "404": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Collections"
                ],
                "summary": "Delete Collection",
                "description": "Delete an existing feature collection",
                "parameters": [
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/collectionId"
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The resource was deleted successfully"
                    },
                    "404": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/NotFound"
                    }
                }
            }
        },
        "/collections/{collectionId}/permission": {
            "get": {
                "tags": [
                    "Collections"
                ],
                "summary": "List Collection Permissions",
                "description": "List permissions for the feature collection by `collectionId`",
                "parameters": [
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/collectionId"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/CollectionPermission"
                    },
                    "404": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError"
                    }
                }
            },
            "post": {
                "tags": [
                    "Collections"
                ],
                "summary": "Update Collection Permissions",
                "description": "Share this collection with your org.",
                "parameters": [
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/collectionId"
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The permissions were updated successfully"
                    },
                    "404": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Collections"
                ],
                "summary": "Delete Collection Permissions",
                "description": "Unshare a collection.",
                "parameters": [
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/collectionId"
                    }
                ],
                "responses": {
                    "204": {
                        "description": "The permissions were deleted successfully"
                    },
                    "404": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/NotFound"
                    }
                }
            }
        },
        "/collections/{collectionId}/items": {
            "get": {
                "tags": [
                    "Features"
                ],
                "summary": "List Features",
                "description": "List features of the feature collection with `collectionId`.\n\nEvery feature in a dataset belongs to a collection. A dataset may\nconsist of multiple feature collections. A feature collection is often a\ncollection of features of a similar type, based on a common schema.\n\nFeatures can be filtered by ID, hashid, custom properties, and geometry (bbox).\nAny query parameter not in the reserved list is treated as a property filter\non the feature's properties. Use prefix ~ in values for substring matching.\n\nUse content negotiation to request HTML or GeoJSON.",
                "parameters": [
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/collectionId"
                    },
                    {
                        "$ref": "#/components/parameters/limit"
                    },
                    {
                        "$ref": "#/components/parameters/offset"
                    },
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/bbox"
                    },
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/datetime"
                    },
                    {
                        "name": "id",
                        "in": "query",
                        "description": "Filter by feature ID. Use prefix ~ for substring matching (e.g., ?id=~test)",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "hashid",
                        "in": "query",
                        "description": "Filter by feature hashid (immutable internal identifier)",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Sort results by field. Supported field is id. Prefix '-' for descending (e.g., -id)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "id",
                                "-id"
                            ]
                        }
                    },
                    {
                        "name": "_view",
                        "in": "query",
                        "description": "Response format. 'items' (default) returns full features, 'wkb64' returns geometry as WKB base64-encoded, 'basic' excludes geometry, 'refs' returns minimal reference info",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "items",
                                "wkb64",
                                "basic",
                                "refs"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/Features"
                    },
                    "400": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/InvalidParameter"
                    },
                    "404": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError"
                    }
                }
            },
            "post": {
                "tags": [
                    "Features"
                ],
                "summary": "Add Feature",
                "description": "Add a feature to the collection",
                "parameters": [
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/collectionId"
                    },
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/limit"
                    },
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/bbox"
                    },
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/datetime"
                    },
                    {
                        "name": "property_id",
                        "in": "query",
                        "description": "Inform Features API how to extract the id from the feature",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "oneOf": [
                                    {
                                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/schemas/featureGeoJSON"
                                    },
                                    {
                                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/schemas/featureCollectionGeoJSON"
                                    }
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "The features were added successfully"
                    },
                    "404": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError"
                    }
                }
            }
        },
        "/collections/{collectionId}/items/{featureId}": {
            "get": {
                "tags": [
                    "Features"
                ],
                "summary": "Get Feature",
                "description": "Get a single feature with id `featureId` in the feature collection\nwith id `collectionId`.\n\nUse content negotiation to request HTML or GeoJSON.",
                "parameters": [
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/collectionId"
                    },
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/featureId"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/Feature"
                    },
                    "404": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError"
                    }
                }
            },
            "put": {
                "tags": [
                    "Features"
                ],
                "summary": "Update Feature",
                "description": "Update a feature, you cannot update a feature geometry.",
                "parameters": [
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/collectionId"
                    },
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/featureId"
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/schemas/featureGeoJSON"
                            }
                        },
                        "application/octet-stream": {
                            "schema": {
                                "type": "string",
                                "format": "binary"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/Feature"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Features"
                ],
                "summary": "Delete Feature",
                "description": "Deletes a feature",
                "parameters": [
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/collectionId"
                    },
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/featureId"
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Feature was deleted successfully"
                    }
                }
            }
        },
        "/collections/{collectionId}/tiles/{z}/{x}/{y}": {
            "get": {
                "tags": [
                    "Tiles"
                ],
                "summary": "Get MVT Tile",
                "description": "Get a MapBox Vector Tile (MVT) for the specified collection and tile coordinates.\n\nMVT is a compact binary format optimized for efficient web map rendering.\nTiles use the Web Mercator (EPSG:3857) projection with coordinates in the XYZ tiling scheme.\n\nMaximum zoom level is 22.",
                "parameters": [
                    {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/collectionId"
                    },
                    {
                        "name": "z",
                        "in": "path",
                        "description": "Zoom level (0-22)",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 22
                        }
                    },
                    {
                        "name": "x",
                        "in": "path",
                        "description": "Tile column coordinate",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "y",
                        "in": "path",
                        "description": "Tile row coordinate",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "properties",
                        "in": "query",
                        "description": "When present (any value, including no value), all feature properties are included in the tile attributes. By default only `title` and `description` are included.",
                        "required": false,
                        "allowEmptyValue": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "MapBox Vector Tile in binary format",
                        "content": {
                            "application/octet-stream": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid tile coordinates (e.g., zoom > 22)"
                    },
                    "404": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "JWT": {
                "type": "http",
                "scheme": "bearer",
                "description": "Provide {JWT} token in a header like this: `Authorization: Bearer {JWT}`."
            },
            "BasicAuth": {
                "type": "http",
                "scheme": "basic"
            }
        },
        "schemas": {
            "Collection": {
                "description": "title and optionally a description for Collection",
                "type": "object",
                "required": [
                    "title"
                ],
                "properties": {
                    "title": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string"
                    }
                }
            }
        },
        "parameters": {
            "limit": {
                "name": "limit",
                "in": "query",
                "description": "The optional limit parameter limits the number of items that are presented in the response document.",
                "required": false,
                "schema": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 500,
                    "default": 50
                },
                "style": "form",
                "explode": false
            },
            "offset": {
                "name": "offset",
                "in": "query",
                "description": "Pagination offset (number of items to skip)",
                "required": false,
                "schema": {
                    "type": "integer",
                    "minimum": 0,
                    "default": 0
                }
            }
        },
        "responses": {
            "CollectionPermission": {
                "description": "Permission Response",
                "content": {
                    "application/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "can_read": {
                                    "type": "boolean"
                                },
                                "can_write": {
                                    "type": "boolean"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "security": [
        {
            "JWT": []
        },
        {
            "BasicAuth": []
        }
    ]
}