{"id":20777810,"url":"https://github.com/fiware/tutorials.ngsi-v2","last_synced_at":"2025-04-30T18:30:07.939Z","repository":{"id":41833907,"uuid":"355102721","full_name":"FIWARE/tutorials.NGSI-v2","owner":"FIWARE","description":":department_store:  :handbag: NGSI-v2 Tutorials based around a Smart Supermarket","archived":false,"fork":false,"pushed_at":"2024-05-28T08:15:37.000Z","size":2164,"stargazers_count":7,"open_issues_count":1,"forks_count":18,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-05-29T05:17:52.082Z","etag":null,"topics":["access-control","contextual-data","fiware","iot-agent","ngsi-v2","security","tutorial"],"latest_commit_sha":null,"homepage":"http://fiware-tutorials.rtfd.io/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FIWARE.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2021-04-06T07:46:56.000Z","updated_at":"2024-05-28T08:15:41.000Z","dependencies_parsed_at":"2023-09-22T18:17:13.635Z","dependency_job_id":"30df0380-aae6-4489-8436-e81317c8d100","html_url":"https://github.com/FIWARE/tutorials.NGSI-v2","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FIWARE%2Ftutorials.NGSI-v2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FIWARE%2Ftutorials.NGSI-v2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FIWARE%2Ftutorials.NGSI-v2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FIWARE%2Ftutorials.NGSI-v2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FIWARE","download_url":"https://codeload.github.com/FIWARE/tutorials.NGSI-v2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251760522,"owners_count":21639419,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["access-control","contextual-data","fiware","iot-agent","ngsi-v2","security","tutorial"],"created_at":"2024-11-17T13:17:35.211Z","updated_at":"2025-04-30T18:30:07.920Z","avatar_url":"https://github.com/FIWARE.png","language":"JavaScript","readme":"# Smart Supermarket Tutorials[\u003cimg src=\"https://img.shields.io/badge/NGSI-v2-5dc0cf.svg\" width=\"90\"  align=\"left\" /\u003e](\"https://fiware-ges.github.io/orion/api/v2/stable/)[\u003cimg src=\"docs/img/logo.png\" align=\"left\" width=\"162\"\u003e](https://www.fiware.org/)\n\n[![Documentation](https://nexus.lab.fiware.org/repository/raw/public/badges/chapters/documentation.svg)](https://fiware-tutorials.rtfd.io)\n[![License: MIT](https://img.shields.io/github/license/fiware/tutorials.Step-by-Step.svg)](https://opensource.org/licenses/MIT)\n[![Support badge](https://img.shields.io/badge/tag-fiware-orange.svg?logo=stackoverflow)](https://stackoverflow.com/questions/tagged/fiware)\n[![Docker badge](https://img.shields.io/badge/quay.io-fiware%2Ftutorials.context--provider-grey?logo=red%20hat\u0026labelColor=EE0000)](https://quay.io/repository/fiware/tutorials.context-provider)\n\u003cbr\u003e [![Documentation](https://img.shields.io/readthedocs/fiware-tutorials.svg)](https://fiware-tutorials.rtfd.io)\n[![CI](https://github.com/FIWARE/tutorials.NGSI-v2/workflows/CI/badge.svg)](https://github.com/FIWARE/tutorials.NGSI-v2/actions?query=workflow%3ACI)\n\nThis is a collection of tutorials for the FIWARE ecosystem designed for **NGSI-v2** developers. Each tutorial consists\nof a series of exercises to demonstrate the correct use of individual FIWARE components and shows the flow of context\ndata within a simple Smart Solution either by connecting to a series of dummy IoT devices or manipulating the context\ndirectly or programmatically.\n\n| :books: [NGSI-v2\u003cbr\u003eDocumentation](https://fiware-tutorials.rtfd.io) | \u003cimg src=\"https://assets.getpostman.com/common-share/postman-logo-stacked.svg\" align=\"center\" height=\"25\"\u003e [Postman\u003cbr\u003eCollections](https://explore.postman.com/team/3mM5EY6ChBYp9D) | [![Docker Hub](https://nexus.lab.fiware.org/repository/raw/public/badges/docker/fiware.svg)](https://hub.docker.com/u/fiware) \u003cbr\u003e [![Quay.io](https://img.shields.io/badge/quay.io-fiware-grey?logo=red%20hat\u0026labelColor=EE0000)](https://quay.io/organization/fiware) \u003cbr\u003e [![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/fiware)](https://artifacthub.io/packages/search?repo=fiware) | \u003cimg src=\"https://fiware.github.io/catalogue/img/fiware-emoji.png\" height=\"20px\" width=\"20px\"/\u003e\u003cbr/\u003e [**developer\u0026ZeroWidthSpace;.fiware.org**](https://www.fiware.org/developers/) |\n| -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n\n🇯🇵 このチュートリアルは[日本語](https://fiware-tutorials.letsfiware.jp/)でもご覧いただけます。\u003cbr/\u003e\n\n\n\u003cbr/\u003e\n\n\u003e [!NOTE]\n\u003e\n\u003e **Should I use NGSI-v2 or NGSI-LD?**\n\u003e\n\u003e FIWARE offers two flavours of the NGSI interfaces:\n\u003e\n\u003e\n\u003e - **NGSI-v2** offers JSON based interoperability used in individual Smart Systems\n\u003e - **NGSI-LD** offers JSON-LD based interoperability used for Federations and Data Spaces\n\u003e\n\u003e NGSI-v2 is ideal for creating individual applications offering interoperable interfaces for web services\n\u003e or IoT devices. It is easier to understand than NGSI-LD and does not require a JSON-LD `@context`\n\u003e\n\u003e However, NGSI-LD and Linked Data is necessary when creating a data space or introducing a system of\n\u003e systems aproach, and in situations requiring  interoperability across apps and organisations.\n\u003e\n\u003e More information about NGSI-LD can be found [here](https://ngsi-ld-tutorials.readthedocs.io)\n\n\u003ch3\u003eData models\u003c/h3\u003e\n\nThe following NGSI-v2 and NGSI-LD Data models are used within the tutorials:\n\n-   \u003cimg src=\"https://json-ld.org/favicon.ico\" align=\"center\" height=\"25\"/\u003e\n    \u003ca href=\"https://fiware.github.io/tutorials.Step-by-Step/schema/)\"\u003eTutorial-specific Data Models\u003c/a\u003e\n-   \u003cimg src=\"https://json-ld.org/favicon.ico\" align=\"center\" height=\"25\"/\u003e\n    \u003ca href=\"https://smartdatamodels.org\"\u003eSmart Data Models\u003c/a\u003e\n\n## Install\n\nTo download the full set of tutorials, simply clone this repository:\n\n```console\ngit clone https://github.com/FIWARE/tutorials.NGSI-v2.git\ncd tutorials.NGSI-v2/\ngit submodule update --init --recursive\n```\n\n### Docker and Docker Compose \u003cimg src=\"https://www.docker.com/favicon.ico\" align=\"left\"  height=\"30\" width=\"30\"\u003e\n\nThe NGSI-v2 tutorials are designed to run under any Unix environment, the tested configuration and\n[GitPod](https://github.com/gitpod-io/gitpod) environment is currently based on Ubuntu 22.04.2 LTS. However, there may\nbe some minor issues when running the tutorials directly on Windows machines or Apple M1 Silicon `amd64` systems, and\nthe following [Virtual Box set-up](docs/virtual-box.md) or [WSL set-up](docs/wsl.md) can be used when facing issues.\n\n\nEach tutorial runs all components using [Docker](https://www.docker.com). **Docker** is a container technology which\nallows to different components isolated into their respective environments.\n\n-   To install Docker on Windows follow the instructions [here](https://docs.docker.com/docker-for-windows/)\n-   To install Docker on Mac follow the instructions [here](https://docs.docker.com/docker-for-mac/)\n-   To install Docker on Linux follow the instructions [here](https://docs.docker.com/install/)\n\n**Docker Compose** is a tool for defining and running multi-container Docker applications. A series of `*.yaml` files\nare used configure the required services for the application. This means all container services can be brought up in a\nsingle command. Docker Compose is installed by default as part of Docker for Windows and Docker for Mac, however Linux\nusers will need to follow the instructions found [here](https://docs.docker.com/compose/install/)\n\nYou can check your current **Docker** and **Docker Compose** versions using the following commands:\n\n```console\ndocker-compose -v\ndocker version\n```\n\nPlease ensure that you are using Docker version 24.0.x or higher and Docker Compose 2.24.x or higher and upgrade if\nnecessary.\n\n### Postman \u003cimg src=\"./docs/img/postman.png\" align=\"left\"  height=\"25\" width=\"25\"\u003e\n\nThe tutorials which use HTTP requests supply a collection for use with the Postman utility. Postman is a testing\nframework for REST APIs. The tool can be downloaded from [www.postman.com](https://www.postman.com/downloads/). All the\nFIWARE Postman collections can be downloaded directly from the\n[Postman API network](https://explore.postman.com/team/3mM5EY6ChBYp9D)\n\n### GitPod \u003cimg src=\"https://gitpod.io/favicon.ico\" align=\"left\"  height=\"30\" width=\"30\"\u003e\n\n[Gitpod](https://github.com/gitpod-io/gitpod) is an open-source Kubernetes application for ready-to-code cloud\ndevelopment environments that spins up an automated dev environment for each task, in the cloud. It enables you to run\nthe tutorials in a cloud development environment directly from your browser or your Desktop IDE.\n\n### Apache Maven \u003cimg src=\"https://maven.apache.org/favicon.ico\" align=\"left\"  height=\"30\" width=\"30\" style=\"border-right-style:solid; border-right-width:10px; border-color:transparent; background: transparent\"\u003e\n\n[Apache Maven](https://maven.apache.org/download.cgi) is a software project management and comprehension tool. Based on\nthe concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a\ncentral piece of information. Maven can be used to define and download our dependencies and to build and package Java or\nScala code into a JAR file.\n\n### Windows Subsystem for Linux\n\nWe will start up our services using a simple bash script. Windows users should download the\n[Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/install) to provide a command-line\nfunctionality similar to a Linux distribution on Windows.\n\n## Tutorials List [\u003cimg src=\"https://img.shields.io/badge/NGSI-v2-5dc0cf.svg\" width=\"90\"  align=\"left\" /\u003e](\"https://fiware-ges.github.io/orion/api/v2/stable/)\n\n### Core Context Management: NGSI-v2 Fundamentals\n\n\u0026nbsp; 101. [Getting Started](https://github.com/FIWARE/tutorials.Getting-Started/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 102.\n[Entity Relationships](https://github.com/FIWARE/tutorials.Entity-Relationships/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 103.\n[CRUD Operations](https://github.com/FIWARE/tutorials.CRUD-Operations/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 104.\n[Context Providers](https://github.com/FIWARE/tutorials.Context-Providers/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 105.\n[Altering the Context Programmatically](https://github.com/FIWARE/tutorials.Accessing-Context/tree/NGSI-v2)\u003cbr/\u003e\n\u0026nbsp; 106. [Subscribing to Changes in Context](https://github.com/FIWARE/tutorials.Subscriptions/tree/NGSI-v2)\n\n### Internet of Things, Robots and third-party systems\n\n\u0026nbsp; 201. [Introduction to IoT Sensors](https://github.com/FIWARE/tutorials.IoT-Sensors/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 202.\n[Provisioning an IoT Agent](https://github.com/FIWARE/tutorials.IoT-Agent/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 203.\n[IoT over an MQTT Transport](https://github.com/FIWARE/tutorials.IoT-over-MQTT/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 204.\n[Using an alternative IoT Agent](https://github.com/FIWARE/tutorials.IoT-Agent-JSON/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 205.\n[Creating a Custom IoT Agent](https://github.com/FIWARE/tutorials.Custom-IoT-Agent/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 206.\n[IoT over an IOTA Tangle Transport](https://github.com/FIWARE/tutorials.IoT-over-IOTA/tree/NGSI-v2)\u003cbr/\u003e\n\n\u003c!-- \u0026nbsp; 250. [Introduction to Fast-RTPS and Micro-RTPS](https://github.com/FIWARE/tutorials.Fast-RTPS-Micro-RTPS/tree/NGSI-v2) --\u003e\n\n### Core Context Management: Manipulating Context Data and Persisting Historic Data\n\n\u0026nbsp; 301. [Persisting Context Data using Apache Flume](https://github.com/FIWARE/tutorials.Historic-Context-Flume) -\nMongoDB, MySQL, PostgreSQL\u003cbr/\u003e \u0026nbsp; 302.\n[Persisting Context Data using Apache NIFI](https://github.com/FIWARE/tutorials.Historic-Context-NIFI) - MongoDB, MySQL,\nPostgreSQL\u003cbr/\u003e \u0026nbsp; 303.\n[Querying Time Series Data (MongoDB)](https://github.com/FIWARE/tutorials.Short-Term-History/tree/NGSI-v2)\u003cbr/\u003e\n\u0026nbsp; 304.\n[Querying Time Series Data (CrateDB)](https://github.com/FIWARE/tutorials.Time-Series-Data/tree/NGSI-v2)\u003cbr/\u003e\n\u0026nbsp; 305. [Big Data Analysis (Flink)](https://github.com/FIWARE/tutorials.Big-Data-Flink/tree/NGSI-v2)\u003cbr/\u003e\n\u0026nbsp; 306. [Big Data Analysis (Spark)](https://github.com/FIWARE/tutorials.Big-Data-Spark/tree/NGSI-v2)\n\n### Security: Identity Management\n\n\u0026nbsp; 401.\n[Managing Users and Organizations](https://github.com/FIWARE/tutorials.Identity-Management/tree/NGSI-v2)\u003cbr/\u003e\n\u0026nbsp; 402. [Roles and Permissions](https://github.com/FIWARE/tutorials.Roles-Permissions/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 403.\n[Securing Application Access](https://github.com/FIWARE/tutorials.Securing-Access/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 404.\n[Securing Microservices with a PEP Proxy](https://github.com/FIWARE/tutorials.PEP-Proxy/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 405.\n[XACML Rules-based Permissions](https://github.com/FIWARE/tutorials.XACML-Access-Rules/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 406.\n[Administrating XACML via a PAP](https://github.com/FIWARE/tutorials.Administrating-XACML/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 407.\n[Authenticating Identities (Open-ID Connect)](https://github.com/FIWARE/tutorials.Securing-Access-OpenID-Connect/tree/NGSI-v2)\n\n### Processing, Analysis and Visualization\n\n\u0026nbsp; 501. [Creating Application Mashups](https://github.com/FIWARE/tutorials.Application-Mashup/tree/NGSI-v2)\u003cbr/\u003e\n\u0026nbsp; 503. [Introduction to Media Streams](https://github.com/FIWARE/tutorials.Media-Streams/tree/NGSI-v2)\u003cbr/\u003e\n\u0026nbsp; 507. [Cloud-Edge Computing](https://github.com/FIWARE/tutorials.Edge-Computing/tree/NGSI-v2)\n\n### NGSI-LD for NGSI-v2 Developers\n\n\u0026nbsp; 601. [Introduction to Linked Data](https://github.com/FIWARE/tutorials.Linked-Data/tree/NGSI-v2)\u003cbr/\u003e \u0026nbsp; 602.\n[Linked Data Relationships and Data Models](https://github.com/FIWARE/tutorials.Relationships-Linked-Data/tree/NGSI-v2)\u003cbr/\u003e\n\u0026nbsp; 603.\n[Traversing Linked Data Programmatically](https://github.com/FIWARE/tutorials.Accessing-Linked-Data/tree/NGSI-v2)\u003cbr/\u003e\n\u0026nbsp; 604.\n[Linked Data Subscriptions and Registrations](https://github.com/FIWARE/tutorials.LD-Subscriptions-Registrations/tree/NGSI-v2)\u003cbr/\u003e\n\n## Usage\n\nMost tutorials supply a `services` script to start the containers:\n\n```console\ncd \u003ctutorial-name\u003e\n./services start\n```\n\n### Following the tutorial exercises via Postman\n\nEach tutorial submodule contains one or more `docker-compose.yml` files, along with a Postman collection containing the\nnecessary HTTP requests: import the collection into Postman and follow the instructions.\n\n### Following the tutorial exercises from the command-line\n\nEach submodule contains full instructions in README which details the appropriate bash commands (cUrl and Docker\nCompose) to run.\n\nFull instructions can be found within the [documentation](https://fiware-tutorials.rtfd.io)\n\n---\n\n## License\n\n[MIT](LICENSE) © 2018-2025 FIWARE Foundation e.V.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffiware%2Ftutorials.ngsi-v2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffiware%2Ftutorials.ngsi-v2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffiware%2Ftutorials.ngsi-v2/lists"}