-
Notifications
You must be signed in to change notification settings - Fork 2
4 Django API
First I'll explain how we will fetch intra API to seed the following Fields:
- Skills
- Projects
- Cursus
- CursusSkills (The skills that belong to cursus) (The various cursus where a skill belongs)
- ProjectCursus (The projects that belong to a cursus) (The various cursus where a project belongs)
On the last Part I'll explain how the user will get updated.
GET /v2/skills
Return all the skillsGET /v2/cursus/:cursus_id/skills
Return all the skills of the given CursusGET /v2/skills/:id
Get a skill
GET /v2/cursus
Return all the cursusGET /v2/cursus/:id
Get a cursus
GET /v2/projects
Return all the projectsGET /v2/cursus/:cursus_id/projects
Return all the projects of the given CursusGET /v2/projects/:project_id/projects
Return all the projects of the given ProjectGET /v2/me/projects
Return all the projects for the current resource ownerGET /v2/projects/:project_id/projects_users
Return all the projects users of the given ProjectGET /v2/users/:user_id/projects_users
Return all the projects users of the given UserGET /v2/projects_users
Return all the projects usersGET /v2/projects_users/:id
Get a projects user
(Intra 'element' in the following description stands for: [Cursus, Skills, Projects & Users])
It makes sense to update each intra 'element' individually with an async function.
-
update/create the cursus using (consider pagination): GET /v2/cursus
-
update/create the projects using (consider pagination): GET /v2/projects
-
update/create the skills using (consider pagination): GET /v2/skills
Skills details
curl -H "Authorization: Bearer Your_Access_Token" "https://api.intra.42.fr/v2/skills?sort=name&per_page=20&page=1"
[
{
"id": 14,
"slug": "adaptation-creativity",
"name": "Adaptation & creativity",
"created_at": "2014-12-04T14:38:04.450Z"
},
{
"id": 1,
"slug": "algorithms-ai",
"name": "Algorithms & AI",
"created_at": "2014-11-02T17:49:33.624Z"
},
{
"id": 19,
"slug": "basics",
"name": "Basics",
"created_at": "2015-04-20T13:59:08.396Z"
},
{
"id": 69,
"slug": "bio-technologies",
"name": "Bio-Technologies",
"created_at": "2022-05-07T16:40:25.256Z"
},
{
"id": 70,
"slug": "blockchain",
"name": "Blockchain",
"created_at": "2022-05-07T16:42:05.879Z"
},
{
"id": 16,
"slug": "company-experience",
"name": "Company experience",
"created_at": "2014-12-04T14:38:32.898Z"
},
{
"id": 12,
"slug": "db-data",
"name": "DB & Data",
"created_at": "2014-12-04T14:37:43.724Z"
},
{
"id": 8,
"slug": "functional-programming",
"name": "Functional programming",
"created_at": "2014-12-04T14:35:45.063Z"
},
{
"id": 66,
"slug": "go",
"name": "Go",
"created_at": "2021-07-01T06:19:54.493Z"
},
{
"id": 5,
"slug": "graphics",
"name": "Graphics",
"created_at": "2014-11-19T20:34:22.011Z"
},
{
"id": 7,
"slug": "group-interpersonal",
"name": "Group & interpersonal",
"created_at": "2014-12-04T14:35:38.149Z"
},
{
"id": 2,
"slug": "imperative-programming",
"name": "Imperative programming",
"created_at": "2014-11-02T17:50:29.828Z"
},
{
"id": 62,
"slug": "motion-design",
"name": "Motion Design",
"created_at": "2016-08-23T14:32:32.191Z"
},
{
"id": 10,
"slug": "network-system-administration",
"name": "Network & system administration",
"created_at": "2014-12-04T14:37:00.051Z"
},
{
"id": 17,
"slug": "object-oriented-programming",
"name": "Object-oriented programming",
"created_at": "2014-12-04T14:39:14.614Z"
},
{
"id": 13,
"slug": "organization",
"name": "Organization",
"created_at": "2014-12-04T14:37:54.557Z"
},
{
"id": 9,
"slug": "parallel-computing",
"name": "Parallel computing",
"created_at": "2014-12-04T14:35:54.566Z"
},
{
"id": 53,
"slug": "python",
"name": "Python",
"created_at": "2015-11-04T10:58:42.165Z"
},
{
"id": 3,
"slug": "rigor",
"name": "Rigor",
"created_at": "2014-11-02T18:23:09.799Z"
},
{
"id": 25,
"slug": "ruby",
"name": "Ruby",
"created_at": "2015-09-20T13:28:00.757Z"
},
{
"id": 11,
"slug": "security",
"name": "Security",
"created_at": "2014-12-04T14:37:09.684Z"
},
{
"id": 67,
"slug": "self-awareness",
"name": "Self-awareness",
"created_at": "2021-08-31T10:27:45.690Z"
},
{
"id": 26,
"slug": "shell",
"name": "Shell",
"created_at": "2015-09-21T12:32:18.200Z"
},
{
"id": 15,
"slug": "technology-integration",
"name": "Technology integration",
"created_at": "2014-12-04T14:38:20.646Z"
},
{
"id": 68,
"slug": "testing",
"name": "Testing",
"created_at": "2022-01-26T11:13:34.668Z"
},
{
"id": 4,
"slug": "unix",
"name": "Unix",
"created_at": "2014-11-12T20:47:27.596Z"
},
{
"id": 6,
"slug": "web",
"name": "Web",
"created_at": "2014-12-04T14:34:41.155Z"
},
{
"id": 63,
"slug": "written-communication",
"name": "Written Communication",
"created_at": "2019-10-04T09:37:28.127Z"
}
]
Cursus details
curl -H "Authorization: Bearer Your_Access_Token" "https://api.intra.42.fr/v2/cursus?sort=id&per_page=20&page=1"
[
{
"id": 1,
"created_at": "2014-11-02T16:43:38.480Z",
"name": "42",
"slug": "42",
"kind": "main_deprecated"
},
{
"id": 3,
"created_at": "2015-04-20T07:39:49.050Z",
"name": "Discovery Piscine",
"slug": "discovery-piscine",
"kind": "professional_training"
},
{
"id": 4,
"created_at": "2015-05-01T17:46:08.433Z",
"name": "Piscine C",
"slug": "piscine-c",
"kind": "piscine_deprecated"
},
{
"id": 5,
"created_at": "2015-09-20T13:27:03.918Z",
"name": "42partnerships",
"slug": "42partnerships",
"kind": "external"
},
{
"id": 6,
"created_at": "2015-09-21T12:36:09.128Z",
"name": "Piscine C décloisonnée",
"slug": "piscine-c-decloisonnee",
"kind": "piscine_deprecated"
},
{
"id": 7,
"created_at": "2015-09-21T12:40:13.452Z",
"name": "Piscine C à distance",
"slug": "piscine-c-a-distance",
"kind": "piscine_deprecated"
},
{
"id": 8,
"created_at": "2015-09-22T11:35:20.216Z",
"name": "WeThinkCode_",
"slug": "wethinkcode_",
"kind": "main_deprecated"
},
{
"id": 9,
"created_at": "2015-11-04T10:58:13.979Z",
"name": "C Piscine",
"slug": "c-piscine",
"kind": "piscine"
},
{
"id": 10,
"created_at": "2015-11-12T16:35:19.549Z",
"name": "Formation Pole Emploi",
"slug": "formation-pole-emploi",
"kind": "main_deprecated"
},
{
"id": 11,
"created_at": "2015-12-08T11:59:17.803Z",
"name": "BootCamp",
"slug": "bootcamp",
"kind": "piscine_deprecated"
},
{
"id": 12,
"created_at": "2016-08-23T14:37:59.752Z",
"name": "Créa",
"slug": "crea",
"kind": "external"
},
{
"id": 13,
"created_at": "2017-02-01T14:25:42.300Z",
"name": "42 Labs",
"slug": "42-labs",
"kind": "external_deprecated"
},
{
"id": 14,
"created_at": "2017-05-15T09:53:41.742Z",
"name": "Technical Interview",
"slug": "technical-interview",
"kind": "test"
},
{
"id": 15,
"created_at": "2017-05-29T22:01:22.923Z",
"name": "X-Mansion",
"slug": "x-mansion",
"kind": "external_deprecated"
},
{
"id": 16,
"created_at": "2017-06-06T21:13:39.178Z",
"name": "X-Mansion-Namido",
"slug": "x-mansion-namido",
"kind": "external_deprecated"
},
{
"id": 17,
"created_at": "2017-08-28T23:27:49.646Z",
"name": "H2S",
"slug": "h2s",
"kind": "external_deprecated"
},
{
"id": 18,
"created_at": "2017-12-15T22:31:21.361Z",
"name": "Starfleet",
"slug": "starfleet",
"kind": "external_deprecated"
},
{
"id": 19,
"created_at": "2018-03-27T22:33:03.213Z",
"name": "Atlantis",
"slug": "atlantis",
"kind": "external"
},
{
"id": 20,
"created_at": "2018-09-08T18:34:56.909Z",
"name": "Boost",
"slug": "boost",
"kind": "external"
},
{
"id": 21,
"created_at": "2019-07-29T08:45:17.896Z",
"name": "42cursus",
"slug": "42cursus",
"kind": "main"
}
]
Projects details
curl -H "Authorization: Bearer Your_Access_Token" "https://api.intra.42.fr/v2/projects?sort=name&per_page=20&page=1"
[
{
"id": 458,
"name": "00",
"slug": "piscine-c-decloisonnee-pide-jour-09-00",
"difficulty": 0,
"parent": {
"name": "Jour 09",
"id": 482,
"slug": "piscine-c-decloisonnee-jour-09",
"url": "https://projects.intra.42.fr/piscine-c-decloisonnee-jour-09/mine"
},
"children": [],
"attachments": [],
"created_at": "2015-09-21T14:43:38.230Z",
"updated_at": "2023-05-16T08:20:52.939Z",
"exam": false,
"git_id": null,
"repository": null,
"recommendation": "forbidden",
"cursus": [
{
"id": 6,
"created_at": "2015-09-21T12:36:09.128Z",
"name": "Piscine C décloisonnée",
"slug": "piscine-c-decloisonnee",
"kind": "piscine_deprecated"
}
],
"campus": [
{
"id": 1,
"name": "Paris",
"time_zone": "Europe/Paris",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-06-01T08:48:03.513Z"
},
"users_count": 25946,
"vogsphere_id": 1,
"country": "France",
"address": "96, boulevard Bessières",
"zip": "75017",
"city": "Paris",
"website": "http://www.42.fr/",
"facebook": "https://facebook.com/42born2code",
"twitter": "https://twitter.com/42born2code",
"active": true,
"public": true,
"email_extension": "42.fr",
"default_hidden_phone": false
}
],
"videos": [],
"project_sessions": [
{
"id": 192,
"solo": true,
"begin_at": "2015-10-22T15:00:00.000Z",
"end_at": "2015-10-22T16:00:00.000Z",
"estimate_time": "7 days",
"difficulty": 0,
"objectives": null,
"description": null,
"duration_days": null,
"terminating_after": null,
"project_id": 458,
"campus_id": null,
"cursus_id": null,
"created_at": "2016-02-15T15:38:05.328Z",
"updated_at": "2016-12-07T14:51:00.265Z",
"max_people": null,
"is_subscriptable": true,
"scales": [],
"uploads": [],
"team_behaviour": "user",
"commit": null
}
]
}
]
After creating/updating all the intra 'elements' we can update their relations with each other (await for async functions).
To create relations between x and y (either x was added or removed from an element y)
-
update/create ProjectCursus using: GET /v2/cursus/:cursus_id/projects
This will return all the projects of a cursus (consider pagination). -
update/create CursusSkill using: GET /v2/cursus/:cursus_id/skills
This will return all the skills of a cursus (consider pagination).
ProjectCursus details
Given the following Cursus:
{
"id":21,
"created_at":"2019-07-29T08:45:17.896Z",
"name":"42cursus",
"slug":"42cursus",
"kind":"main"
}
We can find out the projects belonging to the cursus by using it's id (#21)
curl -H "Authorization: Bearer Your_Access_Token" "https://api.intra.42.fr/v2/cursus/21/projects
This would return a very big list of projects which belong to cursus #21, where not all projects might have been updated, that is why we should use the range to only update the projects which changed: In the example we check the range: [2023-06-02,2023-06-03] The real implementation should use the cursus updated_at and the current time.
curl -H "Authorization: Bearer Your_Access_Token" "https://api.intra.42.fr/v2/cursus/21/projects?&range%5Bupdated_at%5D=2023-06-02,2023-06-03&&per_page=10&page=1"
[square brackets need to be URL encoded as mentioned on RFC 3986]
[
{
"id": 1457,
"name": "multilayer-perceptron",
"slug": "42cursus-multilayer-perceptron",
"difficulty": 9450,
"parent": null,
"children": [],
"attachments": [],
"created_at": "2019-09-23T12:06:55.308Z",
"updated_at": "2023-06-02T10:17:45.414Z",
"exam": false,
"git_id": 1,
"repository": "145",
"recommendation": "forbidden",
"cursus": [
{
"id": 53,
"created_at": "2021-10-20T07:14:44.406Z",
"name": "42.zip",
"slug": "42-zip",
"kind": "main"
},
{
"id": 21,
"created_at": "2019-07-29T08:45:17.896Z",
"name": "42cursus",
"slug": "42cursus",
"kind": "main"
}
],
"campus": [
{
"id": 1,
"name": "Paris",
"time_zone": "Europe/Paris",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-06-01T08:48:03.513Z"
},
"users_count": 25946,
"vogsphere_id": 1,
"country": "France",
"address": "96, boulevard Bessières",
"zip": "75017",
"city": "Paris",
"website": "http://www.42.fr/",
"facebook": "https://facebook.com/42born2code",
"twitter": "https://twitter.com/42born2code",
"active": true,
"public": true,
"email_extension": "42.fr",
"default_hidden_phone": false
}
],
"videos": [],
"project_sessions": [
{
"id": 9882,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"Math",
"Neural Network"
],
"description": "Subject created by the 42AI association. This project is an introduction to artificial neural networks thanks to the implementation of a multilayer perceptron.",
"duration_days": null,
"terminating_after": null,
"project_id": 1457,
"campus_id": 47,
"cursus_id": 21,
"created_at": "2023-04-13T12:02:27.115Z",
"updated_at": "2023-04-13T12:59:43.676Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 22853,
"correction_number": 3,
"is_primary": true
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "494da8eeb17df4b9e727c5d02fb8df8b87503f1f"
},
{
"id": 9736,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"Math",
"Neural Network"
],
"description": "Subject created by the 42AI association. This project is an introduction to artificial neural networks thanks to the implementation of a multilayer perceptron.",
"duration_days": null,
"terminating_after": null,
"project_id": 1457,
"campus_id": 12,
"cursus_id": 21,
"created_at": "2023-03-30T13:21:22.509Z",
"updated_at": "2023-06-02T10:17:45.335Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 23970,
"correction_number": 3,
"is_primary": true
},
{
"id": 22495,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "73eecf410d1c6df1cc8f3b9e488e66b763612c8f"
},
{
"id": 9622,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"Math",
"Neural Network"
],
"description": "Subject created by the 42AI association. This project is an introduction to artificial neural networks thanks to the implementation of a multilayer perceptron.",
"duration_days": null,
"terminating_after": null,
"project_id": 1457,
"campus_id": 26,
"cursus_id": 21,
"created_at": "2023-03-15T02:09:41.733Z",
"updated_at": "2023-05-08T09:29:30.328Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 23358,
"correction_number": 3,
"is_primary": true
},
{
"id": 21960,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "73eecf410d1c6df1cc8f3b9e488e66b763612c8f"
},
{
"id": 4758,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"Math",
"Neural Network"
],
"description": "Subject created by the 42AI association. This project is an introduction to artificial neural networks thanks to the implementation of a multilayer perceptron.",
"duration_days": null,
"terminating_after": null,
"project_id": 1457,
"campus_id": 14,
"cursus_id": 21,
"created_at": "2020-09-03T16:16:50.844Z",
"updated_at": "2023-05-02T10:56:26.266Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 23283,
"correction_number": 3,
"is_primary": true
},
{
"id": 23050,
"correction_number": 3,
"is_primary": false
},
{
"id": 9826,
"correction_number": 3,
"is_primary": false
},
{
"id": 3501,
"correction_number": 5,
"is_primary": false
},
{
"id": 3364,
"correction_number": 5,
"is_primary": false
},
{
"id": 3149,
"correction_number": 5,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "73eecf410d1c6df1cc8f3b9e488e66b763612c8f"
},
{
"id": 7139,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"Math",
"Neural Network"
],
"description": "Subject created by the 42AI association. This project is an introduction to artificial neural networks thanks to the implementation of a multilayer perceptron.",
"duration_days": null,
"terminating_after": null,
"project_id": 1457,
"campus_id": 1,
"cursus_id": 21,
"created_at": "2022-02-03T14:43:16.963Z",
"updated_at": "2023-05-03T09:39:54.032Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 23297,
"correction_number": 3,
"is_primary": true
},
{
"id": 17148,
"correction_number": 3,
"is_primary": false
},
{
"id": 14895,
"correction_number": 3,
"is_primary": false
},
{
"id": 11296,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "73eecf410d1c6df1cc8f3b9e488e66b763612c8f"
},
{
"id": 6628,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"Math",
"Neural Network"
],
"description": "Subject created by the 42AI association. This project is an introduction to artificial neural networks thanks to the implementation of a multilayer perceptron.",
"duration_days": null,
"terminating_after": null,
"project_id": 1457,
"campus_id": 1,
"cursus_id": 53,
"created_at": "2021-10-20T13:22:59.805Z",
"updated_at": "2023-05-03T09:40:12.776Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 17859,
"correction_number": 3,
"is_primary": false
},
{
"id": 23298,
"correction_number": 3,
"is_primary": true
},
{
"id": 14894,
"correction_number": 3,
"is_primary": false
},
{
"id": 8987,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "73eecf410d1c6df1cc8f3b9e488e66b763612c8f"
},
{
"id": 8941,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"Math",
"Neural Network"
],
"description": "Subject created by the 42AI association. This project is an introduction to artificial neural networks thanks to the implementation of a multilayer perceptron.",
"duration_days": null,
"terminating_after": null,
"project_id": 1457,
"campus_id": 39,
"cursus_id": 21,
"created_at": "2022-11-17T13:44:20.896Z",
"updated_at": "2022-11-17T13:44:25.043Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 18900,
"correction_number": 3,
"is_primary": true
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "494da8eeb17df4b9e727c5d02fb8df8b87503f1f"
},
{
"id": 8845,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"Math",
"Neural Network"
],
"description": "Subject created by the 42AI association. This project is an introduction to artificial neural networks thanks to the implementation of a multilayer perceptron.",
"duration_days": null,
"terminating_after": null,
"project_id": 1457,
"campus_id": 9,
"cursus_id": 21,
"created_at": "2022-11-15T12:54:54.832Z",
"updated_at": "2022-11-15T12:55:07.514Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 18758,
"correction_number": 3,
"is_primary": true
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "494da8eeb17df4b9e727c5d02fb8df8b87503f1f"
},
{
"id": 8480,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"Math",
"Neural Network"
],
"description": "Subject created by the 42AI association. This project is an introduction to artificial neural networks thanks to the implementation of a multilayer perceptron.",
"duration_days": null,
"terminating_after": null,
"project_id": 1457,
"campus_id": 13,
"cursus_id": 21,
"created_at": "2022-09-30T15:12:29.140Z",
"updated_at": "2023-05-08T10:25:23.538Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 23365,
"correction_number": 3,
"is_primary": true
},
{
"id": 17943,
"correction_number": 3,
"is_primary": false
},
{
"id": 17298,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "73eecf410d1c6df1cc8f3b9e488e66b763612c8f"
},
{
"id": 8117,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"Math",
"Neural Network"
],
"description": "Subject created by the 42AI association. This project is an introduction to artificial neural networks thanks to the implementation of a multilayer perceptron.",
"duration_days": null,
"terminating_after": null,
"project_id": 1457,
"campus_id": 25,
"cursus_id": 21,
"created_at": "2022-07-18T14:57:33.141Z",
"updated_at": "2023-01-31T15:40:51.979Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 20340,
"correction_number": 3,
"is_primary": true
},
{
"id": 15436,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "494da8eeb17df4b9e727c5d02fb8df8b87503f1f"
},
{
"id": 7541,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"Math",
"Neural Network"
],
"description": "Subject created by the 42AI association. This project is an introduction to artificial neural networks thanks to the implementation of a multilayer perceptron.",
"duration_days": null,
"terminating_after": null,
"project_id": 1457,
"campus_id": 41,
"cursus_id": 21,
"created_at": "2022-03-19T15:33:58.968Z",
"updated_at": "2023-05-08T08:29:20.503Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 16934,
"correction_number": 3,
"is_primary": false
},
{
"id": 23351,
"correction_number": 3,
"is_primary": true
},
{
"id": 14419,
"correction_number": 3,
"is_primary": false
},
{
"id": 13146,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "73eecf410d1c6df1cc8f3b9e488e66b763612c8f"
},
{
"id": 3499,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"Math",
"Neural Network"
],
"description": "Subject created by the 42AI association. This project is an introduction to artificial neural networks thanks to the implementation of a multilayer perceptron.",
"duration_days": null,
"terminating_after": null,
"project_id": 1457,
"campus_id": null,
"cursus_id": null,
"created_at": "2019-09-23T12:06:55.318Z",
"updated_at": "2023-05-31T19:41:45.178Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 23935,
"correction_number": 3,
"is_primary": true
},
{
"id": 16660,
"correction_number": 3,
"is_primary": false
},
{
"id": 14893,
"correction_number": 3,
"is_primary": false
},
{
"id": 8276,
"correction_number": 3,
"is_primary": false
},
{
"id": 3459,
"correction_number": 5,
"is_primary": false
},
{
"id": 3348,
"correction_number": 5,
"is_primary": false
},
{
"id": 3347,
"correction_number": 5,
"is_primary": false
},
{
"id": 2592,
"correction_number": 5,
"is_primary": false
},
{
"id": 2353,
"correction_number": 5,
"is_primary": false
},
{
"id": 2277,
"correction_number": 5,
"is_primary": false
},
{
"id": 1545,
"correction_number": 5,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "73eecf410d1c6df1cc8f3b9e488e66b763612c8f"
}
]
},
{
"id": 1460,
"name": "total-perspective-vortex",
"slug": "42cursus-total-perspective-vortex",
"difficulty": 9450,
"parent": null,
"children": [],
"attachments": [],
"created_at": "2019-09-23T12:07:06.935Z",
"updated_at": "2023-06-02T10:19:25.878Z",
"exam": false,
"git_id": 1,
"repository": "331",
"recommendation": "forbidden",
"cursus": [
{
"id": 53,
"created_at": "2021-10-20T07:14:44.406Z",
"name": "42.zip",
"slug": "42-zip",
"kind": "main"
},
{
"id": 21,
"created_at": "2019-07-29T08:45:17.896Z",
"name": "42cursus",
"slug": "42cursus",
"kind": "main"
}
],
"campus": [
{
"id": 64,
"name": "Singapore",
"time_zone": "Asia/Singapore",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-05-15T08:14:48.451Z"
},
"users_count": 12,
"vogsphere_id": 56,
"country": "Singapore",
"address": "8 Somapah Rd",
"zip": "487372",
"city": "Singapore",
"website": "https://www.42.fr/",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42singapore.sg",
"default_hidden_phone": false
},
{
"id": 61,
"name": "Belo Horizonte",
"time_zone": "America/Sao_Paulo",
"language": {
"id": 17,
"name": "Brazilian Portuguese",
"identifier": "pt_br",
"created_at": "2020-12-10T14:15:00.994Z",
"updated_at": "2023-05-10T11:51:55.439Z"
},
"users_count": 11,
"vogsphere_id": null,
"country": "Brazil",
"address": "- No address yet -",
"zip": "30000",
"city": "Belo Horizonte",
"website": "https://42bh.org.br",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42bh.org.br",
"default_hidden_phone": false
},
{
"id": 62,
"name": "Le Havre",
"time_zone": "Europe/Paris",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-05-25T07:13:15.909Z"
},
"users_count": 204,
"vogsphere_id": 54,
"country": "France",
"address": "Cité Numérique - 20 Quai Frissard - Le Havre - 76600 - France",
"zip": "76600",
"city": "Le Havre",
"website": "https://42lehavre.fr",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42lehavre.fr",
"default_hidden_phone": false
},
{
"id": 53,
"name": "Vienna",
"time_zone": "Europe/Vienna",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-05-22T12:19:35.449Z"
},
"users_count": 509,
"vogsphere_id": 49,
"country": "Austria",
"address": "Muthgasse 26/1",
"zip": "1190",
"city": "Vienna",
"website": "https://www.42vienna.com",
"facebook": "https://www.facebook.com/42vienna",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42vienna.com",
"default_hidden_phone": false
},
{
"id": 59,
"name": "Luxembourg",
"time_zone": "Europe/Paris",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-05-15T08:14:51.541Z"
},
"users_count": 14,
"vogsphere_id": null,
"country": "Luxembourg",
"address": "- no address yet - ",
"zip": "1000",
"city": "Luxembourg",
"website": "https://42luxembourg.lu",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42luxembourg.lu",
"default_hidden_phone": false
},
{
"id": 60,
"name": "Perpignan",
"time_zone": "Europe/Paris",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-05-15T08:14:51.541Z"
},
"users_count": 324,
"vogsphere_id": 53,
"country": "France",
"address": "5, Rue Pierre Curie - Les Dames de France",
"zip": "66000",
"city": "Perpignan",
"website": "https://42perpignan.fr",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42perpignan.fr",
"default_hidden_phone": false
},
{
"id": 13,
"name": "Helsinki",
"time_zone": "Europe/Helsinki",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-05-25T08:47:43.953Z"
},
"users_count": 1174,
"vogsphere_id": 13,
"country": "Finland",
"address": "Haapaniemenkatu 5",
"zip": "00530",
"city": "Helsinki",
"website": "https://www.hive.fi/",
"facebook": "https://www.facebook.com/HiveHelsinki",
"twitter": "https://twitter.com/hivehelsinki",
"active": true,
"public": true,
"email_extension": "hive.fi",
"default_hidden_phone": false
},
{
"id": 56,
"name": "Prague",
"time_zone": "Europe/Prague",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-06-02T13:20:26.141Z"
},
"users_count": 377,
"vogsphere_id": 52,
"country": "Czech Republic",
"address": "AFI CITY TOWER Kolbenova 1021/9 Praha 9 - Vysočany",
"zip": "19000",
"city": "Prague",
"website": "https://42prague.com",
"facebook": "https://www.facebook.com/42Prague",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42prague.com",
"default_hidden_phone": false
},
{
"id": 57,
"name": "London",
"time_zone": "Europe/London",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-05-30T11:17:48.516Z"
},
"users_count": 202,
"vogsphere_id": 51,
"country": "United Kingdom",
"address": "30 Millbank - 5th & 6th Floors",
"zip": "SW1P 4DU",
"city": "London",
"website": "https://42london.com",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42london.com",
"default_hidden_phone": true
},
{
"id": 58,
"name": "Porto",
"time_zone": "Europe/Lisbon",
"language": {
"id": 9,
"name": "Portuguese",
"identifier": "pt",
"created_at": "2019-01-29T15:17:48.227Z",
"updated_at": "2023-05-30T11:17:56.217Z"
},
"users_count": 836,
"vogsphere_id": 50,
"country": "Portugal",
"address": "Av. dos Aliados n⁰ 322/324, 3⁰ Piso",
"zip": "4000-407",
"city": "Porto",
"website": "https://42porto.com",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42porto.com",
"default_hidden_phone": false
},
{
"id": 31,
"name": "Angouleme",
"time_zone": "Europe/Paris",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-05-17T09:25:52.690Z"
},
"users_count": 381,
"vogsphere_id": 41,
"country": "France",
"address": "49-51 Boulevard Besson-Ney",
"zip": "16000",
"city": "Angoulême",
"website": "https://www.42angouleme.fr/",
"facebook": "https://facebook.com/ecole42angouleme/",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42angouleme.fr",
"default_hidden_phone": false
},
{
"id": 37,
"name": "Malaga",
"time_zone": "Europe/Madrid",
"language": {
"id": 11,
"name": "Spanish",
"identifier": "es",
"created_at": "2019-08-09T15:14:32.544Z",
"updated_at": "2023-06-02T10:34:10.296Z"
},
"users_count": 2575,
"vogsphere_id": 45,
"country": "Spain",
"address": "malaga street",
"zip": "29000",
"city": "Malaga",
"website": "http://www.42malaga.com",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42malaga.com",
"default_hidden_phone": false
},
{
"id": 51,
"name": "Berlin",
"time_zone": "Europe/Berlin",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-06-01T08:48:01.929Z"
},
"users_count": 740,
"vogsphere_id": 48,
"country": "Germany",
"address": "Harzer Strasse 39",
"zip": "12059",
"city": "Berlin",
"website": "http://42berlin.de/",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42berlin.de",
"default_hidden_phone": false
},
{
"id": 48,
"name": "Mulhouse",
"time_zone": "Europe/Paris",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-06-02T04:28:44.605Z"
},
"users_count": 484,
"vogsphere_id": 39,
"country": "France",
"address": "30 Rue François Spoerry",
"zip": "68100",
"city": "Mulhouse",
"website": "https://42mulhouse.fr",
"facebook": "https://www.facebook.com/42Mulhouse",
"twitter": "https://twitter.com/42MulhouseGE",
"active": true,
"public": true,
"email_extension": "42mulhouse.fr",
"default_hidden_phone": false
},
{
"id": 54,
"name": "42-test",
"time_zone": "Europe/Paris",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-06-01T08:48:03.513Z"
},
"users_count": 42,
"vogsphere_id": 55,
"country": "France",
"address": "96 Bd Bessières",
"zip": "75017",
"city": "Paris",
"website": "http://42campus.org",
"facebook": "",
"twitter": "",
"active": true,
"public": false,
"email_extension": "42campus.org",
"default_hidden_phone": false
},
{
"id": 55,
"name": "Tétouan",
"time_zone": "Africa/Casablanca",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-05-22T08:51:04.542Z"
},
"users_count": 334,
"vogsphere_id": 44,
"country": "Morocco",
"address": "Parc Tétouan Shore, CP93150 , Martil, Tétouan",
"zip": "93000",
"city": "Tétouan",
"website": "https://1337.ma",
"facebook": "",
"twitter": "https://twitter.com/1337FIL",
"active": true,
"public": true,
"email_extension": "1337.ma",
"default_hidden_phone": false
},
{
"id": 52,
"name": "Florence",
"time_zone": "Europe/Rome",
"language": {
"id": 16,
"name": "Italian",
"identifier": "it",
"created_at": "2020-03-12T13:30:39.859Z",
"updated_at": "2023-05-15T13:09:29.207Z"
},
"users_count": 575,
"vogsphere_id": 46,
"country": "Italy",
"address": "Via del Tiratoio, 1",
"zip": "50124",
"city": "Firenze",
"website": "https://www.42firenze.it",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42firenze.it",
"default_hidden_phone": true
},
{
"id": 46,
"name": "Barcelona",
"time_zone": "Europe/Madrid",
"language": {
"id": 11,
"name": "Spanish",
"identifier": "es",
"created_at": "2019-08-09T15:14:32.544Z",
"updated_at": "2023-05-16T12:30:11.239Z"
},
"users_count": 1975,
"vogsphere_id": 38,
"country": "Spain",
"address": "Parc Tecnològic de Barcelona Activa, Carrer Albert Einstein",
"zip": "08042",
"city": "Barcelona",
"website": "https://www.42barcelona.com",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42barcelona.com",
"default_hidden_phone": true
},
{
"id": 49,
"name": "Istanbul",
"time_zone": "Europe/Istanbul",
"language": {
"id": 18,
"name": "Turkish",
"identifier": "tr",
"created_at": "2021-08-20T10:50:01.782Z",
"updated_at": "2023-05-15T08:15:11.778Z"
},
"users_count": 2689,
"vogsphere_id": 36,
"country": "Turkey",
"address": "Ayazağa Mah. Azerbaycan Cad. Vadistanbul İş Blokları 2B Blok Kat 3 Sarıyer",
"zip": "34000",
"city": "Istanbul",
"website": "http://www.42istanbul.com.tr",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42istanbul.com.tr",
"default_hidden_phone": false
},
{
"id": 34,
"name": "Kuala Lumpur",
"time_zone": "Asia/Kuala_Lumpur",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-05-25T08:47:43.953Z"
},
"users_count": 939,
"vogsphere_id": 26,
"country": "Malaysia",
"address": "Sunway FutureX",
"zip": "47500",
"city": "Kuala Lumpur",
"website": "42kl.edu.my",
"facebook": "https://www.facebook.com/42kualalumpur/",
"twitter": "https://twitter.com/42kualalumpur",
"active": true,
"public": true,
"email_extension": "42kl.edu.my",
"default_hidden_phone": false
},
{
"id": 50,
"name": "Kocaeli",
"time_zone": "Europe/Istanbul",
"language": {
"id": 18,
"name": "Turkish",
"identifier": "tr",
"created_at": "2021-08-20T10:50:01.782Z",
"updated_at": "2023-05-31T19:39:44.626Z"
},
"users_count": 1674,
"vogsphere_id": 37,
"country": "Turkey",
"address": "Muallimköy Mahallesi, Deniz Cd. No:143-5, 41400 Gebze/Kocaeli",
"zip": "41000",
"city": "Kocaeli",
"website": "http://42kocaeli.com.tr",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42kocaeli.com.tr",
"default_hidden_phone": false
},
{
"id": 47,
"name": "Lausanne",
"time_zone": "Europe/Zurich",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-06-01T08:48:03.513Z"
},
"users_count": 894,
"vogsphere_id": 35,
"country": "Switzerland",
"address": "64 Rue de Lausanne",
"zip": "1020",
"city": "Renens",
"website": "https://42lausanne.ch/",
"facebook": "https://www.facebook.com/42Lausanne",
"twitter": "https://twitter.com/42lausanne",
"active": true,
"public": true,
"email_extension": "42lausanne.ch",
"default_hidden_phone": true
},
{
"id": 44,
"name": "Wolfsburg",
"time_zone": "Europe/Berlin",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-05-22T12:19:35.449Z"
},
"users_count": 2656,
"vogsphere_id": 29,
"country": "Germany",
"address": "Porschestraße 2c",
"zip": "38440",
"city": "Wolfsburg",
"website": "http://42wolfsburg.de/",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42wolfsburg.de",
"default_hidden_phone": false
},
{
"id": 40,
"name": "Urduliz",
"time_zone": "Europe/Madrid",
"language": {
"id": 11,
"name": "Spanish",
"identifier": "es",
"created_at": "2019-08-09T15:14:32.544Z",
"updated_at": "2023-05-15T08:15:00.587Z"
},
"users_count": 1206,
"vogsphere_id": 32,
"country": "Spain",
"address": "Aita Gotzon Kalea 37",
"zip": "48610",
"city": "Urduliz",
"website": "https://42urduliz.com/",
"facebook": "",
"twitter": "https://twitter.com/42UrdulizFTef",
"active": true,
"public": true,
"email_extension": "42urduliz.com",
"default_hidden_phone": true
},
{
"id": 33,
"name": "Bangkok",
"time_zone": "Asia/Bangkok",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-06-02T04:28:42.881Z"
},
"users_count": 2474,
"vogsphere_id": 31,
"country": "Thailand",
"address": "1 Thanon Chalong Krung, Lat Krabang",
"zip": "10520",
"city": "Bangkok",
"website": "https://www.42bangkok.com/",
"facebook": "https://www.facebook.com/42Bangkok/",
"twitter": "https://twitter.com/42bangkok",
"active": true,
"public": true,
"email_extension": "42bangkok.com",
"default_hidden_phone": false
},
{
"id": 36,
"name": "Adelaide",
"time_zone": "Australia/Adelaide",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-05-15T08:14:48.451Z"
},
"users_count": 990,
"vogsphere_id": 33,
"country": "Australia",
"address": "Level 2 and 3 - 24 Pitt St",
"zip": "5000",
"city": "Adelaide",
"website": "http://www.42adel.org.au",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42adel.org.au",
"default_hidden_phone": false
},
{
"id": 25,
"name": "Quebec",
"time_zone": "America/New_York",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-05-15T13:10:51.214Z"
},
"users_count": 639,
"vogsphere_id": 27,
"country": "Canada",
"address": "330, St-Vallier Est, bureau 300",
"zip": "G1K 9C5",
"city": "Québec",
"website": "42quebec.com",
"facebook": "https://www.facebook.com/42quebec/",
"twitter": "https://twitter.com/42_quebec",
"active": true,
"public": true,
"email_extension": "42quebec.com",
"default_hidden_phone": true
},
{
"id": 15,
"name": "Cape-Town",
"time_zone": "Africa/Johannesburg",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-05-15T08:14:48.451Z"
},
"users_count": 845,
"vogsphere_id": 12,
"country": "South Africa",
"address": "Portswood, Workshop17, Dock Rd, V & A Waterfront",
"zip": "8002",
"city": "Cape-Town",
"website": "https://www.wethinkcode.co.za/",
"facebook": "https://www.facebook.com/wethinkcode/",
"twitter": "https://twitter.com/wethinkcode",
"active": false,
"public": false,
"email_extension": "wethinkcode.co.za",
"default_hidden_phone": false
},
{
"id": 41,
"name": "Nice",
"time_zone": "Europe/Paris",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-05-15T08:14:51.541Z"
},
"users_count": 943,
"vogsphere_id": 23,
"country": "France",
"address": "61 Avenue Simone Veil",
"zip": "06200",
"city": "Nice",
"website": "https://www.42nice.fr/",
"facebook": "https://www.facebook.com/42nice",
"twitter": "https://twitter.com/42nicesud",
"active": true,
"public": true,
"email_extension": "42nice.fr",
"default_hidden_phone": true
},
{
"id": 39,
"name": "Heilbronn",
"time_zone": "Europe/Berlin",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-06-01T08:48:01.929Z"
},
"users_count": 1809,
"vogsphere_id": 28,
"country": "Germany",
"address": "Weipertstr 8 - 10",
"zip": "74076",
"city": "Heilbronn",
"website": "https://42heilbronn.de/",
"facebook": "https://www.facebook.com/42heilbronn",
"twitter": "https://twitter.com/42Heilbronn",
"active": true,
"public": true,
"email_extension": "42heilbronn.de",
"default_hidden_phone": false
},
{
"id": 43,
"name": "Abu Dhabi",
"time_zone": "Asia/Dubai",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-05-25T08:47:43.953Z"
},
"users_count": 1689,
"vogsphere_id": 30,
"country": "United Arab Emirates",
"address": "Mina Zayed, Warehouse District ",
"zip": "00000",
"city": "Abu Dhabi",
"website": "https://42abudhabi.ae/",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42abudhabi.ae",
"default_hidden_phone": false
},
{
"id": 42,
"name": "42Network",
"time_zone": "Europe/Paris",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-05-31T12:21:49.817Z"
},
"users_count": 201,
"vogsphere_id": 43,
"country": "France",
"address": "96 boulevard Bessières",
"zip": "75017",
"city": "PARIS",
"website": "http://42network.org/",
"facebook": "",
"twitter": "",
"active": true,
"public": false,
"email_extension": "42network.org",
"default_hidden_phone": false
},
{
"id": 38,
"name": "Lisboa",
"time_zone": "Europe/Lisbon",
"language": {
"id": 9,
"name": "Portuguese",
"identifier": "pt",
"created_at": "2019-01-29T15:17:48.227Z",
"updated_at": "2023-05-30T11:17:56.217Z"
},
"users_count": 2001,
"vogsphere_id": 25,
"country": "Portugal",
"address": "Rua Neves Ferreira, 13B",
"zip": "1170-273",
"city": "Lisboa",
"website": "http://www.42lisboa.com",
"facebook": "https://www.facebook.com/42-Lisboa-100970235020298/",
"twitter": "https://twitter.com/42lisboa",
"active": true,
"public": true,
"email_extension": "42lisboa.com",
"default_hidden_phone": false
},
{
"id": 30,
"name": "Rome",
"time_zone": "Europe/Rome",
"language": {
"id": 16,
"name": "Italian",
"identifier": "it",
"created_at": "2020-03-12T13:30:39.859Z",
"updated_at": "2023-05-23T16:23:50.613Z"
},
"users_count": 1865,
"vogsphere_id": 24,
"country": "Italy",
"address": "Via Marsala 29H Termini train station",
"zip": "00185",
"city": "Roma",
"website": "https://www.42roma.it",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42roma.it",
"default_hidden_phone": true
},
{
"id": 17,
"name": "Moscow",
"time_zone": "Europe/Moscow",
"language": {
"id": 6,
"name": "Russian",
"identifier": "ru",
"created_at": "2018-06-08T10:49:26.608Z",
"updated_at": "2018-06-08T10:49:26.708Z"
},
"users_count": 8804,
"vogsphere_id": 7,
"country": "Russian Federation",
"address": "Vyatskaya 27, business park \"Factoria\"",
"zip": "127015",
"city": "Moscow",
"website": "21-school.ru",
"facebook": "https://www.facebook.com/21coding",
"twitter": "https://twitter.com/21coding",
"active": true,
"public": true,
"email_extension": "21-school.ru",
"default_hidden_phone": false
},
{
"id": 32,
"name": "Yerevan",
"time_zone": "Asia/Yerevan",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-05-15T09:39:24.979Z"
},
"users_count": 1652,
"vogsphere_id": 22,
"country": "Armenia",
"address": "16 Halabyan St",
"zip": "0038",
"city": "Yerevan",
"website": "https://42yerevan.am/",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42yerevan.am",
"default_hidden_phone": false
},
{
"id": 28,
"name": "Rio de Janeiro",
"time_zone": "America/Sao_Paulo",
"language": {
"id": 9,
"name": "Portuguese",
"identifier": "pt",
"created_at": "2019-01-29T15:17:48.227Z",
"updated_at": "2023-05-25T07:13:18.797Z"
},
"users_count": 679,
"vogsphere_id": 40,
"country": "Brazil",
"address": "Via Binario do Porto, 299 / 4th floor",
"zip": "20000-000",
"city": "Rio de Janeiro",
"website": "https://42.rio",
"facebook": "",
"twitter": "@Escola42Rio",
"active": true,
"public": true,
"email_extension": "42.rio",
"default_hidden_phone": false
},
{
"id": 7,
"name": "Fremont",
"time_zone": "America/Tijuana",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-05-15T08:14:48.451Z"
},
"users_count": 18213,
"vogsphere_id": 2,
"country": "United States",
"address": "6 600 Dumbarton Circle",
"zip": "94555",
"city": "Fremont",
"website": "https://www.42.us.org/",
"facebook": "https://www.facebook.com/42SiliconValley",
"twitter": "https://twitter.com/42SiliconValley",
"active": false,
"public": false,
"email_extension": "42.us.org",
"default_hidden_phone": false
},
{
"id": 23,
"name": "Kazan",
"time_zone": "Europe/Moscow",
"language": {
"id": 6,
"name": "Russian",
"identifier": "ru",
"created_at": "2018-06-08T10:49:26.608Z",
"updated_at": "2018-06-08T10:49:26.708Z"
},
"users_count": 3828,
"vogsphere_id": 18,
"country": "Russian Federation",
"address": "Spartakovskaya, 2b2",
"zip": "420000",
"city": "Kazan",
"website": "21-school.ru",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "21-school.ru",
"default_hidden_phone": false
},
{
"id": 29,
"name": "Seoul",
"time_zone": "Asia/Seoul",
"language": {
"id": 14,
"name": "Korean",
"identifier": "ko",
"created_at": "2020-01-08T10:56:47.481Z",
"updated_at": "2023-05-30T10:48:07.371Z"
},
"users_count": 5551,
"vogsphere_id": 19,
"country": "Korea, Republic of",
"address": "Gaepo Digital Innovation Park, 416, Gaepo-ro, Gangnam-gu,",
"zip": "06324",
"city": "Seoul",
"website": "https://www.42seoul.kr",
"facebook": "https://www.facebook.com/inno.aca/ ",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42seoul.kr",
"default_hidden_phone": false
},
{
"id": 9,
"name": "Lyon",
"time_zone": "Europe/Paris",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-05-19T23:51:43.089Z"
},
"users_count": 2631,
"vogsphere_id": 4,
"country": "France",
"address": "Campus Région du Numérique – 78 route de Paris",
"zip": "69260",
"city": "Charbonnières-les-Bains",
"website": "https://www.42lyon.fr/",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42lyon.fr",
"default_hidden_phone": true
},
{
"id": 20,
"name": "São-Paulo",
"time_zone": "America/Sao_Paulo",
"language": {
"id": 17,
"name": "Brazilian Portuguese",
"identifier": "pt_br",
"created_at": "2020-12-10T14:15:00.994Z",
"updated_at": "2023-05-23T16:23:43.959Z"
},
"users_count": 3038,
"vogsphere_id": 14,
"country": "Brazil",
"address": "Rua Aspicuelta, 422, cj. 71A",
"zip": "05433-010",
"city": "São Paulo",
"website": "https://42sp.org.br",
"facebook": "",
"twitter": "",
"active": true,
"public": true,
"email_extension": "42sp.org.br",
"default_hidden_phone": false
},
{
"id": 26,
"name": "Tokyo",
"time_zone": "Asia/Tokyo",
"language": {
"id": 13,
"name": "Japanese",
"identifier": "ja",
"created_at": "2019-11-15T13:34:10.581Z",
"updated_at": "2023-05-31T19:39:47.272Z"
},
"users_count": 4869,
"vogsphere_id": 17,
"country": "Japan",
"address": "Sumitomo Fudosan Roppongi Grand Tower 3-2-1 Roppongi Minato-ku reception: 24F",
"zip": "106-6224",
"city": "Tokyo",
"website": "https://42tokyo.jp",
"facebook": "https://www.facebook.com/42tokyo/",
"twitter": "https://twitter.com/42_tokyo",
"active": true,
"public": true,
"email_extension": "42tokyo.jp",
"default_hidden_phone": true
},
{
"id": 22,
"name": "Madrid",
"time_zone": "Europe/Madrid",
"language": {
"id": 11,
"name": "Spanish",
"identifier": "es",
"created_at": "2019-08-09T15:14:32.544Z",
"updated_at": "2023-06-01T08:48:08.035Z"
},
"users_count": 5941,
"vogsphere_id": 15,
"country": "Spain",
"address": "Distrito Telefónica - Edificio Norte 3, Ronda de la Comunicación, s/n",
"zip": "28050",
"city": "Madrid",
"website": "http://www.42madrid.com/",
"facebook": "https://facebook.com/fundaciontef",
"twitter": "https://twitter.com/42MadridFTef",
"active": true,
"public": true,
"email_extension": "42madrid.com",
"default_hidden_phone": true
},
{
"id": 14,
"name": "Amsterdam",
"time_zone": "Europe/Amsterdam",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-06-01T11:31:18.366Z"
},
"users_count": 1957,
"vogsphere_id": 8,
"country": "Netherlands",
"address": "Kattenburgerstraat 7",
"zip": "1018 JA",
"city": "Amsterdam",
"website": "http://www.codam.nl",
"facebook": "https://www.facebook.com/codamcodingcollege/",
"twitter": "https://twitter.com/CodamCollege",
"active": true,
"public": true,
"email_extension": "codam.nl",
"default_hidden_phone": false
},
{
"id": 16,
"name": "Khouribga",
"time_zone": "Africa/Casablanca",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-05-26T08:53:54.572Z"
},
"users_count": 2880,
"vogsphere_id": 6,
"country": "Morocco",
"address": "Mail Central",
"zip": "25000",
"city": "Khouribga",
"website": "https://1337.ma",
"facebook": "",
"twitter": "https://twitter.com/1337FIL",
"active": true,
"public": true,
"email_extension": "1337.ma",
"default_hidden_phone": false
},
{
"id": 21,
"name": "Benguerir",
"time_zone": "Africa/Casablanca",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-05-26T08:53:54.572Z"
},
"users_count": 2022,
"vogsphere_id": 11,
"country": "Morocco",
"address": "Lot 660, Hay Moulay Rachid, Ben Guerir 43150",
"zip": "43150",
"city": "Benguerir",
"website": "https://1337.ma",
"facebook": "https://www.facebook.com/1337FutureIsLoading",
"twitter": "https://twitter.com/1337FIL",
"active": true,
"public": true,
"email_extension": "1337.ma",
"default_hidden_phone": false
},
{
"id": 12,
"name": "19",
"time_zone": "Europe/Brussels",
"language": {
"id": 2,
"name": "English",
"identifier": "en",
"created_at": "2015-04-14T16:07:38.122Z",
"updated_at": "2023-05-25T08:47:43.953Z"
},
"users_count": 2049,
"vogsphere_id": 5,
"country": "Belgium",
"address": "Cantersteen 10/12",
"zip": "1000",
"city": "Brussels",
"website": "https://www.campus19.be",
"facebook": "https://www.facebook.com/19network42/",
"twitter": "https://twitter.com/19network42/",
"active": true,
"public": true,
"email_extension": "s19.be",
"default_hidden_phone": false
},
{
"id": 1,
"name": "Paris",
"time_zone": "Europe/Paris",
"language": {
"id": 1,
"name": "Français",
"identifier": "fr",
"created_at": "2014-11-02T16:43:38.466Z",
"updated_at": "2023-06-01T08:48:03.513Z"
},
"users_count": 25946,
"vogsphere_id": 1,
"country": "France",
"address": "96, boulevard Bessières",
"zip": "75017",
"city": "Paris",
"website": "http://www.42.fr/",
"facebook": "https://facebook.com/42born2code",
"twitter": "https://twitter.com/42born2code",
"active": true,
"public": true,
"email_extension": "42.fr",
"default_hidden_phone": false
}
],
"videos": [],
"project_sessions": [
{
"id": 8482,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"EEG",
"Classification"
],
"description": "Learn to use python tools to process large dimension data, and create a man-machine interface thanks to brainwaves.",
"duration_days": null,
"terminating_after": null,
"project_id": 1460,
"campus_id": 13,
"cursus_id": 21,
"created_at": "2022-09-30T15:13:03.302Z",
"updated_at": "2023-05-02T08:47:42.774Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 23279,
"correction_number": 3,
"is_primary": true
},
{
"id": 17941,
"correction_number": 3,
"is_primary": false
},
{
"id": 17300,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "31cd76d8f30b43a4f446bba6604202578f1da008"
},
{
"id": 9937,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"EEG",
"Classification"
],
"description": "Learn to use python tools to process large dimension data, and create a man-machine interface thanks to brainwaves.",
"duration_days": null,
"terminating_after": null,
"project_id": 1460,
"campus_id": 47,
"cursus_id": 21,
"created_at": "2023-04-13T12:05:36.959Z",
"updated_at": "2023-04-13T13:00:14.804Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 22907,
"correction_number": 3,
"is_primary": true
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "8fd4c7ce4840f216f43004463926e3e3fe19725b"
},
{
"id": 9737,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"EEG",
"Classification"
],
"description": "Learn to use python tools to process large dimension data, and create a man-machine interface thanks to brainwaves.",
"duration_days": null,
"terminating_after": null,
"project_id": 1460,
"campus_id": 12,
"cursus_id": 21,
"created_at": "2023-03-30T13:21:58.105Z",
"updated_at": "2023-06-02T10:19:25.795Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 23972,
"correction_number": 3,
"is_primary": true
},
{
"id": 23971,
"correction_number": 3,
"is_primary": false
},
{
"id": 22496,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "31cd76d8f30b43a4f446bba6604202578f1da008"
},
{
"id": 4850,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"EEG",
"Classification"
],
"description": "Learn to use python tools to process large dimension data, and create a man-machine interface thanks to brainwaves.",
"duration_days": null,
"terminating_after": null,
"project_id": 1460,
"campus_id": 14,
"cursus_id": 21,
"created_at": "2020-09-03T16:42:03.432Z",
"updated_at": "2023-05-02T10:57:03.362Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 23285,
"correction_number": 3,
"is_primary": true
},
{
"id": 23011,
"correction_number": 3,
"is_primary": false
},
{
"id": 16423,
"correction_number": 3,
"is_primary": false
},
{
"id": 9825,
"correction_number": 3,
"is_primary": false
},
{
"id": 3502,
"correction_number": 5,
"is_primary": false
},
{
"id": 3235,
"correction_number": 5,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "31cd76d8f30b43a4f446bba6604202578f1da008"
},
{
"id": 9249,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"EEG",
"Classification"
],
"description": "Learn to use python tools to process large dimension data, and create a man-machine interface thanks to brainwaves.",
"duration_days": null,
"terminating_after": null,
"project_id": 1460,
"campus_id": 26,
"cursus_id": 21,
"created_at": "2023-01-25T03:04:33.953Z",
"updated_at": "2023-05-08T09:20:59.876Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 23357,
"correction_number": 3,
"is_primary": true
},
{
"id": 20080,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "31cd76d8f30b43a4f446bba6604202578f1da008"
},
{
"id": 7138,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"EEG",
"Classification"
],
"description": "Learn to use python tools to process large dimension data, and create a man-machine interface thanks to brainwaves.",
"duration_days": null,
"terminating_after": null,
"project_id": 1460,
"campus_id": 1,
"cursus_id": 21,
"created_at": "2022-02-03T14:18:48.624Z",
"updated_at": "2023-05-22T09:18:39.200Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 23686,
"correction_number": 3,
"is_primary": true
},
{
"id": 14892,
"correction_number": 3,
"is_primary": false
},
{
"id": 16892,
"correction_number": 3,
"is_primary": false
},
{
"id": 11295,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "31cd76d8f30b43a4f446bba6604202578f1da008"
},
{
"id": 6629,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"EEG",
"Classification"
],
"description": "Learn to use python tools to process large dimension data, and create a man-machine interface thanks to brainwaves.",
"duration_days": null,
"terminating_after": null,
"project_id": 1460,
"campus_id": 1,
"cursus_id": 53,
"created_at": "2021-10-20T13:34:55.539Z",
"updated_at": "2023-05-22T09:18:46.786Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 23687,
"correction_number": 3,
"is_primary": true
},
{
"id": 14890,
"correction_number": 3,
"is_primary": false
},
{
"id": 16893,
"correction_number": 3,
"is_primary": false
},
{
"id": 8988,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "31cd76d8f30b43a4f446bba6604202578f1da008"
},
{
"id": 9031,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"EEG",
"Classification"
],
"description": "Learn to use python tools to process large dimension data, and create a man-machine interface thanks to brainwaves.",
"duration_days": null,
"terminating_after": null,
"project_id": 1460,
"campus_id": 39,
"cursus_id": 21,
"created_at": "2022-11-17T14:07:45.665Z",
"updated_at": "2022-11-17T14:07:49.218Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 18982,
"correction_number": 3,
"is_primary": true
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "8fd4c7ce4840f216f43004463926e3e3fe19725b"
},
{
"id": 8825,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"EEG",
"Classification"
],
"description": "Learn to use python tools to process large dimension data, and create a man-machine interface thanks to brainwaves.",
"duration_days": null,
"terminating_after": null,
"project_id": 1460,
"campus_id": 9,
"cursus_id": 21,
"created_at": "2022-11-14T16:38:33.364Z",
"updated_at": "2022-11-15T12:55:46.769Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 18721,
"correction_number": 3,
"is_primary": true
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "8fd4c7ce4840f216f43004463926e3e3fe19725b"
},
{
"id": 8118,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"EEG",
"Classification"
],
"description": "Learn to use python tools to process large dimension data, and create a man-machine interface thanks to brainwaves.",
"duration_days": null,
"terminating_after": null,
"project_id": 1460,
"campus_id": 25,
"cursus_id": 21,
"created_at": "2022-07-18T14:58:21.486Z",
"updated_at": "2023-01-31T15:33:00.144Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 20321,
"correction_number": 3,
"is_primary": true
},
{
"id": 15437,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "8fd4c7ce4840f216f43004463926e3e3fe19725b"
},
{
"id": 7600,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"EEG",
"Classification"
],
"description": "Learn to use python tools to process large dimension data, and create a man-machine interface thanks to brainwaves.",
"duration_days": null,
"terminating_after": null,
"project_id": 1460,
"campus_id": 41,
"cursus_id": 21,
"created_at": "2022-03-19T16:51:21.264Z",
"updated_at": "2023-05-08T08:40:22.967Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 17129,
"correction_number": 3,
"is_primary": false
},
{
"id": 23353,
"correction_number": 3,
"is_primary": true
},
{
"id": 14408,
"correction_number": 3,
"is_primary": false
},
{
"id": 13180,
"correction_number": 3,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "31cd76d8f30b43a4f446bba6604202578f1da008"
},
{
"id": 3502,
"solo": true,
"begin_at": null,
"end_at": null,
"estimate_time": "98 hours",
"difficulty": 9450,
"objectives": [
"DataScience",
"EEG",
"Classification"
],
"description": "Learn to use python tools to process large dimension data, and create a man-machine interface thanks to brainwaves.",
"duration_days": null,
"terminating_after": null,
"project_id": 1460,
"campus_id": null,
"cursus_id": null,
"created_at": "2019-09-23T12:07:06.947Z",
"updated_at": "2023-04-27T14:36:22.239Z",
"max_people": null,
"is_subscriptable": true,
"scales": [
{
"id": 16659,
"correction_number": 3,
"is_primary": false
},
{
"id": 23264,
"correction_number": 3,
"is_primary": true
},
{
"id": 14891,
"correction_number": 3,
"is_primary": false
},
{
"id": 8267,
"correction_number": 3,
"is_primary": false
},
{
"id": 3458,
"correction_number": 5,
"is_primary": false
},
{
"id": 2279,
"correction_number": 5,
"is_primary": false
},
{
"id": 1547,
"correction_number": 5,
"is_primary": false
}
],
"uploads": [],
"team_behaviour": "user",
"commit": "31cd76d8f30b43a4f446bba6604202578f1da008"
}
]
}
]
CursusSkills details
Given the following Cursus:
{
"id":21,
"created_at":"2019-07-29T08:45:17.896Z",
"name":"42cursus",
"slug":"42cursus",
"kind":"main"
}
We can find out the skills for the cursus by using it's id (#21)
curl -H "Authorization: Bearer Your_Access_Token" "https://api.intra.42.fr/v2/cursus/21/skills
In the example we check the range: [2023-06-02,2023-06-03] to avoid unnecessary RAM memory usage, but this request&response should not be too long. The real implementation should use the cursus updated_at and the current time.
curl -H "Authorization: Bearer Your_Access_Token" "https://api.intra.42.fr/v2/cursus/21/skills?&range%5Bupdated_at%5D=2023-06-02,2023-06-03&&per_page=10&page=1"
[square brackets need to be URL encoded as mentioned on RFC 3986]
[
{
"id": 14,
"slug": "adaptation-creativity",
"name": "Adaptation & creativity",
"created_at": "2014-12-04T14:38:04.450Z"
}
]
At the end we need to update all the "updated_at" when on success.
We can also use the range for the Cursus, Skills & Projects, but for that we would need another field on our data base, one for each update.
We should consider a table like "Intra Elements Settings"
It could contain the updated_at of the elements.
It could also contain the amount of elements it updates at each call "per_page".
Also we could add the rate for the cron job, this is how "often" it gets updated, daily, weekly, hourly; etc.
And we could also have another table OneToMany for updates. This would be a table which will keep track of all our update attempts and will let us know it that update was successful or if it failed.
- update the registered users using: GET /v2/users/:id
// TODO