OmniAuth OAuth2 strategy for 42 School.
Add this line to your application's Gemfile:
gem 'omniauth-marvin', '~> 1.2.0'
Or, install it yourself like below:
gem install omniauth-marvin
run bundle install
(Skip this if you want to use the gem with Devise to authenticate users)
Register your application on 42's intranet to receive an API Key.
Here's an example for adding the middleware to a Rails app in config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :marvin, ENV["FT_ID"], ENV["FT_SECRET"]
end
You can now access the OmniAuth 42 OAuth2 URL: /auth/marvin
Read the Omniauth Wiki or see this RailsCast for an example on how to use this Rack middleware without any other gem.
If you wish to use this gem with devise, do NOT use the code snippet above in the Usage section. Instead, follow these steps:
Add the devise gem to your Gemfile.
gem 'devise'
run bundle install
rails g devise:install
rails g devise user
rails g devise:controllers users -c=omniauth_callbacks
rails g migration AddLoginToUsers login:string
rails g migration AddOmniauthToUsers provider:index uid:index
Before migrating, for this example since we are not going to use trackable, and all the devise module. Then please edit the file created into db/*_devise_create_users
, to only keep:
# frozen_string_literal: true
class DeviseCreateUsers < ActiveRecord::Migration[6.1]
def change
create_table :users do |t|
t.string :email, null: false, default: ""
t.timestamps null: false
end
add_index :users, :email, unique: true
end
end
now you can migrate:
rails db:migrate
You can add any additional migration you want. For instance, phone, level, wallet...etc.
config/initializers/devise.rb
Devise.setup do |config|
.
.
config.omniauth :marvin, ENV["FT_ID"], ENV["FT_SECRET"]
.
.
end
Don't forget to set the "FT_ID" and "FT_SECRET" (your app id and secret) in your environment variables.
In this case, app/models/user.rb
class User < ActiveRecord::Base
devise :omniauthable, omniauth_providers: [:marvin]
end
app/models/user.rb
Example:
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.email = auth.info.email
user.login = auth.info.login
end
end
config/routes.rb
devise_for :users, controllers: { omniauth_callbacks: "users/omniauth_callbacks" }
app/controllers/users/omniauth_callbacks_controller.rb
Example:
# frozen_string_literal: true
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def marvin
@user = User.from_omniauth(request.env["omniauth.auth"])
if @user.persisted?
sign_in_and_redirect @user, event: :authentication
set_flash_message(:notice, :success, kind: "42") if is_navigational_format?
else
session["devise.marvin_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
def after_omniauth_failure_path_for scope
# instead of root_path you can add sign_in_path if you end up to have your own sign_in page.
root_path
end
end
config/routes.rb
devise_scope :user do
delete 'sign_out', to: 'devise/sessions#destroy', as: :destroy_user_session
end
Here's a (very) basic example for login/logout links in the views
<%= link_to "Sign in with 42", user_marvin_omniauth_authorize_path unless current_user %>
<%= link_to "Sign out", destroy_user_session_path, method: :delete if current_user %>
This section about devise and Omniauth was written with the help of devise documentation. More info about devise and Omniauth on their documentation.
Here's an example of the auth hash available in request.env['omniauth.auth']:
{
"provider":"marvin",
"uid":19265,
"info":{
"first_name":"Jordane",
"last_name":"Gengo",
"name":"Jordane Angelo Gengo",
"email":"[email protected]",
"login":"jgengo",
"image":"https://cdn.intra.42.fr/users/jgengo.jpg",
"urls":{
"profile":"https://api.intra.42.fr/v2/users/jgengo"
}
},
"credentials":{
"token":"",
"refresh_token":"",
"expires_at":1618602578,
"expires":true
},
"extra":{
"raw_info":{
"id":19265,
"email":"[email protected]",
"login":"jgengo",
"first_name":"Jordane",
"last_name":"Gengo",
"usual_first_name":"Jordane angelo",
"url":"https://api.intra.42.fr/v2/users/jgengo",
"phone":"hidden",
"displayname":"Jordane Gengo",
"usual_full_name":"Jordane Angelo Gengo",
"image_url":"https://cdn.intra.42.fr/users/jgengo.jpg",
"staff?":false,
"correction_point":28,
"pool_month":"july",
"pool_year":"2016",
"location":null,
"wallet":125,
"anonymize_date":"2022-04-16T00:00:00.000+02:00",
"groups":[
],
"cursus_users":[
{
"grade":"Admiral",
"level":21.0,
"skills":[
{
"id":16,
"name":"Company experience",
"level":21.24
},
{
"id":7,
"name":"Group \u0026 interpersonal",
"level":17.39
},
{
"id":6,
"name":"Web",
"level":13.36
},
{
"id":10,
"name":"Network \u0026 system administration",
"level":11.66
},
{
"id":14,
"name":"Adaptation \u0026 creativity",
"level":11.54
},
{
"id":12,
"name":"DB \u0026 Data",
"level":8.39
},
{
"id":1,
"name":"Algorithms \u0026 AI",
"level":5.9
},
{
"id":2,
"name":"Imperative programming",
"level":4.5600000000000005
},
{
"id":4,
"name":"Unix",
"level":4.53
},
{
"id":11,
"name":"Security",
"level":4.26
},
{
"id":3,
"name":"Rigor",
"level":3.2
},
{
"id":15,
"name":"Technology integration",
"level":2.73
},
{
"id":17,
"name":"Object-oriented programming",
"level":1.71
},
{
"id":5,
"name":"Graphics",
"level":1.28
}
],
"blackholed_at":null,
"id":16191,
"begin_at":"2016-11-02T08:00:00.000Z",
"end_at":"2019-12-01T00:00:00.000Z",
"cursus_id":1,
"has_coalition":true,
"user":{
"id":19265,
"login":"jgengo",
"url":"https://api.intra.42.fr/v2/users/jgengo"
},
"cursus":{
"id":1,
"created_at":"2014-11-02T16:43:38.480Z",
"name":"42",
"slug":"42"
}
},
{
"grade":null,
"level":4.0,
"skills":[
{
"id":4,
"name":"Unix",
"level":4.13
},
{
"id":3,
"name":"Rigor",
"level":3.73
},
{
"id":1,
"name":"Algorithms \u0026 AI",
"level":3.66
},
{
"id":7,
"name":"Group \u0026 interpersonal",
"level":0.69
}
],
"blackholed_at":null,
"id":10033,
"begin_at":"2016-06-30T21:42:00.000Z",
"end_at":"2016-07-31T21:42:00.000Z",
"cursus_id":4,
"has_coalition":true,
"user":{
"id":19265,
"login":"jgengo",
"url":"https://api.intra.42.fr/v2/users/jgengo"
},
"cursus":{
"id":4,
"created_at":"2015-05-01T17:46:08.433Z",
"name":"Piscine C",
"slug":"piscine-c"
}
},
{
"grade":"Member",
"level":21.01,
"skills":[
{
"id":16,
"name":"Company experience",
"level":21.25
},
{
"id":7,
"name":"Group \u0026 interpersonal",
"level":17.39
},
{
"id":6,
"name":"Web",
"level":13.36
},
{
"id":10,
"name":"Network \u0026 system administration",
"level":11.66
},
{
"id":14,
"name":"Adaptation \u0026 creativity",
"level":11.54
},
{
"id":12,
"name":"DB \u0026 Data",
"level":8.39
},
{
"id":1,
"name":"Algorithms \u0026 AI",
"level":5.52
},
{
"id":2,
"name":"Imperative programming",
"level":5.03
},
{
"id":4,
"name":"Unix",
"level":5.02
},
{
"id":11,
"name":"Security",
"level":4.87
},
{
"id":3,
"name":"Rigor",
"level":4.29
},
{
"id":15,
"name":"Technology integration",
"level":4.06
},
{
"id":17,
"name":"Object-oriented programming",
"level":2.92
},
{
"id":5,
"name":"Graphics",
"level":2.56
}
],
"blackholed_at":"2018-05-16T07:00:00.000Z",
"id":83052,
"begin_at":"2016-11-02T08:00:00.000Z",
"end_at":null,
"cursus_id":21,
"has_coalition":true,
"user":{
"id":19265,
"login":"jgengo",
"url":"https://api.intra.42.fr/v2/users/jgengo"
},
"cursus":{
"id":21,
"created_at":"2019-07-29T08:45:17.896Z",
"name":"42cursus",
"slug":"42cursus"
}
}
],
"projects_users":[
{
"id":1024960,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":2173586,
"project":{
"id":211,
"name":"Peer Video",
"slug":"final-internship-peer-video",
"parent_id":212
},
"cursus_ids":[
1
],
"marked_at":"2018-08-28T13:21:42.412Z",
"marked":true,
"retriable_at":"2018-08-28T13:21:46.156Z"
},
{
"id":745865,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":1844273,
"project":{
"id":604,
"name":"Darkly",
"slug":"darkly",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2017-11-28T18:03:50.501Z",
"marked":true,
"retriable_at":"2017-12-05T18:03:48.389Z"
},
{
"id":726705,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":1838773,
"project":{
"id":597,
"name":"Hypertube",
"slug":"hypertube",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2017-11-11T13:00:09.534Z",
"marked":true,
"retriable_at":"2017-11-18T13:00:06.065Z"
},
{
"id":689963,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1780157,
"project":{
"id":847,
"name":"docker-1",
"slug":"docker-1",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2017-11-20T21:19:12.735Z",
"marked":true,
"retriable_at":"2017-11-23T21:19:10.824Z"
},
{
"id":689964,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1780158,
"project":{
"id":687,
"name":"init",
"slug":"init",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2017-11-23T10:48:16.000Z",
"marked":true,
"retriable_at":"2017-11-24T10:48:13.584Z"
},
{
"id":689434,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":1779578,
"project":{
"id":700,
"name":"Dr Quine",
"slug":"dr-quine",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2017-09-25T09:06:43.558Z",
"marked":true,
"retriable_at":"2017-10-02T09:06:41.075Z"
},
{
"id":647141,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1728650,
"project":{
"id":60,
"name":"Rush01",
"slug":"piscine-php-rush01",
"parent_id":48
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T09:46:22.689Z",
"marked":true,
"retriable_at":"2017-10-30T09:46:22.674Z"
},
{
"id":647136,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1728642,
"project":{
"id":54,
"name":"Day 05",
"slug":"42-piscine-c-formation-piscine-php-day-05",
"parent_id":48
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T09:46:15.463Z",
"marked":true,
"retriable_at":"2017-10-21T13:56:59.293Z"
},
{
"id":647131,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1728648,
"project":{
"id":50,
"name":"Day 01",
"slug":"42-piscine-c-formation-piscine-php-day-01",
"parent_id":48
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T09:46:10.441Z",
"marked":true,
"retriable_at":"2017-10-30T09:46:10.413Z"
},
{
"id":647135,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1728649,
"project":{
"id":59,
"name":"Rush00",
"slug":"piscine-php-rush00",
"parent_id":48
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T09:46:15.392Z",
"marked":true,
"retriable_at":"2017-10-30T09:46:15.379Z"
},
{
"id":647139,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1728645,
"project":{
"id":57,
"name":"Day 08",
"slug":"42-piscine-c-formation-piscine-php-day-08",
"parent_id":48
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T09:46:20.024Z",
"marked":true,
"retriable_at":"2017-10-30T09:46:19.997Z"
},
{
"id":647137,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1728643,
"project":{
"id":55,
"name":"Day 06",
"slug":"42-piscine-c-formation-piscine-php-day-06",
"parent_id":48
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T09:46:16.640Z",
"marked":true,
"retriable_at":"2017-10-30T09:46:16.615Z"
},
{
"id":647130,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1728647,
"project":{
"id":49,
"name":"Day 00",
"slug":"42-piscine-c-formation-piscine-php-day-00",
"parent_id":48
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T09:56:23.449Z",
"marked":true,
"retriable_at":"2017-10-30T09:56:23.426Z"
},
{
"id":647140,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1728646,
"project":{
"id":58,
"name":"Day 09",
"slug":"42-piscine-c-formation-piscine-php-day-09",
"parent_id":48
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T09:46:21.440Z",
"marked":true,
"retriable_at":"2017-10-30T09:46:21.426Z"
},
{
"id":647138,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1728644,
"project":{
"id":56,
"name":"Day 07",
"slug":"42-piscine-c-formation-piscine-php-day-07",
"parent_id":48
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T09:46:18.297Z",
"marked":true,
"retriable_at":"2017-10-30T09:46:18.272Z"
},
{
"id":647132,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1728639,
"project":{
"id":51,
"name":"Day 02",
"slug":"42-piscine-c-formation-piscine-php-day-02",
"parent_id":48
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T09:46:11.788Z",
"marked":true,
"retriable_at":"2017-10-30T09:46:11.775Z"
},
{
"id":647133,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1728640,
"project":{
"id":52,
"name":"Day 03",
"slug":"42-piscine-c-formation-piscine-php-day-03",
"parent_id":48
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T09:46:12.574Z",
"marked":true,
"retriable_at":"2017-10-30T09:46:12.553Z"
},
{
"id":647134,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1728641,
"project":{
"id":53,
"name":"Day 04",
"slug":"42-piscine-c-formation-piscine-php-day-04",
"parent_id":48
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T09:46:13.729Z",
"marked":true,
"retriable_at":"2017-10-30T09:46:13.707Z"
},
{
"id":510252,
"occurrence":0,
"final_mark":118,
"status":"finished",
"validated?":true,
"current_team_id":1647106,
"project":{
"id":596,
"name":"Matcha",
"slug":"matcha",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2017-10-21T13:54:23.662Z",
"marked":true,
"retriable_at":"2017-10-28T13:54:21.000Z"
},
{
"id":557311,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1619659,
"project":{
"id":121,
"name":"Peer Video",
"slug":"first-internship-peer-video",
"parent_id":118
},
"cursus_ids":[
1
],
"marked_at":"2018-01-10T11:55:46.173Z",
"marked":true,
"retriable_at":"2018-01-10T11:55:43.877Z"
},
{
"id":557310,
"occurrence":0,
"final_mark":111,
"status":"finished",
"validated?":true,
"current_team_id":1619658,
"project":{
"id":120,
"name":"Company final evaluation",
"slug":"first-internship-company-final-evaluation",
"parent_id":118
},
"cursus_ids":[
1
],
"marked_at":"2018-04-17T08:39:55.911Z",
"marked":true,
"retriable_at":null
},
{
"id":557309,
"occurrence":0,
"final_mark":103,
"status":"finished",
"validated?":true,
"current_team_id":1619657,
"project":{
"id":826,
"name":"Company mid evaluation",
"slug":"first-internship-company-mid-evaluation",
"parent_id":118
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T17:30:25.545Z",
"marked":true,
"retriable_at":null
},
{
"id":557308,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":1619656,
"project":{
"id":140,
"name":"Duration",
"slug":"first-internship-duration",
"parent_id":118
},
"cursus_ids":[
1
],
"marked_at":"2017-07-13T15:24:05.314Z",
"marked":true,
"retriable_at":null
},
{
"id":557307,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1619655,
"project":{
"id":119,
"name":"Contract Upload",
"slug":"first-internship-contract-upload",
"parent_id":118
},
"cursus_ids":[
1
],
"marked_at":"2017-07-13T15:24:06.188Z",
"marked":true,
"retriable_at":"2017-07-13T15:22:35.355Z"
},
{
"id":490349,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1539043,
"project":{
"id":537,
"name":"Camagru",
"slug":"camagru",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2017-06-26T21:53:01.617Z",
"marked":true,
"retriable_at":"2017-06-30T21:53:01.595Z"
},
{
"id":445223,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":1483034,
"project":{
"id":803,
"name":"Rush01",
"slug":"piscine-ruby-on-rails-rush01",
"parent_id":791
},
"cursus_ids":[
1
],
"marked_at":"2018-04-24T12:17:53.476Z",
"marked":true,
"retriable_at":"2018-04-24T12:17:53.464Z"
},
{
"id":445417,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":1482625,
"project":{
"id":802,
"name":"Day 09",
"slug":"piscine-ruby-on-rails-day-09",
"parent_id":791
},
"cursus_ids":[
1
],
"marked_at":"2016-12-19T08:51:36.563Z",
"marked":true,
"retriable_at":"2016-12-19T08:51:36.542Z"
},
{
"id":445398,
"occurrence":0,
"final_mark":60,
"status":"finished",
"validated?":true,
"current_team_id":1482605,
"project":{
"id":801,
"name":"Day 08",
"slug":"piscine-ruby-on-rails-day-08",
"parent_id":791
},
"cursus_ids":[
1
],
"marked_at":"2016-12-18T10:28:33.716Z",
"marked":true,
"retriable_at":null
},
{
"id":445249,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":1482406,
"project":{
"id":800,
"name":"Day 07",
"slug":"piscine-ruby-on-rails-day-07",
"parent_id":791
},
"cursus_ids":[
1
],
"marked_at":"2016-12-19T08:51:44.969Z",
"marked":true,
"retriable_at":null
},
{
"id":444700,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":1481444,
"project":{
"id":799,
"name":"Day 06",
"slug":"piscine-ruby-on-rails-day-06",
"parent_id":791
},
"cursus_ids":[
1
],
"marked_at":"2017-09-02T13:22:49.622Z",
"marked":true,
"retriable_at":null
},
{
"id":444265,
"occurrence":0,
"final_mark":67,
"status":"finished",
"validated?":true,
"current_team_id":1481293,
"project":{
"id":797,
"name":"Rush00",
"slug":"piscine-ruby-on-rails-rush00",
"parent_id":791
},
"cursus_ids":[
1
],
"marked_at":"2016-12-12T11:14:22.358Z",
"marked":true,
"retriable_at":null
},
{
"id":444563,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":1481155,
"project":{
"id":798,
"name":"Day 05",
"slug":"piscine-ruby-on-rails-day-05",
"parent_id":791
},
"cursus_ids":[
1
],
"marked_at":"2017-01-23T15:45:59.963Z",
"marked":true,
"retriable_at":null
},
{
"id":444246,
"occurrence":0,
"final_mark":57,
"status":"finished",
"validated?":true,
"current_team_id":1480669,
"project":{
"id":795,
"name":"Day 03",
"slug":"piscine-ruby-on-rails-day-03",
"parent_id":791
},
"cursus_ids":[
1
],
"marked_at":"2017-09-02T13:21:15.772Z",
"marked":true,
"retriable_at":"2016-12-10T08:32:11.097Z"
},
{
"id":444017,
"occurrence":0,
"final_mark":52,
"status":"finished",
"validated?":true,
"current_team_id":1480110,
"project":{
"id":796,
"name":"Day 04",
"slug":"piscine-ruby-on-rails-day-04",
"parent_id":791
},
"cursus_ids":[
1
],
"marked_at":"2017-09-02T13:21:45.061Z",
"marked":true,
"retriable_at":null
},
{
"id":443840,
"occurrence":0,
"final_mark":79,
"status":"finished",
"validated?":true,
"current_team_id":1479803,
"project":{
"id":793,
"name":"Day 01",
"slug":"piscine-ruby-on-rails-day-01",
"parent_id":791
},
"cursus_ids":[
1
],
"marked_at":"2017-04-14T12:09:05.529Z",
"marked":true,
"retriable_at":"2016-12-08T09:31:57.882Z"
},
{
"id":443734,
"occurrence":0,
"final_mark":54,
"status":"finished",
"validated?":true,
"current_team_id":1479633,
"project":{
"id":794,
"name":"Day 02",
"slug":"piscine-ruby-on-rails-day-02",
"parent_id":791
},
"cursus_ids":[
1
],
"marked_at":"2017-09-02T13:20:48.671Z",
"marked":true,
"retriable_at":"2016-12-09T08:31:34.860Z"
},
{
"id":443507,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1479238,
"project":{
"id":792,
"name":"Day 00",
"slug":"piscine-ruby-on-rails-day-00",
"parent_id":791
},
"cursus_ids":[
1
],
"marked_at":"2017-09-02T13:20:20.725Z",
"marked":true,
"retriable_at":"2016-12-07T11:54:49.168Z"
},
{
"id":441655,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":1476768,
"project":{
"id":4,
"name":"FdF",
"slug":"fdf",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2017-01-19T13:14:05.528Z",
"marked":true,
"retriable_at":"2017-01-23T13:14:03.928Z"
},
{
"id":441081,
"occurrence":0,
"final_mark":120,
"status":"finished",
"validated?":true,
"current_team_id":1475754,
"project":{
"id":2,
"name":"GET_Next_Line",
"slug":"get_next_line",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2016-11-23T13:53:08.519Z",
"marked":true,
"retriable_at":"2016-11-24T13:53:08.498Z"
},
{
"id":438787,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1472240,
"project":{
"id":540,
"name":"Fillit",
"slug":"fillit",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2016-11-21T10:15:08.258Z",
"marked":true,
"retriable_at":"2016-11-23T10:15:08.142Z"
},
{
"id":433800,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":1465152,
"project":{
"id":1,
"name":"Libft",
"slug":"libft",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2017-11-11T12:20:50.167Z",
"marked":true,
"retriable_at":"2017-11-12T12:20:50.145Z"
},
{
"id":428286,
"occurrence":7,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1465141,
"project":{
"id":756,
"name":"Piscine Reloaded",
"slug":"piscine-reloaded",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2016-11-04T11:05:10.867Z",
"marked":true,
"retriable_at":"2016-11-04T11:05:10.842Z"
},
{
"id":428058,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1458252,
"project":{
"id":817,
"name":"42 Commandements",
"slug":"42-formation-pole-emploi-42-commandements",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2016-11-02T09:34:42.896Z",
"marked":true,
"retriable_at":"2016-11-02T09:34:42.868Z"
},
{
"id":305685,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1331518,
"project":{
"id":170,
"name":"Rush 02",
"slug":"piscine-c-rush-02",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-08-08T22:12:05.820Z",
"marked":true,
"retriable_at":"2016-07-28T13:03:50.789Z"
},
{
"id":305684,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":1327458,
"project":{
"id":173,
"name":"EvalExpr",
"slug":"piscine-c-evalexpr",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-25T21:51:31.751Z",
"marked":true,
"retriable_at":"2016-07-25T21:51:31.721Z"
},
{
"id":302832,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":1325029,
"project":{
"id":174,
"name":"BSQ",
"slug":"bsq",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2017-08-26T08:52:14.651Z",
"marked":true,
"retriable_at":"2016-07-28T11:30:57.306Z"
},
{
"id":302233,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":1324427,
"project":{
"id":166,
"name":"Day 13",
"slug":"piscine-c-day-13",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-23T22:08:20.470Z",
"marked":true,
"retriable_at":"2016-07-23T22:08:20.448Z"
},
{
"id":301506,
"occurrence":0,
"final_mark":25,
"status":"finished",
"validated?":true,
"current_team_id":1323691,
"project":{
"id":165,
"name":"Day 12",
"slug":"piscine-c-day-12",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-23T17:53:08.135Z",
"marked":true,
"retriable_at":"2016-07-22T12:13:34.491Z"
},
{
"id":300265,
"occurrence":0,
"final_mark":5,
"status":"finished",
"validated?":false,
"current_team_id":1322428,
"project":{
"id":164,
"name":"Day 11",
"slug":"piscine-c-day-11",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-23T18:02:57.536Z",
"marked":true,
"retriable_at":"2016-07-21T09:06:03.906Z"
},
{
"id":300264,
"occurrence":0,
"final_mark":25,
"status":"finished",
"validated?":true,
"current_team_id":1322427,
"project":{
"id":163,
"name":"Day 10",
"slug":"piscine-c-day-10",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2017-07-19T12:14:42.803Z",
"marked":true,
"retriable_at":"2016-07-20T07:33:55.004Z"
},
{
"id":280586,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":1321552,
"project":{
"id":169,
"name":"Rush 01",
"slug":"piscine-c-rush-01",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-08-08T22:11:01.108Z",
"marked":true,
"retriable_at":"2016-07-19T11:28:14.003Z"
},
{
"id":280348,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":1302466,
"project":{
"id":172,
"name":"Match-N-Match",
"slug":"piscine-c-match-n-match",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2017-08-14T07:41:32.464Z",
"marked":true,
"retriable_at":"2016-07-20T16:21:09.214Z"
},
{
"id":270808,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":1292967,
"project":{
"id":162,
"name":"Day 08",
"slug":"piscine-c-day-08",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-17T08:58:20.205Z",
"marked":true,
"retriable_at":"2016-07-17T08:58:20.183Z"
},
{
"id":269669,
"occurrence":0,
"final_mark":16,
"status":"finished",
"validated?":false,
"current_team_id":1291599,
"project":{
"id":161,
"name":"Day 07",
"slug":"piscine-c-day-07",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-15T21:45:38.366Z",
"marked":true,
"retriable_at":"2016-07-15T21:45:38.355Z"
},
{
"id":269341,
"occurrence":0,
"final_mark":70,
"status":"finished",
"validated?":true,
"current_team_id":1291266,
"project":{
"id":160,
"name":"Day 06",
"slug":"piscine-c-day-06",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-14T10:30:47.314Z",
"marked":true,
"retriable_at":"2016-07-14T10:30:47.290Z"
},
{
"id":267718,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1290709,
"project":{
"id":168,
"name":"Rush 00",
"slug":"piscine-c-rush-00",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2017-09-16T11:52:20.454Z",
"marked":true,
"retriable_at":"2016-07-13T14:39:17.628Z"
},
{
"id":268069,
"occurrence":0,
"final_mark":20,
"status":"finished",
"validated?":false,
"current_team_id":1289816,
"project":{
"id":159,
"name":"Day 05",
"slug":"piscine-c-day-05",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-23T03:10:40.577Z",
"marked":true,
"retriable_at":"2016-07-13T12:15:30.702Z"
},
{
"id":267717,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":1289561,
"project":{
"id":171,
"name":"Sastantua",
"slug":"piscine-c-sastantua",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2017-09-08T14:55:07.132Z",
"marked":true,
"retriable_at":"2016-07-15T20:15:17.665Z"
},
{
"id":264171,
"occurrence":0,
"final_mark":20,
"status":"finished",
"validated?":false,
"current_team_id":1286582,
"project":{
"id":158,
"name":"Day 04",
"slug":"piscine-c-day-04",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-08-06T10:07:36.923Z",
"marked":true,
"retriable_at":"2016-07-10T16:20:58.775Z"
},
{
"id":262516,
"occurrence":0,
"final_mark":65,
"status":"finished",
"validated?":true,
"current_team_id":1284884,
"project":{
"id":157,
"name":"Day 03",
"slug":"piscine-c-day-03",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2017-09-08T17:01:47.326Z",
"marked":true,
"retriable_at":"2016-07-10T16:01:36.514Z"
},
{
"id":262515,
"occurrence":0,
"final_mark":43,
"status":"finished",
"validated?":true,
"current_team_id":1284883,
"project":{
"id":156,
"name":"Day 02",
"slug":"piscine-c-day-02",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-23T02:18:25.281Z",
"marked":true,
"retriable_at":"2016-07-08T12:05:48.874Z"
},
{
"id":262513,
"occurrence":0,
"final_mark":85,
"status":"finished",
"validated?":true,
"current_team_id":1284881,
"project":{
"id":155,
"name":"Day 01",
"slug":"piscine-c-day-01",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-23T02:01:40.041Z",
"marked":true,
"retriable_at":"2016-07-07T15:16:58.180Z"
},
{
"id":260667,
"occurrence":0,
"final_mark":50,
"status":"finished",
"validated?":true,
"current_team_id":1283022,
"project":{
"id":154,
"name":"Day 00",
"slug":"piscine-c-day-00",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-23T01:43:53.891Z",
"marked":true,
"retriable_at":"2016-07-06T15:43:45.128Z"
},
{
"id":285242,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1307201,
"project":{
"id":203,
"name":"19",
"slug":"piscine-c-day-09-19",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:54.763Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:54.731Z"
},
{
"id":285237,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1307196,
"project":{
"id":202,
"name":"18",
"slug":"piscine-c-day-09-18",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:56.112Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:56.082Z"
},
{
"id":303695,
"occurrence":0,
"final_mark":94,
"status":"finished",
"validated?":true,
"current_team_id":1325689,
"project":{
"id":406,
"name":"Exam02",
"slug":"piscine-c-exam02",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-19T17:56:18.000Z",
"marked":true,
"retriable_at":"2017-06-26T21:47:08.881Z"
},
{
"id":311027,
"occurrence":0,
"final_mark":75,
"status":"finished",
"validated?":true,
"current_team_id":1332698,
"project":{
"id":407,
"name":"Exam Final",
"slug":"piscine-c-exam-final",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-26T08:05:04.000Z",
"marked":true,
"retriable_at":"2017-06-26T21:48:14.023Z"
},
{
"id":440462,
"occurrence":5,
"final_mark":79,
"status":"finished",
"validated?":true,
"current_team_id":1483734,
"project":{
"id":11,
"name":"C Exam Alone In The Dark - Beginner",
"slug":"c-exam-alone-in-the-dark-beginner",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2016-12-27T10:16:57.072Z",
"marked":true,
"retriable_at":"2016-12-27T10:16:31.371Z"
},
{
"id":443482,
"occurrence":0,
"final_mark":69,
"status":"finished",
"validated?":true,
"current_team_id":1479204,
"project":{
"id":791,
"name":"Piscine Ruby on Rails",
"slug":"piscine-ruby-on-rails",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2018-04-24T12:17:53.367Z",
"marked":true,
"retriable_at":"2018-04-24T12:17:53.320Z"
},
{
"id":647129,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1728636,
"project":{
"id":48,
"name":"Piscine PHP",
"slug":"piscine-php",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2017-10-30T09:57:31.242Z",
"marked":true,
"retriable_at":"2017-10-30T09:57:31.209Z"
},
{
"id":534508,
"occurrence":0,
"final_mark":123,
"status":"finished",
"validated?":true,
"current_team_id":1593193,
"project":{
"id":118,
"name":"First Internship",
"slug":"first-internship",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2018-04-17T08:39:55.877Z",
"marked":true,
"retriable_at":"2018-04-17T08:39:55.837Z"
},
{
"id":825428,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":1940692,
"project":{
"id":209,
"name":"Duration",
"slug":"final-internship-duration",
"parent_id":212
},
"cursus_ids":[
1
],
"marked_at":"2018-03-23T14:10:08.490Z",
"marked":true,
"retriable_at":null
},
{
"id":825427,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1940691,
"project":{
"id":208,
"name":"Contract Upload",
"slug":"final-internship-contract-upload",
"parent_id":212
},
"cursus_ids":[
1
],
"marked_at":"2018-03-23T14:10:08.050Z",
"marked":true,
"retriable_at":"2018-03-23T14:10:08.026Z"
},
{
"id":825429,
"occurrence":0,
"final_mark":118,
"status":"finished",
"validated?":true,
"current_team_id":1940693,
"project":{
"id":827,
"name":"Company mid evaluation",
"slug":"final-internship-company-mid-evaluation",
"parent_id":212
},
"cursus_ids":[
1
],
"marked_at":"2018-05-28T11:53:57.910Z",
"marked":true,
"retriable_at":null
},
{
"id":791493,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":1899477,
"project":{
"id":212,
"name":"Final Internship",
"slug":"final-internship",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2018-08-28T13:21:43.234Z",
"marked":true,
"retriable_at":"2018-08-28T13:21:46.074Z"
},
{
"id":825430,
"occurrence":0,
"final_mark":118,
"status":"finished",
"validated?":true,
"current_team_id":1940694,
"project":{
"id":210,
"name":"Company final evaluation",
"slug":"final-internship-company-final-evaluation",
"parent_id":212
},
"cursus_ids":[
1
],
"marked_at":"2018-08-24T11:33:09.862Z",
"marked":true,
"retriable_at":null
},
{
"id":265317,
"occurrence":0,
"final_mark":65,
"status":"finished",
"validated?":true,
"current_team_id":1287775,
"project":{
"id":404,
"name":"Exam00",
"slug":"piscine-c-exam00",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-08T16:49:32.159Z",
"marked":true,
"retriable_at":"2016-07-08T16:45:08.743Z"
},
{
"id":274412,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296663,
"project":{
"id":192,
"name":"08",
"slug":"piscine-c-day-09-08",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:58.680Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:58.641Z"
},
{
"id":274454,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296705,
"project":{
"id":197,
"name":"13",
"slug":"piscine-c-day-09-13",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:57.205Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:57.165Z"
},
{
"id":274444,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296695,
"project":{
"id":195,
"name":"11",
"slug":"piscine-c-day-09-11",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:57.881Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:57.850Z"
},
{
"id":274392,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296643,
"project":{
"id":186,
"name":"02",
"slug":"piscine-c-day-09-02",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:53:00.383Z",
"marked":true,
"retriable_at":"2017-09-01T17:53:00.352Z"
},
{
"id":274413,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296664,
"project":{
"id":193,
"name":"09",
"slug":"piscine-c-day-09-09",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:58.485Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:58.440Z"
},
{
"id":274386,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296637,
"project":{
"id":175,
"name":"00",
"slug":"piscine-c-day-09-00",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:53:00.782Z",
"marked":true,
"retriable_at":"2017-09-01T17:53:00.761Z"
},
{
"id":274462,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296713,
"project":{
"id":198,
"name":"14",
"slug":"piscine-c-day-09-14",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:56.948Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:56.905Z"
},
{
"id":274389,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296640,
"project":{
"id":185,
"name":"01",
"slug":"piscine-c-day-09-01",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:53:00.588Z",
"marked":true,
"retriable_at":"2017-09-01T17:53:00.552Z"
},
{
"id":274394,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296645,
"project":{
"id":187,
"name":"03",
"slug":"piscine-c-day-09-03",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:53:00.167Z",
"marked":true,
"retriable_at":"2017-09-01T17:53:00.126Z"
},
{
"id":274450,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296701,
"project":{
"id":196,
"name":"12",
"slug":"piscine-c-day-09-12",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:57.553Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:57.514Z"
},
{
"id":274467,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296718,
"project":{
"id":199,
"name":"15",
"slug":"piscine-c-day-09-15",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:56.634Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:56.585Z"
},
{
"id":274400,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296651,
"project":{
"id":189,
"name":"05",
"slug":"piscine-c-day-09-05",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:59.604Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:59.556Z"
},
{
"id":274407,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296658,
"project":{
"id":190,
"name":"06",
"slug":"piscine-c-day-09-06",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:59.346Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:59.315Z"
},
{
"id":274396,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296647,
"project":{
"id":188,
"name":"04",
"slug":"piscine-c-day-09-04",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:59.838Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:59.801Z"
},
{
"id":274492,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296743,
"project":{
"id":200,
"name":"16",
"slug":"piscine-c-day-09-16",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:56.375Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:56.351Z"
},
{
"id":274438,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296689,
"project":{
"id":194,
"name":"10",
"slug":"piscine-c-day-09-10",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:58.231Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:58.204Z"
},
{
"id":274409,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1296660,
"project":{
"id":191,
"name":"07",
"slug":"piscine-c-day-09-07",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:58.995Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:58.961Z"
},
{
"id":280347,
"occurrence":0,
"final_mark":88,
"status":"finished",
"validated?":true,
"current_team_id":1302465,
"project":{
"id":405,
"name":"Exam01",
"slug":"piscine-c-exam01",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-13T06:27:42.000Z",
"marked":true,
"retriable_at":"2017-06-26T21:47:33.246Z"
},
{
"id":285243,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1307202,
"project":{
"id":201,
"name":"17",
"slug":"piscine-c-day-09-17",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:54.464Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:54.425Z"
},
{
"id":285238,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1307197,
"project":{
"id":204,
"name":"20",
"slug":"piscine-c-day-09-20",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:55.852Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:55.827Z"
},
{
"id":285239,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1307198,
"project":{
"id":207,
"name":"23",
"slug":"piscine-c-day-09-23",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:55.665Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:55.617Z"
},
{
"id":272717,
"occurrence":0,
"final_mark":12,
"status":"finished",
"validated?":false,
"current_team_id":1294940,
"project":{
"id":167,
"name":"Day 09",
"slug":"piscine-c-day-09",
"parent_id":null
},
"cursus_ids":[
4
],
"marked_at":"2016-07-16T16:11:17.915Z",
"marked":true,
"retriable_at":"2016-07-16T16:11:17.892Z"
},
{
"id":285241,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1307200,
"project":{
"id":205,
"name":"21",
"slug":"piscine-c-day-09-21",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:55.020Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:54.999Z"
},
{
"id":285240,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":true,
"current_team_id":1307199,
"project":{
"id":206,
"name":"22",
"slug":"piscine-c-day-09-22",
"parent_id":167
},
"cursus_ids":[
4
],
"marked_at":"2017-09-01T17:52:55.260Z",
"marked":true,
"retriable_at":"2017-09-01T17:52:55.221Z"
},
{
"id":1681541,
"occurrence":0,
"final_mark":69,
"status":"finished",
"validated?":true,
"current_team_id":2954768,
"project":{
"id":1482,
"name":"Piscine Ruby on Rails",
"slug":"42cursus-piscine-ruby-on-rails",
"parent_id":null
},
"cursus_ids":[
21
],
"marked_at":"2018-04-24T12:17:53.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681528,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":2954755,
"project":{
"id":1402,
"name":"hypertube",
"slug":"42cursus-hypertube",
"parent_id":null
},
"cursus_ids":[
21
],
"marked_at":"2017-11-11T13:00:09.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681540,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":2954766,
"project":{
"id":1418,
"name":"dr-quine",
"slug":"42cursus-dr-quine",
"parent_id":null
},
"cursus_ids":[
21
],
"marked_at":"2017-09-25T09:06:43.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681553,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":2954780,
"project":{
"id":1646,
"name":"Internship II - Duration",
"slug":"internship-ii-internship-ii-duration",
"parent_id":1644
},
"cursus_ids":[
21
],
"marked_at":"2018-03-23T14:10:08.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681570,
"occurrence":0,
"final_mark":103,
"status":"finished",
"validated?":true,
"current_team_id":2954797,
"project":{
"id":1641,
"name":"internship I - Company Mid Evaluation",
"slug":"internship-i-internship-i-company-mid-evaluation",
"parent_id":1638
},
"cursus_ids":[
21
],
"marked_at":"2017-10-30T17:30:25.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681571,
"occurrence":0,
"final_mark":118,
"status":"finished",
"validated?":true,
"current_team_id":2954798,
"project":{
"id":1647,
"name":"Internship II - Company Mid Evaluation",
"slug":"internship-ii-internship-ii-company-mid-evaluation",
"parent_id":1644
},
"cursus_ids":[
21
],
"marked_at":"2018-05-28T11:53:57.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681555,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":2954782,
"project":{
"id":1608,
"name":"Day 00",
"slug":"42cursus-piscine-ruby-on-rails-day-00",
"parent_id":1482
},
"cursus_ids":[
21
],
"marked_at":"2017-09-02T13:20:20.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681535,
"occurrence":0,
"final_mark":123,
"status":"finished",
"validated?":true,
"current_team_id":2954762,
"project":{
"id":1638,
"name":"Internship I",
"slug":"internship-i",
"parent_id":null
},
"cursus_ids":[
21
],
"marked_at":"2018-04-17T08:39:55.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681534,
"occurrence":0,
"final_mark":118,
"status":"finished",
"validated?":true,
"current_team_id":2954760,
"project":{
"id":1401,
"name":"matcha",
"slug":"42cursus-matcha",
"parent_id":null
},
"cursus_ids":[
21
],
"marked_at":"2017-10-21T13:54:23.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681551,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":2954777,
"project":{
"id":1649,
"name":"Internship II - Peer Video",
"slug":"internship-ii-internship-ii-peer-video",
"parent_id":1644
},
"cursus_ids":[
21
],
"marked_at":"2018-08-28T13:21:42.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681552,
"occurrence":0,
"final_mark":118,
"status":"finished",
"validated?":true,
"current_team_id":2954778,
"project":{
"id":1648,
"name":"Internship II - Company Final Evaluation",
"slug":"internship-ii-internship-ii-company-final-evaluation",
"parent_id":1644
},
"cursus_ids":[
21
],
"marked_at":"2018-08-24T11:33:09.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1170756,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":2335272,
"project":{
"id":1190,
"name":"roger-skyline-1",
"slug":"roger-skyline-1",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2019-12-21T20:20:59.448Z",
"marked":true,
"retriable_at":"2019-12-24T20:20:59.475Z"
},
{
"id":1681531,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":2954757,
"project":{
"id":1644,
"name":"Internship II",
"slug":"internship-ii",
"parent_id":null
},
"cursus_ids":[
21
],
"marked_at":"2018-08-28T13:21:43.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681530,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":2954756,
"project":{
"id":1405,
"name":"darkly",
"slug":"42cursus-darkly",
"parent_id":null
},
"cursus_ids":[
21
],
"marked_at":"2017-11-28T18:03:50.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681543,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":2954770,
"project":{
"id":1645,
"name":"internship II - Contract Upload",
"slug":"internship-ii-internship-ii-contract-upload",
"parent_id":1644
},
"cursus_ids":[
21
],
"marked_at":"2018-03-23T14:10:08.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681545,
"occurrence":0,
"final_mark":125,
"status":"finished",
"validated?":true,
"current_team_id":2954771,
"project":{
"id":1639,
"name":"Internship I - Duration",
"slug":"internship-i-internship-i-duration",
"parent_id":1638
},
"cursus_ids":[
21
],
"marked_at":"2017-07-13T15:24:05.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681546,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":2954773,
"project":{
"id":1640,
"name":"internship I - Contract Upload",
"slug":"internship-i-internship-i-contract-upload",
"parent_id":1638
},
"cursus_ids":[
21
],
"marked_at":"2017-07-13T15:24:06.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681548,
"occurrence":0,
"final_mark":111,
"status":"finished",
"validated?":true,
"current_team_id":2954774,
"project":{
"id":1642,
"name":"internship I - Company Final Evaluation",
"slug":"internship-i-internship-i-company-final-evaluation",
"parent_id":1638
},
"cursus_ids":[
21
],
"marked_at":"2018-04-17T08:39:55.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681549,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":2954775,
"project":{
"id":1643,
"name":"Internship I - Peer Video",
"slug":"internship-i-internship-i-peer-video",
"parent_id":1638
},
"cursus_ids":[
21
],
"marked_at":"2018-01-10T11:55:46.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681558,
"occurrence":0,
"final_mark":54,
"status":"finished",
"validated?":true,
"current_team_id":2954784,
"project":{
"id":1610,
"name":"Day 02",
"slug":"42cursus-piscine-ruby-on-rails-day-02",
"parent_id":1482
},
"cursus_ids":[
21
],
"marked_at":"2017-09-02T13:20:48.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681559,
"occurrence":0,
"final_mark":57,
"status":"finished",
"validated?":true,
"current_team_id":2954786,
"project":{
"id":1611,
"name":"Day 03",
"slug":"42cursus-piscine-ruby-on-rails-day-03",
"parent_id":1482
},
"cursus_ids":[
21
],
"marked_at":"2017-09-02T13:21:15.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681560,
"occurrence":0,
"final_mark":52,
"status":"finished",
"validated?":true,
"current_team_id":2954787,
"project":{
"id":1612,
"name":"Day 04",
"slug":"42cursus-piscine-ruby-on-rails-day-04",
"parent_id":1482
},
"cursus_ids":[
21
],
"marked_at":"2017-09-02T13:21:45.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681562,
"occurrence":0,
"final_mark":67,
"status":"finished",
"validated?":false,
"current_team_id":2954788,
"project":{
"id":1618,
"name":"Rush 00",
"slug":"piscine-ruby-on-rails-rush-00",
"parent_id":791
},
"cursus_ids":[
21
],
"marked_at":"2016-12-12T11:14:22.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681563,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":2954790,
"project":{
"id":1613,
"name":"Day 05",
"slug":"42cursus-piscine-ruby-on-rails-day-05",
"parent_id":1482
},
"cursus_ids":[
21
],
"marked_at":"2017-01-23T15:45:59.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681565,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":2954791,
"project":{
"id":1614,
"name":"Day 06",
"slug":"42cursus-piscine-ruby-on-rails-day-06",
"parent_id":1482
},
"cursus_ids":[
21
],
"marked_at":"2017-09-02T13:22:49.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681566,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":2954793,
"project":{
"id":1615,
"name":"Day 07",
"slug":"42cursus-piscine-ruby-on-rails-day-07",
"parent_id":1482
},
"cursus_ids":[
21
],
"marked_at":"2016-12-19T08:51:44.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681567,
"occurrence":0,
"final_mark":60,
"status":"finished",
"validated?":true,
"current_team_id":2954794,
"project":{
"id":1616,
"name":"Day 08",
"slug":"42cursus-piscine-ruby-on-rails-day-08",
"parent_id":1482
},
"cursus_ids":[
21
],
"marked_at":"2016-12-18T10:28:33.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681568,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":2954795,
"project":{
"id":1617,
"name":"Day 09",
"slug":"42cursus-piscine-ruby-on-rails-day-09",
"parent_id":1482
},
"cursus_ids":[
21
],
"marked_at":"2016-12-19T08:51:36.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681569,
"occurrence":0,
"final_mark":0,
"status":"finished",
"validated?":false,
"current_team_id":2954796,
"project":{
"id":1619,
"name":"Rush 01",
"slug":"piscine-ruby-on-rails-rush-01",
"parent_id":791
},
"cursus_ids":[
21
],
"marked_at":"2018-04-24T12:17:53.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":1681556,
"occurrence":0,
"final_mark":79,
"status":"finished",
"validated?":true,
"current_team_id":2954783,
"project":{
"id":1609,
"name":"Day 01",
"slug":"42cursus-piscine-ruby-on-rails-day-01",
"parent_id":1482
},
"cursus_ids":[
21
],
"marked_at":"2017-04-14T12:09:05.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
},
{
"id":438788,
"occurrence":1,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":1472260,
"project":{
"id":96,
"name":"Savoir Relier",
"slug":"savoir-relier",
"parent_id":null
},
"cursus_ids":[
1
],
"marked_at":"2016-11-13T17:02:42.006Z",
"marked":true,
"retriable_at":"2016-11-13T17:02:40.889Z"
},
{
"id":1681532,
"occurrence":0,
"final_mark":100,
"status":"finished",
"validated?":true,
"current_team_id":2954759,
"project":{
"id":1396,
"name":"camagru",
"slug":"42cursus-camagru",
"parent_id":null
},
"cursus_ids":[
21
],
"marked_at":"2017-06-26T21:53:01.000Z",
"marked":true,
"retriable_at":"2019-12-19T23:00:00.000Z"
}
],
"languages_users":[
{
"id":131203,
"language_id":2,
"user_id":19265,
"position":1,
"created_at":"2018-10-19T11:21:57.397Z"
}
],
"achievements":[
{
"id":116,
"name":"1.21 Gigawatts ?!",
"description":"Participer au Time Capsule et se laisser un petit mot.",
"tier":"easy",
"kind":"social",
"visible":true,
"image":"/uploads/achievement/image/116/SOC014.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/116/users"
},
{
"id":40,
"name":"404 - Sleep not found",
"description":"Etre logué 24h de suite. (à bosser, ofc !)",
"tier":"easy",
"kind":"scolarity",
"visible":true,
"image":"/uploads/achievement/image/40/SCO001.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/40/users"
},
{
"id":41,
"name":"All work and no play makes Jack a dull boy",
"description":"Etre logué 90h sur une semaine. ",
"tier":"easy",
"kind":"scolarity",
"visible":true,
"image":"/uploads/achievement/image/41/SCO001.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/41/users"
},
{
"id":107,
"name":"And now my watch begins",
"description":"Rejoindre les tuteurs.",
"tier":"none",
"kind":"scolarity",
"visible":true,
"image":"/uploads/achievement/image/107/SCO0017.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/107/users"
},
{
"id":17,
"name":"Bonus Hunter",
"description":"Valider 1 projet avec la note maximum.",
"tier":"easy",
"kind":"project",
"visible":false,
"image":"/uploads/achievement/image/17/PRO005.svg",
"nbr_of_success":1,
"users_url":"https://api.intra.42.fr/v2/achievements/17/users"
},
{
"id":18,
"name":"Bonus Hunter",
"description":"Valider 3 projets avec la note maximum.",
"tier":"medium",
"kind":"project",
"visible":false,
"image":"/uploads/achievement/image/18/PRO005.svg",
"nbr_of_success":3,
"users_url":"https://api.intra.42.fr/v2/achievements/18/users"
},
{
"id":114,
"name":"Business Angel",
"description":"Valider un partenariat.",
"tier":"none",
"kind":"project",
"visible":true,
"image":"/uploads/achievement/image/114/PRO014.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/114/users"
},
{
"id":4,
"name":"Code Explorer",
"description":"Valider son premier projet.",
"tier":"none",
"kind":"project",
"visible":true,
"image":"/uploads/achievement/image/4/PRO002.svg",
"nbr_of_success":1,
"users_url":"https://api.intra.42.fr/v2/achievements/4/users"
},
{
"id":5,
"name":"Code Explorer",
"description":"Valider 3 projets.",
"tier":"none",
"kind":"project",
"visible":true,
"image":"/uploads/achievement/image/5/PRO002.svg",
"nbr_of_success":3,
"users_url":"https://api.intra.42.fr/v2/achievements/5/users"
},
{
"id":6,
"name":"Code Explorer",
"description":"Valider 10 projets.",
"tier":"none",
"kind":"project",
"visible":true,
"image":"/uploads/achievement/image/6/PRO002.svg",
"nbr_of_success":10,
"users_url":"https://api.intra.42.fr/v2/achievements/6/users"
},
{
"id":7,
"name":"Code Explorer",
"description":"Valider 21 projets.",
"tier":"none",
"kind":"project",
"visible":true,
"image":"/uploads/achievement/image/7/PRO002.svg",
"nbr_of_success":21,
"users_url":"https://api.intra.42.fr/v2/achievements/7/users"
},
{
"id":65,
"name":"Come to the dark side, we have cookies",
"description":"Devenir bocalien.",
"tier":"none",
"kind":"scolarity",
"visible":true,
"image":"/uploads/achievement/image/65/SCO010.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/65/users"
},
{
"id":44,
"name":"Curious wanderer",
"description":"S'être logué une fois dans chaque cluster.",
"tier":"none",
"kind":"scolarity",
"visible":false,
"image":"/uploads/achievement/image/44/SCO002.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/44/users"
},
{
"id":46,
"name":"Film buff",
"description":"Regarder 1 video sur l'e-learning.",
"tier":"none",
"kind":"pedagogy",
"visible":false,
"image":"/uploads/achievement/image/46/PED005.svg",
"nbr_of_success":1,
"users_url":"https://api.intra.42.fr/v2/achievements/46/users"
},
{
"id":47,
"name":"Film buff",
"description":"Regarder 3 videos sur l'e-learning.",
"tier":"none",
"kind":"pedagogy",
"visible":false,
"image":"/uploads/achievement/image/47/PED005.svg",
"nbr_of_success":3,
"users_url":"https://api.intra.42.fr/v2/achievements/47/users"
},
{
"id":45,
"name":"Home is where the code is",
"description":"S'être logué dans le même cluster un mois de suite.",
"tier":"none",
"kind":"scolarity",
"visible":true,
"image":"/uploads/achievement/image/45/SCO002.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/45/users"
},
{
"id":103,
"name":"I am the watcher on the walls",
"description":"Surveiller 1 examen en tant que tuteur.",
"tier":"none",
"kind":"scolarity",
"visible":true,
"image":"/uploads/achievement/image/103/SCO0016.svg",
"nbr_of_success":1,
"users_url":"https://api.intra.42.fr/v2/achievements/103/users"
},
{
"id":31,
"name":"I found the answer",
"description":"Valider le level 21 et être prêt à affronter le monde extérieur !",
"tier":"none",
"kind":"pedagogy",
"visible":true,
"image":"/uploads/achievement/image/31/PED003.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/31/users"
},
{
"id":82,
"name":"I have no idea what I'm doing",
"description":"Faire une soutenance sans avoir validé le projet.",
"tier":"none",
"kind":"pedagogy",
"visible":true,
"image":"/uploads/achievement/image/82/PED011.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/82/users"
},
{
"id":109,
"name":"I’ll make him an offer he can’t refuse",
"description":"Participer au programme de parrainage en tant que parrain.",
"tier":"none",
"kind":"pedagogy",
"visible":true,
"image":"/uploads/achievement/image/109/PED014.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/109/users"
},
{
"id":84,
"name":"I'm reliable !",
"description":"Participer à 21 soutenances d'affilée sans en manquer aucune.",
"tier":"easy",
"kind":"pedagogy",
"visible":true,
"image":"/uploads/achievement/image/84/PED009.svg",
"nbr_of_success":21,
"users_url":"https://api.intra.42.fr/v2/achievements/84/users"
},
{
"id":87,
"name":"I post, therefore I am",
"description":"Poster 1 message sur le forum.",
"tier":"none",
"kind":"social",
"visible":false,
"image":"/uploads/achievement/image/87/SOC005.svg",
"nbr_of_success":1,
"users_url":"https://api.intra.42.fr/v2/achievements/87/users"
},
{
"id":36,
"name":"It's a rich man's world",
"description":"Avoir 100 points de wallet.",
"tier":"none",
"kind":"social",
"visible":true,
"image":"/uploads/achievement/image/36/SOC004.svg",
"nbr_of_success":100,
"users_url":"https://api.intra.42.fr/v2/achievements/36/users"
},
{
"id":37,
"name":"It's a rich man's world",
"description":"Avoir 200 points de wallet.",
"tier":"none",
"kind":"social",
"visible":true,
"image":"/uploads/achievement/image/37/SOC004.svg",
"nbr_of_success":200,
"users_url":"https://api.intra.42.fr/v2/achievements/37/users"
},
{
"id":155,
"name":"Je voudrais un croissant",
"description":"Visiter le campus de Paris",
"tier":"none",
"kind":"scolarity",
"visible":true,
"image":"/uploads/achievement/image/155/BADGE_SCOLARITY_paris.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/155/users"
},
{
"id":88,
"name":"Love me, I'm famous",
"description":"Avoir été upvoté 1 fois sur le forum.",
"tier":"none",
"kind":"social",
"visible":true,
"image":"/uploads/achievement/image/88/SOC006.svg",
"nbr_of_success":1,
"users_url":"https://api.intra.42.fr/v2/achievements/88/users"
},
{
"id":94,
"name":"Love me, I'm famous",
"description":"Avoir été upvoté 10 fois sur le forum.",
"tier":"none",
"kind":"social",
"visible":true,
"image":"/uploads/achievement/image/94/SOC006.svg",
"nbr_of_success":10,
"users_url":"https://api.intra.42.fr/v2/achievements/94/users"
},
{
"id":95,
"name":"Love me, I'm famous",
"description":"Avoir été upvoté 42 fois sur le forum. Ne seront comptés que 25 upvotes par personne au maximum.",
"tier":"none",
"kind":"social",
"visible":false,
"image":"/uploads/achievement/image/95/SOC006.svg",
"nbr_of_success":42,
"users_url":"https://api.intra.42.fr/v2/achievements/95/users"
},
{
"id":25,
"name":"Rigorous Basterd",
"description":"Valider 3 projets d'affilée (journées de piscines comprises).",
"tier":"none",
"kind":"project",
"visible":true,
"image":"/uploads/achievement/image/25/PRO010.svg",
"nbr_of_success":3,
"users_url":"https://api.intra.42.fr/v2/achievements/25/users"
},
{
"id":26,
"name":"Rigorous Basterd",
"description":"Valider 10 projets d'affilée (journées de piscines comprises).",
"tier":"easy",
"kind":"project",
"visible":true,
"image":"/uploads/achievement/image/26/PRO010.svg",
"nbr_of_success":10,
"users_url":"https://api.intra.42.fr/v2/achievements/26/users"
},
{
"id":27,
"name":"Rigorous Basterd",
"description":"Valider 21 projets d'affilée (journées de piscines comprises).",
"tier":"medium",
"kind":"project",
"visible":true,
"image":"/uploads/achievement/image/27/PRO010.svg",
"nbr_of_success":21,
"users_url":"https://api.intra.42.fr/v2/achievements/27/users"
},
{
"id":28,
"name":"Rigorous Basterd",
"description":"Valider 42 projets d'affilée (journées de piscines comprises).",
"tier":"hard",
"kind":"project",
"visible":true,
"image":"/uploads/achievement/image/28/PRO010.svg",
"nbr_of_success":42,
"users_url":"https://api.intra.42.fr/v2/achievements/28/users"
},
{
"id":39,
"name":"Sleep is for the weak",
"description":"Obtenir les achievements \"404 - Sleep not found\" et \"In the name of Nicolas !\"",
"tier":"none",
"kind":"scolarity",
"visible":true,
"image":"/uploads/achievement/image/39/SCO001.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/39/users"
},
{
"id":115,
"name":"Venture Capitalist",
"description":"Valider un partenariat avec la note 125.",
"tier":"none",
"kind":"project",
"visible":true,
"image":"/uploads/achievement/image/115/PRO016.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/115/users"
},
{
"id":1,
"name":"Welcome, Cadet !",
"description":"Tu as réussi ta piscine C. Bienvenue à 42 !",
"tier":"none",
"kind":"project",
"visible":true,
"image":"/uploads/achievement/image/1/PRO001.svg",
"nbr_of_success":null,
"users_url":"https://api.intra.42.fr/v2/achievements/1/users"
}
],
"titles":[
{
"id":12,
"name":"Altruist %login"
},
{
"id":42,
"name":"Venture Capitalist %login"
},
{
"id":82,
"name":"[DEPRECATED] %login"
}
],
"titles_users":[
{
"id":499,
"user_id":19265,
"title_id":12,
"selected":false
},
{
"id":1178,
"user_id":19265,
"title_id":42,
"selected":false
},
{
"id":3571,
"user_id":19265,
"title_id":82,
"selected":false
}
],
"partnerships":[
{
"id":366,
"name":"42cursus - [bocal] Développement web 6 mois",
"slug":"42cursus-bocal-developpement-web-6-mois",
"difficulty":42000,
"url":"https://api.intra.42.fr/v2/partnerships/42cursus-bocal-developpement-web-6-mois",
"partnerships_users_url":"https://api.intra.42.fr/v2/partnerships/42cursus-bocal-developpement-web-6-mois/partnerships_users",
"partnerships_skills":[
{
"id":850,
"partnership_id":366,
"skill_id":7,
"value":4200.0,
"created_at":"2019-12-20T11:33:20.393Z",
"updated_at":"2019-12-20T11:33:20.393Z"
},
{
"id":849,
"partnership_id":366,
"skill_id":6,
"value":18900.0,
"created_at":"2019-12-20T11:33:20.391Z",
"updated_at":"2019-12-20T11:33:20.391Z"
},
{
"id":848,
"partnership_id":366,
"skill_id":16,
"value":10500.0,
"created_at":"2019-12-20T11:33:20.389Z",
"updated_at":"2019-12-20T11:33:20.389Z"
},
{
"id":847,
"partnership_id":366,
"skill_id":12,
"value":8400.0,
"created_at":"2019-12-20T11:33:20.387Z",
"updated_at":"2019-12-20T11:33:20.387Z"
}
]
},
{
"id":45,
"name":"[bocal] Développement web 6 mois",
"slug":"bocal-developpement-web-6-mois",
"difficulty":1000,
"url":"https://api.intra.42.fr/v2/partnerships/bocal-developpement-web-6-mois",
"partnerships_users_url":"https://api.intra.42.fr/v2/partnerships/bocal-developpement-web-6-mois/partnerships_users",
"partnerships_skills":[
{
"id":106,
"partnership_id":45,
"skill_id":12,
"value":200.0,
"created_at":"2016-02-25T13:55:06.254Z",
"updated_at":"2016-02-25T13:55:06.254Z"
},
{
"id":107,
"partnership_id":45,
"skill_id":16,
"value":250.0,
"created_at":"2016-02-25T13:55:06.264Z",
"updated_at":"2016-02-25T13:55:06.264Z"
},
{
"id":108,
"partnership_id":45,
"skill_id":6,
"value":450.0,
"created_at":"2016-02-25T13:55:06.272Z",
"updated_at":"2016-02-25T13:55:06.272Z"
},
{
"id":109,
"partnership_id":45,
"skill_id":7,
"value":100.0,
"created_at":"2016-02-25T13:55:06.280Z",
"updated_at":"2016-02-25T13:55:06.280Z"
}
]
}
],
"patroned":[
],
"patroning":[
{
"id":641,
"user_id":26286,
"godfather_id":19265,
"ongoing":true,
"created_at":"2017-11-08T12:09:36.343Z",
"updated_at":"2020-10-28T06:11:33.003Z"
},
{
"id":746,
"user_id":26384,
"godfather_id":19265,
"ongoing":true,
"created_at":"2017-11-08T17:21:54.330Z",
"updated_at":"2020-10-28T06:11:33.549Z"
},
{
"id":640,
"user_id":27119,
"godfather_id":19265,
"ongoing":true,
"created_at":"2017-11-08T12:09:36.143Z",
"updated_at":"2020-10-28T06:11:33.181Z"
},
{
"id":642,
"user_id":28830,
"godfather_id":19265,
"ongoing":true,
"created_at":"2017-11-08T12:09:36.523Z",
"updated_at":"2020-10-28T06:11:33.212Z"
}
],
"expertises_users":[
{
"id":22552,
"expertise_id":30,
"interested":false,
"value":3,
"contact_me":false,
"created_at":"2018-07-22T11:49:26.596Z",
"user_id":19265
},
{
"id":19215,
"expertise_id":26,
"interested":false,
"value":3,
"contact_me":false,
"created_at":"2018-02-22T14:48:07.598Z",
"user_id":19265
},
{
"id":19213,
"expertise_id":12,
"interested":false,
"value":4,
"contact_me":false,
"created_at":"2018-02-22T10:32:13.223Z",
"user_id":19265
},
{
"id":19212,
"expertise_id":13,
"interested":false,
"value":3,
"contact_me":false,
"created_at":"2018-02-22T10:31:42.703Z",
"user_id":19265
},
{
"id":19211,
"expertise_id":15,
"interested":false,
"value":2,
"contact_me":false,
"created_at":"2018-02-22T10:31:16.196Z",
"user_id":19265
},
{
"id":19210,
"expertise_id":33,
"interested":false,
"value":4,
"contact_me":false,
"created_at":"2018-02-22T10:31:02.503Z",
"user_id":19265
},
{
"id":19209,
"expertise_id":31,
"interested":false,
"value":5,
"contact_me":false,
"created_at":"2018-02-22T10:30:56.816Z",
"user_id":19265
}
],
"roles":[
],
"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":"2021-04-14T12:59:04.679Z"
},
"users_count":21241,
"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,
"email_extension":"42.fr",
"default_hidden_phone":false
}
],
"campus_users":[
{
"id":8379,
"user_id":19265,
"campus_id":1,
"is_primary":true
}
]
}
}
}
The MIT License (MIT)
Copyright (c) 2015 Samy KACIMI
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.